@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CookieHelper.class-FTURFpz3.js","sources":["../src/user/util/CookieConstants.ts","../node_modules/universal-cookie/esm/index.mjs","../src/user/util/CookieHelper.class.ts"],"sourcesContent":["export const BEARER_TOKEN_COOKIE = 'ContensisSecurityBearerToken';\nexport const LOGIN_COOKIE = 'ContensisCMSUserName';\nexport const REFRESH_TOKEN_COOKIE = 'RefreshToken';\n\nexport type CookieObject = { [name: string]: any };\n\nexport const findLoginCookies = (cookies: CookieObject | string) =>\n typeof cookies === 'object'\n ? Object.fromEntries(\n Object.entries(cookies).filter(([name]) =>\n [LOGIN_COOKIE, REFRESH_TOKEN_COOKIE].includes(name)\n )\n )\n : cookies;\n","var dist = {};\n\nvar hasRequiredDist;\n\nfunction requireDist () {\n\tif (hasRequiredDist) return dist;\n\thasRequiredDist = 1;\n\tObject.defineProperty(dist, \"__esModule\", { value: true });\n\tdist.parse = parse;\n\tdist.serialize = serialize;\n\t/**\n\t * RegExp to match cookie-name in RFC 6265 sec 4.1.1\n\t * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2\n\t * which has been replaced by the token definition in RFC 7230 appendix B.\n\t *\n\t * cookie-name = token\n\t * token = 1*tchar\n\t * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" /\n\t * \"*\" / \"+\" / \"-\" / \".\" / \"^\" / \"_\" /\n\t * \"`\" / \"|\" / \"~\" / DIGIT / ALPHA\n\t *\n\t * Note: Allowing more characters - https://github.com/jshttp/cookie/issues/191\n\t * Allow same range as cookie value, except `=`, which delimits end of name.\n\t */\n\tconst cookieNameRegExp = /^[\\u0021-\\u003A\\u003C\\u003E-\\u007E]+$/;\n\t/**\n\t * RegExp to match cookie-value in RFC 6265 sec 4.1.1\n\t *\n\t * cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n\t * cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n\t * ; US-ASCII characters excluding CTLs,\n\t * ; whitespace DQUOTE, comma, semicolon,\n\t * ; and backslash\n\t *\n\t * Allowing more characters: https://github.com/jshttp/cookie/issues/191\n\t * Comma, backslash, and DQUOTE are not part of the parsing algorithm.\n\t */\n\tconst cookieValueRegExp = /^[\\u0021-\\u003A\\u003C-\\u007E]*$/;\n\t/**\n\t * RegExp to match domain-value in RFC 6265 sec 4.1.1\n\t *\n\t * domain-value = <subdomain>\n\t * ; defined in [RFC1034], Section 3.5, as\n\t * ; enhanced by [RFC1123], Section 2.1\n\t * <subdomain> = <label> | <subdomain> \".\" <label>\n\t * <label> = <let-dig> [ [ <ldh-str> ] <let-dig> ]\n\t * Labels must be 63 characters or less.\n\t * 'let-dig' not 'letter' in the first char, per RFC1123\n\t * <ldh-str> = <let-dig-hyp> | <let-dig-hyp> <ldh-str>\n\t * <let-dig-hyp> = <let-dig> | \"-\"\n\t * <let-dig> = <letter> | <digit>\n\t * <letter> = any one of the 52 alphabetic characters A through Z in\n\t * upper case and a through z in lower case\n\t * <digit> = any one of the ten digits 0 through 9\n\t *\n\t * Keep support for leading dot: https://github.com/jshttp/cookie/issues/173\n\t *\n\t * > (Note that a leading %x2E (\".\"), if present, is ignored even though that\n\t * character is not permitted, but a trailing %x2E (\".\"), if present, will\n\t * cause the user agent to ignore the attribute.)\n\t */\n\tconst domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;\n\t/**\n\t * RegExp to match path-value in RFC 6265 sec 4.1.1\n\t *\n\t * path-value = <any CHAR except CTLs or \";\">\n\t * CHAR = %x01-7F\n\t * ; defined in RFC 5234 appendix B.1\n\t */\n\tconst pathValueRegExp = /^[\\u0020-\\u003A\\u003D-\\u007E]*$/;\n\tconst __toString = Object.prototype.toString;\n\tconst NullObject = /* @__PURE__ */ (() => {\n\t const C = function () { };\n\t C.prototype = Object.create(null);\n\t return C;\n\t})();\n\t/**\n\t * Parse a cookie header.\n\t *\n\t * Parse the given cookie header string into an object\n\t * The object has the various cookies as keys(names) => values\n\t */\n\tfunction parse(str, options) {\n\t const obj = new NullObject();\n\t const len = str.length;\n\t // RFC 6265 sec 4.1.1, RFC 2616 2.2 defines a cookie name consists of one char minimum, plus '='.\n\t if (len < 2)\n\t return obj;\n\t const dec = options?.decode || decode;\n\t let index = 0;\n\t do {\n\t const eqIdx = str.indexOf(\"=\", index);\n\t if (eqIdx === -1)\n\t break; // No more cookie pairs.\n\t const colonIdx = str.indexOf(\";\", index);\n\t const endIdx = colonIdx === -1 ? len : colonIdx;\n\t if (eqIdx > endIdx) {\n\t // backtrack on prior semicolon\n\t index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n\t continue;\n\t }\n\t const keyStartIdx = startIndex(str, index, eqIdx);\n\t const keyEndIdx = endIndex(str, eqIdx, keyStartIdx);\n\t const key = str.slice(keyStartIdx, keyEndIdx);\n\t // only assign once\n\t if (obj[key] === undefined) {\n\t let valStartIdx = startIndex(str, eqIdx + 1, endIdx);\n\t let valEndIdx = endIndex(str, endIdx, valStartIdx);\n\t const value = dec(str.slice(valStartIdx, valEndIdx));\n\t obj[key] = value;\n\t }\n\t index = endIdx + 1;\n\t } while (index < len);\n\t return obj;\n\t}\n\tfunction startIndex(str, index, max) {\n\t do {\n\t const code = str.charCodeAt(index);\n\t if (code !== 0x20 /* */ && code !== 0x09 /* \\t */)\n\t return index;\n\t } while (++index < max);\n\t return max;\n\t}\n\tfunction endIndex(str, index, min) {\n\t while (index > min) {\n\t const code = str.charCodeAt(--index);\n\t if (code !== 0x20 /* */ && code !== 0x09 /* \\t */)\n\t return index + 1;\n\t }\n\t return min;\n\t}\n\t/**\n\t * Serialize data into a cookie header.\n\t *\n\t * Serialize a name value pair into a cookie string suitable for\n\t * http headers. An optional options object specifies cookie parameters.\n\t *\n\t * serialize('foo', 'bar', { httpOnly: true })\n\t * => \"foo=bar; httpOnly\"\n\t */\n\tfunction serialize(name, val, options) {\n\t const enc = options?.encode || encodeURIComponent;\n\t if (!cookieNameRegExp.test(name)) {\n\t throw new TypeError(`argument name is invalid: ${name}`);\n\t }\n\t const value = enc(val);\n\t if (!cookieValueRegExp.test(value)) {\n\t throw new TypeError(`argument val is invalid: ${val}`);\n\t }\n\t let str = name + \"=\" + value;\n\t if (!options)\n\t return str;\n\t if (options.maxAge !== undefined) {\n\t if (!Number.isInteger(options.maxAge)) {\n\t throw new TypeError(`option maxAge is invalid: ${options.maxAge}`);\n\t }\n\t str += \"; Max-Age=\" + options.maxAge;\n\t }\n\t if (options.domain) {\n\t if (!domainValueRegExp.test(options.domain)) {\n\t throw new TypeError(`option domain is invalid: ${options.domain}`);\n\t }\n\t str += \"; Domain=\" + options.domain;\n\t }\n\t if (options.path) {\n\t if (!pathValueRegExp.test(options.path)) {\n\t throw new TypeError(`option path is invalid: ${options.path}`);\n\t }\n\t str += \"; Path=\" + options.path;\n\t }\n\t if (options.expires) {\n\t if (!isDate(options.expires) ||\n\t !Number.isFinite(options.expires.valueOf())) {\n\t throw new TypeError(`option expires is invalid: ${options.expires}`);\n\t }\n\t str += \"; Expires=\" + options.expires.toUTCString();\n\t }\n\t if (options.httpOnly) {\n\t str += \"; HttpOnly\";\n\t }\n\t if (options.secure) {\n\t str += \"; Secure\";\n\t }\n\t if (options.partitioned) {\n\t str += \"; Partitioned\";\n\t }\n\t if (options.priority) {\n\t const priority = typeof options.priority === \"string\"\n\t ? options.priority.toLowerCase()\n\t : undefined;\n\t switch (priority) {\n\t case \"low\":\n\t str += \"; Priority=Low\";\n\t break;\n\t case \"medium\":\n\t str += \"; Priority=Medium\";\n\t break;\n\t case \"high\":\n\t str += \"; Priority=High\";\n\t break;\n\t default:\n\t throw new TypeError(`option priority is invalid: ${options.priority}`);\n\t }\n\t }\n\t if (options.sameSite) {\n\t const sameSite = typeof options.sameSite === \"string\"\n\t ? options.sameSite.toLowerCase()\n\t : options.sameSite;\n\t switch (sameSite) {\n\t case true:\n\t case \"strict\":\n\t str += \"; SameSite=Strict\";\n\t break;\n\t case \"lax\":\n\t str += \"; SameSite=Lax\";\n\t break;\n\t case \"none\":\n\t str += \"; SameSite=None\";\n\t break;\n\t default:\n\t throw new TypeError(`option sameSite is invalid: ${options.sameSite}`);\n\t }\n\t }\n\t return str;\n\t}\n\t/**\n\t * URL-decode string value. Optimized to skip native call when no %.\n\t */\n\tfunction decode(str) {\n\t if (str.indexOf(\"%\") === -1)\n\t return str;\n\t try {\n\t return decodeURIComponent(str);\n\t }\n\t catch (e) {\n\t return str;\n\t }\n\t}\n\t/**\n\t * Determine if value is a Date.\n\t */\n\tfunction isDate(val) {\n\t return __toString.call(val) === \"[object Date]\";\n\t}\n\t\n\treturn dist;\n}\n\nvar distExports = requireDist();\n\nfunction hasDocumentCookie() {\n const testingValue = typeof global === 'undefined'\n ? undefined\n : global.TEST_HAS_DOCUMENT_COOKIE;\n if (typeof testingValue === 'boolean') {\n return testingValue;\n }\n // Can we get/set cookies on document.cookie?\n return typeof document === 'object' && typeof document.cookie === 'string';\n}\nfunction parseCookies(cookies) {\n if (typeof cookies === 'string') {\n return distExports.parse(cookies);\n }\n else if (typeof cookies === 'object' && cookies !== null) {\n return cookies;\n }\n else {\n return {};\n }\n}\nfunction readCookie(value, options = {}) {\n const cleanValue = cleanupCookieValue(value);\n if (!options.doNotParse) {\n try {\n return JSON.parse(cleanValue);\n }\n catch (e) {\n // At least we tried\n }\n }\n // Ignore clean value if we failed the deserialization\n // It is not relevant anymore to trim those values\n return value;\n}\nfunction cleanupCookieValue(value) {\n // express prepend j: before serializing a cookie\n if (value && value[0] === 'j' && value[1] === ':') {\n return value.substr(2);\n }\n return value;\n}\n\nclass Cookies {\n constructor(cookies, defaultSetOptions = {}) {\n this.changeListeners = [];\n this.HAS_DOCUMENT_COOKIE = false;\n this.update = () => {\n if (!this.HAS_DOCUMENT_COOKIE) {\n return;\n }\n const previousCookies = this.cookies;\n this.cookies = distExports.parse(document.cookie);\n this._checkChanges(previousCookies);\n };\n const domCookies = typeof document === 'undefined' ? '' : document.cookie;\n this.cookies = parseCookies(cookies || domCookies);\n this.defaultSetOptions = defaultSetOptions;\n this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\n }\n _emitChange(params) {\n for (let i = 0; i < this.changeListeners.length; ++i) {\n this.changeListeners[i](params);\n }\n }\n _checkChanges(previousCookies) {\n const names = new Set(Object.keys(previousCookies).concat(Object.keys(this.cookies)));\n names.forEach((name) => {\n if (previousCookies[name] !== this.cookies[name]) {\n this._emitChange({\n name,\n value: readCookie(this.cookies[name]),\n });\n }\n });\n }\n _startPolling() {\n this.pollingInterval = setInterval(this.update, 300);\n }\n _stopPolling() {\n if (this.pollingInterval) {\n clearInterval(this.pollingInterval);\n }\n }\n get(name, options = {}) {\n if (!options.doNotUpdate) {\n this.update();\n }\n return readCookie(this.cookies[name], options);\n }\n getAll(options = {}) {\n if (!options.doNotUpdate) {\n this.update();\n }\n const result = {};\n for (let name in this.cookies) {\n result[name] = readCookie(this.cookies[name], options);\n }\n return result;\n }\n set(name, value, options) {\n if (options) {\n options = Object.assign(Object.assign({}, this.defaultSetOptions), options);\n }\n else {\n options = this.defaultSetOptions;\n }\n const stringValue = typeof value === 'string' ? value : JSON.stringify(value);\n this.cookies = Object.assign(Object.assign({}, this.cookies), { [name]: stringValue });\n if (this.HAS_DOCUMENT_COOKIE) {\n document.cookie = distExports.serialize(name, stringValue, options);\n }\n this._emitChange({ name, value, options });\n }\n remove(name, options) {\n const finalOptions = (options = Object.assign(Object.assign(Object.assign({}, this.defaultSetOptions), options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\n this.cookies = Object.assign({}, this.cookies);\n delete this.cookies[name];\n if (this.HAS_DOCUMENT_COOKIE) {\n document.cookie = distExports.serialize(name, '', finalOptions);\n }\n this._emitChange({ name, value: undefined, options });\n }\n addChangeListener(callback) {\n this.changeListeners.push(callback);\n if (this.HAS_DOCUMENT_COOKIE && this.changeListeners.length === 1) {\n if (typeof window === 'object' && 'cookieStore' in window) {\n window.cookieStore.addEventListener('change', this.update);\n }\n else {\n this._startPolling();\n }\n }\n }\n removeChangeListener(callback) {\n const idx = this.changeListeners.indexOf(callback);\n if (idx >= 0) {\n this.changeListeners.splice(idx, 1);\n }\n if (this.HAS_DOCUMENT_COOKIE && this.changeListeners.length === 0) {\n if (typeof window === 'object' && 'cookieStore' in window) {\n window.cookieStore.removeEventListener('change', this.update);\n }\n else {\n this._stopPolling();\n }\n }\n }\n removeAllChangeListeners() {\n while (this.changeListeners.length > 0) {\n this.removeChangeListener(this.changeListeners[0]);\n }\n }\n}\n\nexport { Cookies as default };\n","import { useCookies } from 'react-cookie';\nimport FallbackCookies from 'universal-cookie';\n\nconst COOKIE_VALID_DAYS = 1; // 0 = Session cookie\n\ntype CookieHook = ReturnType<typeof useCookies>;\ntype Cookies = { [k: string]: string };\ntype SetCookie = CookieHook[1];\ntype RemoveCookie = CookieHook[2];\ntype UpdateCookie = CookieHook[3];\n\n// CookieHelper is a class that takes in and lets us pass around the methods provided\n// by `useCookie` react hook in backend code that is connected to the universal-cookies\n// instance created in SSR middleware (and provides browser cookies)\nexport class CookieHelper {\n private cookies: Cookies;\n private set?: SetCookie;\n private remove?: RemoveCookie;\n private update?: UpdateCookie;\n private fallback!: FallbackCookies;\n\n get raw() {\n return this.cookies;\n }\n\n get cookie(): FallbackCookies {\n return (this.set ? this : this.fallback) as FallbackCookies;\n }\n\n constructor(\n cookies?: { [k: string]: string },\n setCookie?: CookieHelper['set'],\n removeCookie?: CookieHelper['remove'],\n updateCookies?: CookieHelper['update']\n ) {\n // Add fallback methods if global cookies not supplied\n if (!cookies || !setCookie || !removeCookie)\n this.fallback = new FallbackCookies();\n\n this.cookies = cookies || this.fallback.getAll();\n if (setCookie) this.set = setCookie;\n if (removeCookie) this.remove = removeCookie;\n if (updateCookies) this.update = updateCookies;\n }\n\n GetCookie(name: string) {\n const cookie = this.cookies[name];\n if (typeof cookie === 'undefined') {\n return null;\n }\n return cookie;\n }\n\n SetCookie(name: string, value: string, maxAgeDays = COOKIE_VALID_DAYS) {\n // update local cookies object as this is provided as a clone of `req.universalCookies`\n this.cookies[name] = value;\n\n // call the passed setCookie method so we can update the `universal-cookie` instance\n // with the change listener attached so the cookies can be set in SSR response\n if (maxAgeDays === 0) this.cookie.set(name, value);\n else\n this.cookie.set(name, value, {\n expires: addDays(new Date(), maxAgeDays),\n path: '/',\n });\n }\n\n DeleteCookie(name: string) {\n // update local cookies object as this is provided as a clone of `req.universalCookies`\n delete this.cookies[name];\n\n this.cookie.remove(name, {\n path: '/',\n });\n }\n}\nconst addDays = (date = new Date(), days: number) => {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n};\n\nexport const mapCookieHeader = cookies =>\n typeof cookies === 'object'\n ? Object.entries(cookies)\n .map(([name, value]) => `${name}=${value}`)\n .join('; ')\n : cookies;\n"],"names":["BEARER_TOKEN_COOKIE","LOGIN_COOKIE","REFRESH_TOKEN_COOKIE","findLoginCookies","cookies","Object","fromEntries","entries","filter","name","includes","COOKIE_VALID_DAYS","CookieHelper","raw","cookie","set","fallback","constructor","setCookie","removeCookie","updateCookies","FallbackCookies","getAll","remove","update","GetCookie","SetCookie","value","maxAgeDays","expires","addDays","Date","path","DeleteCookie","date","days","result","setDate","getDate"],"mappings":"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","x_google_ignoreList":[1]}
@@ -1,10 +1,10 @@
1
- import React, { useContext, createContext, cloneElement, useCallback, useEffect } from 'react';
2
- import { useCookies } from 'react-cookie';
1
+ import React, { useContext, createContext, useCallback, useEffect, cloneElement } from 'react';
3
2
  import { connect } from 'react-redux';
4
3
  import { Navigate, useRoutes, useLocation, matchRoutes } from 'react-router-dom';
5
4
  import { createSelector } from 'reselect';
6
- import { r as selectRouteEntryContentTypeId, a as selectRouteEntry, t as selectRouteIsError, u as selectIsNotFound, v as selectRouteLoading, k as selectMappedEntry, b as selectCurrentProject, w as selectCurrentPath, x as selectRouteStatusCode, y as selectRouteErrorMessage, z as setNavigationPath } from './selectors-691caf02.js';
7
- import { a as selectUserIsAuthenticated, b as selectUserGroups, t as toJS, C as CookieHelper, m as matchUserGroup } from './ToJs-df57f31d.js';
5
+ import { h as selectRouteEntryContentTypeId, j as selectRouteEntry, k as selectRouteIsError, l as selectIsNotFound, m as selectRouteLoading, n as selectMappedEntry, f as selectCurrentProject, o as selectCurrentPath, p as selectRouteStatusCode, q as selectRouteErrorMessage, u as setNavigationPath } from './selectors-CBdCY0u3.js';
6
+ import { d as selectUserIsAuthenticated, k as selectUserGroups, t as toJS, m as matchUserGroup } from './ToJs-CpPNdcXS.js';
7
+ import { e as useSSRContext } from './SSRContext-CkiWIvde.js';
8
8
 
9
9
  const HttpContext = /*#__PURE__*/createContext({});
10
10
  const useHttpContext = () => {
@@ -13,13 +13,13 @@ const useHttpContext = () => {
13
13
 
14
14
  const mergeStaticRoutes = matchedStaticRoute => {
15
15
  let finalRoute = {};
16
-
17
16
  for (const [i, route] of matchedStaticRoute.entries()) {
18
- const staticRouteCopy = { ...route.route
17
+ const staticRouteCopy = {
18
+ ...route.route
19
19
  };
20
-
21
20
  if (i === matchedStaticRoute.length - 1) {
22
- finalRoute = { ...finalRoute,
21
+ finalRoute = {
22
+ ...finalRoute,
23
23
  ...staticRouteCopy,
24
24
  fullPath: `${finalRoute.fullPath || ''}${route.route.path ? route.route.path : ''}`
25
25
  };
@@ -30,7 +30,8 @@ const mergeStaticRoutes = matchedStaticRoute => {
30
30
  delete staticRouteCopy.path;
31
31
  delete staticRouteCopy.component;
32
32
  delete staticRouteCopy.element;
33
- finalRoute = { ...finalRoute,
33
+ finalRoute = {
34
+ ...finalRoute,
34
35
  ...staticRouteCopy,
35
36
  fullPath: `${finalRoute.fullPath || ''}${route.route.path ? route.route.path.endsWith('/') ? route.route.path : route.route.path + '/' : ''}`
36
37
  };
@@ -43,12 +44,10 @@ const Redirect = ({
43
44
  to
44
45
  }) => {
45
46
  const httpContext = useHttpContext();
46
-
47
47
  if (httpContext) {
48
48
  httpContext.statusCode = code;
49
49
  httpContext.url = to;
50
50
  }
51
-
52
51
  return /*#__PURE__*/React.createElement(Navigate, {
53
52
  to: to
54
53
  });
@@ -59,11 +58,9 @@ const Status = ({
59
58
  children
60
59
  }) => {
61
60
  const httpContext = useHttpContext();
62
-
63
61
  if (httpContext) {
64
62
  httpContext.statusCode = code;
65
63
  }
66
-
67
64
  return /*#__PURE__*/React.createElement(React.Fragment, null, children);
68
65
  };
69
66
 
@@ -88,27 +85,21 @@ const StaticRouteLoader = ({
88
85
 
89
86
  const replaceDoubleSlashRecursive = path => {
90
87
  const nextPath = path.replace(/\/\//, '/');
91
-
92
88
  if (nextPath.match(/\/\//)) {
93
89
  return replaceDoubleSlashRecursive(nextPath);
94
90
  }
95
-
96
91
  return nextPath;
97
92
  };
98
-
99
93
  const getTrimmedPath = path => {
100
94
  if (path !== '/') {
101
95
  const nextPath = replaceDoubleSlashRecursive(path);
102
96
  const lastChar = nextPath[nextPath.length - 1];
103
-
104
97
  if (lastChar === '/') {
105
98
  return nextPath.substring(0, nextPath.length - 1);
106
99
  }
107
100
  }
108
-
109
101
  return path;
110
102
  };
111
-
112
103
  const processStaticRoutes = (staticRoutes, componentProps) => {
113
104
  const {
114
105
  projectId,
@@ -118,9 +109,9 @@ const processStaticRoutes = (staticRoutes, componentProps) => {
118
109
  isLoggedIn
119
110
  } = componentProps;
120
111
  return staticRoutes.map(x => {
121
- const route = { ...x
112
+ const route = {
113
+ ...x
122
114
  };
123
-
124
115
  if (route.component) {
125
116
  route.element = /*#__PURE__*/React.createElement(route.component, {
126
117
  projectId: projectId,
@@ -131,7 +122,6 @@ const processStaticRoutes = (staticRoutes, componentProps) => {
131
122
  });
132
123
  delete route.component;
133
124
  }
134
-
135
125
  if (route.element) {
136
126
  route.element = /*#__PURE__*/cloneElement(route.element, {
137
127
  projectId,
@@ -141,15 +131,12 @@ const processStaticRoutes = (staticRoutes, componentProps) => {
141
131
  isLoggedIn
142
132
  });
143
133
  }
144
-
145
134
  if (route.children) {
146
135
  route.children = processStaticRoutes(route.children, componentProps);
147
136
  }
148
-
149
137
  return route;
150
138
  });
151
139
  };
152
-
153
140
  const RouteLoader = ({
154
141
  contentTypeId,
155
142
  entry,
@@ -171,40 +158,43 @@ const RouteLoader = ({
171
158
  trailingSlashRedirectCode = 302
172
159
  }) => {
173
160
  const location = useLocation();
174
- const cookies = new CookieHelper(...useCookies()); // Always ensure paths are trimmed of trailing slashes so urls are always unique
175
161
 
176
- const trimmedPath = getTrimmedPath(location.pathname); // Convert any react-router-v5 style routes to react-router-v6 style routes.
162
+ // In SSR pass references to things in backing sagas
163
+ // we cannot access in a global scope
164
+ const ssrContext = useSSRContext();
177
165
 
166
+ // Always ensure paths are trimmed of trailing slashes so urls are always unique
167
+ const trimmedPath = getTrimmedPath(location.pathname);
168
+
169
+ // Convert any react-router-v5 style routes to react-router-v6 style routes.
178
170
  const staticRoutes = processStaticRoutes(routes.StaticRoutes, {
179
171
  projectId,
180
172
  contentTypeId,
181
173
  entry,
182
174
  mappedEntry,
183
175
  isLoggedIn
184
- }); // Match any Static Routes a developer has defined
176
+ });
185
177
 
178
+ // Match any Static Routes a developer has defined
186
179
  const matchedStaticRoute = matchRoutes(staticRoutes, location);
187
- const isStaticRoute = matchedStaticRoute && matchedStaticRoute.length > 0; // Combine custom params for all static routes, with the furthest config taking precedence.
180
+ const isStaticRoute = matchedStaticRoute && matchedStaticRoute.length > 0;
188
181
 
182
+ // Combine custom params for all static routes, with the furthest config taking precedence.
189
183
  if (isStaticRoute) {
190
184
  mergeStaticRoutes(matchedStaticRoute);
191
185
  }
192
-
193
186
  const staticRoute = isStaticRoute ? matchedStaticRoute.pop() || undefined : undefined;
194
187
  const routeRequiresLogin = staticRoute ? staticRoute.route.requireLogin : undefined;
195
188
  const setPath = useCallback(() => {
196
189
  // Use serverPath to control the path we send to siteview node api to resolve a route
197
190
  let serverPath = '';
198
-
199
191
  if (staticRoute && staticRoute.pathname === staticRoute.pathnameBase) {
200
192
  var _route$path, _route$fetchNode;
201
-
202
193
  const {
203
194
  route,
204
195
  pathname,
205
196
  params
206
197
  } = staticRoute;
207
-
208
198
  if ((_route$path = route.path) !== null && _route$path !== void 0 && _route$path.includes('*')) {
209
199
  // Send the whole url to api if we have matched route containing wildcard
210
200
  serverPath = pathname;
@@ -221,46 +211,47 @@ const RouteLoader = ({
221
211
  }).replace(/\/$/, '');
222
212
  } else {
223
213
  var _route$fullPath;
224
-
225
214
  // Send all non-parameterised url parts to api
226
215
  serverPath = (_route$fullPath = route.fullPath) === null || _route$fullPath === void 0 ? void 0 : _route$fullPath.split('/').filter(p => !p.startsWith(':')).join('/');
227
216
  }
228
217
  }
229
-
230
- setNavigationPath(serverPath || trimmedPath, location, staticRoute, withEvents, statePath, routes, cookies); // eslint-disable-next-line react-hooks/exhaustive-deps
231
- }, [setNavigationPath, // staticRoute,
232
- withEvents, location, routes, // statePath,
218
+ setNavigationPath(serverPath || trimmedPath, location, staticRoute, withEvents, statePath, routes, ssrContext);
219
+ // eslint-disable-next-line react-hooks/exhaustive-deps
220
+ }, [setNavigationPath,
221
+ // staticRoute,
222
+ withEvents, location, routes,
223
+ // statePath,
233
224
  trimmedPath]);
234
225
  if (typeof window == 'undefined') setPath();
235
226
  useEffect(() => {
236
227
  setPath();
237
- }, [location, setPath]); // Need to redirect when url endswith a /
228
+ }, [location, setPath]);
238
229
 
230
+ // Need to redirect when url endswith a /
239
231
  if (location.pathname.length > trimmedPath.length) {
240
232
  return /*#__PURE__*/React.createElement(Redirect, {
241
233
  code: trailingSlashRedirectCode || 302,
242
234
  to: `${trimmedPath}${location.search}${location.hash}`
243
235
  });
244
- } // Render any Static Routes a developer has defined
245
-
236
+ }
246
237
 
238
+ // Render any Static Routes a developer has defined
247
239
  if (isStaticRoute && !(!isLoggedIn && routeRequiresLogin)) {
248
240
  if (matchUserGroup(userGroups, routeRequiresLogin)) return /*#__PURE__*/React.createElement(StaticRouteLoader, {
249
241
  staticRoutes: staticRoutes
250
242
  });
251
- } // Render a supplied Loading component if the route
252
- // is not a static route and is in a loading state
253
-
243
+ }
254
244
 
245
+ // Render a supplied Loading component if the route
246
+ // is not a static route and is in a loading state
255
247
  if (isLoading && !isNotFound && loadingComponent) {
256
248
  const LoadingComponent = loadingComponent;
257
249
  return /*#__PURE__*/React.createElement(LoadingComponent, null);
258
- } // Match any defined Content Type Mappings
259
-
250
+ }
260
251
 
252
+ // Match any defined Content Type Mappings
261
253
  if (contentTypeId && !(!isLoggedIn && routeRequiresLogin)) {
262
254
  const MatchedComponent = routes.ContentTypeMappings.find(item => item.contentTypeID === contentTypeId);
263
-
264
255
  if (MatchedComponent && !(MatchedComponent.requireLogin && !isLoggedIn)) {
265
256
  if (matchUserGroup(userGroups, MatchedComponent.requireLogin)) return /*#__PURE__*/React.createElement(MatchedComponent.component, {
266
257
  projectId: projectId,
@@ -271,9 +262,7 @@ const RouteLoader = ({
271
262
  });
272
263
  }
273
264
  }
274
-
275
265
  const NotFoundComponent = notFoundComponent ? notFoundComponent : NotFound;
276
-
277
266
  if (isNotFound || isError) {
278
267
  console.info(`RouteLoader rendering NotFound component: statusCode ${statusCode}, isNotFound ${isNotFound}, isError ${isError}`);
279
268
  return /*#__PURE__*/React.createElement(Status, {
@@ -283,10 +272,8 @@ const RouteLoader = ({
283
272
  statusText: statusText
284
273
  }));
285
274
  }
286
-
287
275
  return null;
288
276
  };
289
-
290
277
  const mapStateToPropsMemoized = createSelector(selectRouteEntryContentTypeId, selectRouteEntry, selectRouteIsError, selectIsNotFound, selectRouteLoading, selectUserIsAuthenticated, selectMappedEntry, selectCurrentProject, selectCurrentPath, selectRouteStatusCode, selectRouteErrorMessage, selectUserGroups, (contentTypeId, entry, isError, isNotFound, isLoading, isLoggedIn, mappedEntry, projectId, statePath, statusCode, statusText, userGroups) => ({
291
278
  contentTypeId,
292
279
  entry,
@@ -306,5 +293,5 @@ const mapDispatchToProps = {
306
293
  };
307
294
  var RouteLoader$1 = connect(mapStateToPropsMemoized, mapDispatchToProps)(toJS(RouteLoader));
308
295
 
309
- export { HttpContext as H, RouteLoader$1 as R, Status as S, Redirect as a, mergeStaticRoutes as m, useHttpContext as u };
310
- //# sourceMappingURL=RouteLoader-29fd689a.js.map
296
+ export { HttpContext as H, Redirect as R, Status as S, RouteLoader$1 as a, mergeStaticRoutes as m, useHttpContext as u };
297
+ //# sourceMappingURL=RouteLoader-D7HmVx5l.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteLoader-D7HmVx5l.js","sources":["../src/routing/httpContext.ts","../src/util/mergeStaticRoutes.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 { 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 { 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 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":["HttpContext","createContext","useHttpContext","useContext","mergeStaticRoutes","matchedStaticRoute","finalRoute","i","route","entries","staticRouteCopy","length","fullPath","path","children","index","component","element","endsWith","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":";;;;;;;;MAOaA,WAAW,gBAAGC,aAAa,CAAoB,EAAE;AACvD,MAAMC,cAAc,GAAGA,MAAM;EAClC,OAAOC,UAAU,CAACH,WAAW,CAAC;AAChC;;ACRO,MAAMI,iBAAiB,GAAGC,kBAAkB,IAAI;EACrD,IAAIC,UAAuB,GAAG,EAAE;AAChC,EAAA,KAAK,MAAM,CAACC,CAAC,EAAEC,KAAK,CAAC,IAAIH,kBAAkB,CAACI,OAAO,EAAE,EAAE;AACrD,IAAA,MAAMC,eAAe,GAAG;AAAE,MAAA,GAAGF,KAAK,CAACA;KAAO;AAC1C,IAAA,IAAID,CAAC,KAAKF,kBAAkB,CAACM,MAAM,GAAG,CAAC,EAAE;AACvCL,MAAAA,UAAU,GAAG;AACX,QAAA,GAAGA,UAAU;AACb,QAAA,GAAGI,eAAe;QAClBE,QAAQ,EAAE,GAAGN,UAAU,CAACM,QAAQ,IAAI,EAAE,GACpCJ,KAAK,CAACA,KAAK,CAACK,IAAI,GAAGL,KAAK,CAACA,KAAK,CAACK,IAAI,GAAG,EAAE,CAAA;OAE3C;AACDR,MAAAA,kBAAkB,CAACE,CAAC,CAAC,CAACC,KAAK,GAAGF,UAAU;AAC1C,IAAA,CAAC,MAAM;MACL,OAAOI,eAAe,CAACI,QAAQ;MAC/B,OAAOJ,eAAe,CAACK,KAAK;MAC5B,OAAOL,eAAe,CAACG,IAAI;MAC3B,OAAOH,eAAe,CAACM,SAAS;MAChC,OAAON,eAAe,CAACO,OAAO;AAC9BX,MAAAA,UAAU,GAAG;AACX,QAAA,GAAGA,UAAU;AACb,QAAA,GAAGI,eAAe;AAClBE,QAAAA,QAAQ,EAAE,CAAA,EAAGN,UAAU,CAACM,QAAQ,IAAI,EAAE,CAAA,EACpCJ,KAAK,CAACA,KAAK,CAACK,IAAI,GACZL,KAAK,CAACA,KAAK,CAACK,IAAI,CAACK,QAAQ,CAAC,GAAG,CAAC,GAC5BV,KAAK,CAACA,KAAK,CAACK,IAAI,GAChBL,KAAK,CAACA,KAAK,CAACK,IAAI,GAAG,GAAG,GACxB,EAAE,CAAA;OAET;AACH,IAAA;AACF,EAAA;AACF;;AC9BO,MAAMM,QAAQ,GAAGA,CAAC;EACvBC,IAAI;AACJC,EAAAA;AACkD,CAAC,KAAK;AACxD,EAAA,MAAMC,WAAW,GAAGpB,cAAc,EAAE;AACpC,EAAA,IAAIoB,WAAW,EAAE;IACfA,WAAW,CAACC,UAAU,GAAGH,IAAI;IAC7BE,WAAW,CAACE,GAAG,GAAGH,EAAE;AACtB,EAAA;AACA,EAAA,oBAAOI,KAAA,CAAAC,aAAA,CAACC,QAAQ,EAAA;AAACN,IAAAA,EAAE,EAAEA;AAAG,GAAE,CAAC;AAC7B;;ACXO,MAAMO,MAAM,GAAGA,CAAC;EACrBR,IAAI;AACJN,EAAAA;AACmC,CAAC,KAAK;AACzC,EAAA,MAAMQ,WAAW,GAAGpB,cAAc,EAAE;AACpC,EAAA,IAAIoB,WAAW,EAAE;IACfA,WAAW,CAACC,UAAU,GAAGH,IAAI;AAC/B,EAAA;EACA,oBAAOK,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAI,QAAA,EAAA,IAAA,EAAGf,QAAW,CAAC;AACxB;;ACVA,MAAMgB,QAAQ,GAAGA,CAAC;EAChBP,UAAU;AACVQ,EAAAA;AAIF,CAAC,kBACCN,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAI,QAAA,EAAA,IAAA,eACEJ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA,IAAA,eACED,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA,IAAA,EAAKH,UAAU,IAAI,KAAK,EAAC,iBAAmB,CAAC,EAC5CQ,UAAU,iBACTN,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AACEM,EAAAA,KAAK,EAAE;AACLC,IAAAA,UAAU,EAAE,MAAM;AAClBC,IAAAA,KAAK,EAAE,MAAM;AACbC,IAAAA,QAAQ,EAAE,MAAM;AAChBC,IAAAA,OAAO,EAAE;AACX;AAAE,CAAA,EAEDL,UACC,CAEA,CACR,CACH;;AClBM,MAAMM,iBAAiB,GAAGA,CAAC;AAAEC,EAAAA;AAAqC,CAAC,KAAK;AAC7E,EAAA,MAAMC,kBAAkB,GAAGC,SAAS,CAACF,YAA6B,CAAC;EACnE,oBAAOb,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAI,QAAA,EAAA,IAAA,EAAGU,kBAAqB,CAAC;AAClC,CAAC;;AC0BD,MAAME,2BAA2B,GAAI5B,IAAY,IAAK;EACpD,MAAM6B,QAAQ,GAAG7B,IAAI,CAAC8B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AAE1C,EAAA,IAAID,QAAQ,CAACE,KAAK,CAAC,MAAM,CAAC,EAAE;IAC1B,OAAOH,2BAA2B,CAACC,QAAQ,CAAC;AAC9C,EAAA;AAEA,EAAA,OAAOA,QAAQ;AACjB,CAAC;AAED,MAAMG,cAAc,GAAGhC,IAAI,IAAI;EAC7B,IAAIA,IAAI,KAAK,GAAG,EAAE;AAChB,IAAA,MAAM6B,QAAQ,GAAGD,2BAA2B,CAAC5B,IAAI,CAAC;IAClD,MAAMiC,QAAQ,GAAGJ,QAAQ,CAACA,QAAQ,CAAC/B,MAAM,GAAG,CAAC,CAAC;IAC9C,IAAImC,QAAQ,KAAK,GAAG,EAAE;MACpB,OAAOJ,QAAQ,CAACK,SAAS,CAAC,CAAC,EAAEL,QAAQ,CAAC/B,MAAM,GAAG,CAAC,CAAC;AACnD,IAAA;AACF,EAAA;AACA,EAAA,OAAOE,IAAI;AACb,CAAC;AAED,MAAMmC,mBAAmB,GAAGA,CAC1BV,YAA2B,EAC3BW,cAAoC,KACjC;EACH,MAAM;IAAEC,SAAS;IAAEC,aAAa;IAAEC,KAAK;IAAEC,WAAW;AAAEC,IAAAA;AAAW,GAAC,GAChEL,cAAc;AAChB,EAAA,OAAOX,YAAY,CAACiB,GAAG,CAACC,CAAC,IAAI;AAC3B,IAAA,MAAMhD,KAAK,GAAG;MAAE,GAAGgD;KAAG;IACtB,IAAIhD,KAAK,CAACQ,SAAS,EAAE;MACnBR,KAAK,CAACS,OAAO,gBACXQ,KAAA,CAAAC,aAAA,CAAClB,KAAK,CAACQ,SAAS,EAAA;AACdkC,QAAAA,SAAS,EAAEA,SAAU;AACrBC,QAAAA,aAAa,EAAEA,aAAa,GAAGA,aAAa,GAAGM,SAAU;AACzDL,QAAAA,KAAK,EAAEA,KAAM;AACbC,QAAAA,WAAW,EAAEA,WAAY;AACzBC,QAAAA,UAAU,EAAEA;AAAW,OACxB,CACF;MACD,OAAO9C,KAAK,CAACQ,SAAS;AACxB,IAAA;IACA,IAAIR,KAAK,CAACS,OAAO,EAAE;MACjBT,KAAK,CAACS,OAAO,gBAAGyC,YAAY,CAAClD,KAAK,CAACS,OAAO,EAA6B;QACrEiC,SAAS;QACTC,aAAa;QACbC,KAAK;QACLC,WAAW;AACXC,QAAAA;AACF,OAAC,CAAC;AACJ,IAAA;IACA,IAAI9C,KAAK,CAACM,QAAQ,EAAE;MAClBN,KAAK,CAACM,QAAQ,GAAGkC,mBAAmB,CAACxC,KAAK,CAACM,QAAQ,EAAEmC,cAAc,CAAC;AACtE,IAAA;AACA,IAAA,OAAOzC,KAAK;AACd,EAAA,CAAC,CAAC;AACJ,CAAC;AAkBD,MAAMmD,WAAW,GAAGA,CAAC;EACnBR,aAAa;EACbC,KAAK;EACLQ,OAAO;EACPC,SAAS;EACTP,UAAU;EACVQ,UAAU;EACVC,gBAAgB;EAChBV,WAAW;EACXW,iBAAiB;EACjBd,SAAS;EACTe,MAAM;EACNC,iBAAiB;EACjBC,SAAS;EACT5C,UAAU;EACVQ,UAAU;EACVqC,UAAU;EACVC,UAAU;AACVC,EAAAA,yBAAyB,GAAG;AACiB,CAAC,KAAK;AACnD,EAAA,MAAMC,QAAQ,GAAGC,WAAW,EAAE;;AAE9B;AACA;AACA,EAAA,MAAMC,UAAU,GAAGC,aAAa,EAAE;;AAElC;AACA,EAAA,MAAMC,WAAW,GAAG9B,cAAc,CAAC0B,QAAQ,CAACK,QAAQ,CAAC;;AAErD;AACA,EAAA,MAAMtC,YAAY,GAAGU,mBAAmB,CAACiB,MAAM,CAACY,YAAY,EAAE;IAC5D3B,SAAS;IACTC,aAAa;IACbC,KAAK;IACLC,WAAW;AACXC,IAAAA;AACF,GAAC,CAAC;;AAEF;AACA,EAAA,MAAMjD,kBAAkB,GAAGyE,WAAW,CACpCxC,YAAY,EACZiC,QACF,CAAC;EACD,MAAMQ,aAAa,GAAG1E,kBAAkB,IAAIA,kBAAkB,CAACM,MAAM,GAAG,CAAC;;AAEzE;AACA,EAAA,IAAIoE,aAAa,EAAE;IACjB3E,iBAAiB,CAACC,kBAAkB,CAAC;AACvC,EAAA;AAEA,EAAA,MAAM2E,WAA0D,GAC9DD,aAAa,GAAG1E,kBAAkB,CAAC4E,GAAG,EAAE,IAAIxB,SAAS,GAAGA,SAAS;EAEnE,MAAMyB,kBAAkB,GAAGF,WAAW,GAClCA,WAAW,CAACxE,KAAK,CAAC2E,YAAY,GAC9B1B,SAAS;AAEb,EAAA,MAAM2B,OAAO,GAAGC,WAAW,CAAC,MAAM;AAChC;IACA,IAAIC,UAAU,GAAG,EAAE;IACnB,IAAIN,WAAW,IAAIA,WAAW,CAACJ,QAAQ,KAAKI,WAAW,CAACO,YAAY,EAAE;MAAA,IAAAC,WAAA,EAAAC,gBAAA;MACpE,MAAM;QAAEjF,KAAK;QAAEoE,QAAQ;AAAEc,QAAAA;AAAO,OAAC,GAAGV,WAAW;AAE/C,MAAA,IAAA,CAAAQ,WAAA,GAAIhF,KAAK,CAACK,IAAI,MAAA,IAAA,IAAA2E,WAAA,KAAA,MAAA,IAAVA,WAAA,CAAYG,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC7B;AACAL,QAAAA,UAAU,GAAGV,QAAQ;MACvB,CAAC,MAAM,IAAI,OAAOpE,KAAK,CAACoF,cAAc,KAAK,QAAQ,EAAE;AACnD;QACAN,UAAU,GAAGV,QAAQ,CAClBiB,KAAK,CAAC,GAAG,CAAC,CACVC,MAAM,CAAC,CAAC,EAAEtF,KAAK,CAACoF,cAAc,GAAG,CAAC,CAAC,CACnCG,IAAI,CAAC,GAAG,CAAC;MACd,CAAC,MAAM,IACL,OAAOvF,KAAK,CAACwF,SAAS,KAAK,QAAQ,IAAA,CAAAP,gBAAA,GACnCjF,KAAK,CAACwF,SAAS,MAAA,IAAA,IAAAP,gBAAA,eAAfA,gBAAA,CAAiBC,MAAM,EACvB;AACA,QAAA,MAAMO,eAAyB,GAAGzF,KAAK,CAACwF,SAAS,CAACN,MAAM;QACxD,MAAMQ,WAAW,GAAGR,MAAM;QAE1B,MAAMS,QAAQ,GAAG,IAAIC,MAAM,CACzBC,MAAM,CAACC,IAAI,CAACJ,WAAW,CAAC,CACrB3C,GAAG,CAACgD,CAAC,IAAI,CAAA,CAAA,EAAIA,CAAC,CAAA,CAAE,CAAC,CACjBR,IAAI,CAAC,GAAG,CAAC,EACZ,GACF,CAAC;AAEDT,QAAAA,UAAU,GAAGV,QAAQ,CAClBjC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAClBA,OAAO,CAACwD,QAAQ,EAAEK,OAAO,IAAI;UAC5B,MAAMC,KAAK,GAAGD,OAAO,CAAC7D,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AACtC,UAAA,IAAIsD,eAAe,CAACN,QAAQ,CAACc,KAAK,CAAC,EACjC,OAAOP,WAAW,CAACO,KAAK,CAAC,IAAI,EAAE,CAAC,KAC7B,OAAO,EAAE;AAChB,QAAA,CAAC,CAAC,CACD9D,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACvB,MAAA,CAAC,MAAM;AAAA,QAAA,IAAA+D,eAAA;AACL;AACApB,QAAAA,UAAU,GAAA,CAAAoB,eAAA,GAAIlG,KAAK,CAACI,QAAQ,MAAA,IAAA,IAAA8F,eAAA,KAAA,MAAA,GAAA,MAAA,GAAfA,eAAA,CACTb,KAAK,CAAC,GAAG,CAAC,CACXc,MAAM,CAACJ,CAAC,IAAI,CAACA,CAAC,CAACK,UAAU,CAAC,GAAG,CAAC,CAAC,CAC/Bb,IAAI,CAAC,GAAG,CAAC;AACd,MAAA;AACF,IAAA;AAEA7B,IAAAA,iBAAiB,CACfoB,UAAU,IAAIX,WAAW,EACzBJ,QAAQ,EACRS,WAAW,EACXX,UAAU,EACVF,SAAS,EACTF,MAAM,EACNQ,UACF,CAAC;AACD;EACF,CAAC,EAAE,CACDP,iBAAiB;AACjB;EACAG,UAAU,EACVE,QAAQ,EACRN,MAAM;AACN;AACAU,EAAAA,WAAW,CACZ,CAAC;AAEF,EAAA,IAAI,OAAOkC,MAAM,IAAI,WAAW,EAAEzB,OAAO,EAAE;AAE3C0B,EAAAA,SAAS,CAAC,MAAM;AACd1B,IAAAA,OAAO,EAAE;AACX,EAAA,CAAC,EAAE,CAACb,QAAQ,EAAEa,OAAO,CAAC,CAAC;;AAEvB;EACA,IAAIb,QAAQ,CAACK,QAAQ,CAACjE,MAAM,GAAGgE,WAAW,CAAChE,MAAM,EAAE;AACjD,IAAA,oBACEc,KAAA,CAAAC,aAAA,CAACP,QAAQ,EAAA;MACPC,IAAI,EAAEkD,yBAAyB,IAAI,GAAI;MACvCjD,EAAE,EAAE,CAAA,EAAGsD,WAAW,CAAA,EAAGJ,QAAQ,CAACwC,MAAM,CAAA,EAAGxC,QAAQ,CAACyC,IAAI,CAAA;AAAG,KACxD,CAAC;AAEN,EAAA;;AAEA;EACA,IAAIjC,aAAa,IAAI,EAAE,CAACzB,UAAU,IAAI4B,kBAAkB,CAAC,EAAE;AACzD,IAAA,IAAI+B,cAAc,CAAC7C,UAAU,EAAEc,kBAAkB,CAAC,EAChD,oBAAOzD,KAAA,CAAAC,aAAA,CAACW,iBAAiB,EAAA;AAACC,MAAAA,YAAY,EAAEA;AAAa,KAAE,CAAC;AAC5D,EAAA;;AAEA;AACA;AACA,EAAA,IAAIuB,SAAS,IAAI,CAACC,UAAU,IAAIC,gBAAgB,EAAE;IAChD,MAAMmD,gBAAgB,GAAGnD,gBAAgB;AACzC,IAAA,oBAAOtC,KAAA,CAAAC,aAAA,CAACwF,gBAAgB,MAAE,CAAC;AAC7B,EAAA;;AAEA;EACA,IAAI/D,aAAa,IAAI,EAAE,CAACG,UAAU,IAAI4B,kBAAkB,CAAC,EAAE;AACzD,IAAA,MAAMiC,gBAAgB,GAAGlD,MAAM,CAACmD,mBAAmB,CAACC,IAAI,CACtDC,IAAI,IAAIA,IAAI,CAACC,aAAa,KAAKpE,aACjC,CAAC;IAED,IAAIgE,gBAAgB,IAAI,EAAEA,gBAAgB,CAAChC,YAAY,IAAI,CAAC7B,UAAU,CAAC,EAAE;AACvE,MAAA,IAAI2D,cAAc,CAAC7C,UAAU,EAAE+C,gBAAgB,CAAChC,YAAY,CAAC,EAC3D,oBACE1D,KAAA,CAAAC,aAAA,CAACyF,gBAAgB,CAACnG,SAAS,EAAA;AACzBkC,QAAAA,SAAS,EAAEA,SAAU;AACrBC,QAAAA,aAAa,EAAEA,aAAc;AAC7BC,QAAAA,KAAK,EAAEA,KAAM;AACbC,QAAAA,WAAW,EAAEA,WAAY;AACzBC,QAAAA,UAAU,EAAEA;AAAW,OACxB,CAAC;AAER,IAAA;AACF,EAAA;AAEA,EAAA,MAAMkE,iBAAiB,GAAGxD,iBAAiB,GAAGA,iBAAiB,GAAGlC,QAAQ;EAC1E,IAAIgC,UAAU,IAAIF,OAAO,EAAE;IACzB6D,OAAO,CAACC,IAAI,CACV,CAAA,qDAAA,EAAwDnG,UAAU,gBAAgBuC,UAAU,CAAA,UAAA,EAAaF,OAAO,CAAA,CAClH,CAAC;AAED,IAAA,oBACEnC,KAAA,CAAAC,aAAA,CAACE,MAAM,EAAA;AAACR,MAAAA,IAAI,EAAEG;AAAW,KAAA,eACvBE,KAAA,CAAAC,aAAA,CAAC8F,iBAAiB,EAAA;AAACjG,MAAAA,UAAU,EAAEA,UAAW;AAACQ,MAAAA,UAAU,EAAEA;AAAW,KAAE,CAC9D,CAAC;AAEb,EAAA;AAEA,EAAA,OAAO,IAAI;AACb,CAAC;AACD,MAAM4F,uBAAuB,GAAGC,cAAc,CAC5CC,6BAA6B,EAC7BC,gBAAgB,EAChBC,kBAAkB,EAClBC,gBAAgB,EAChBC,kBAAkB,EAClBC,yBAAyB,EACzBC,iBAAiB,EACjBC,oBAAoB,EACpBC,iBAAiB,EACjBC,qBAAqB,EACrBC,uBAAuB,EACvBC,gBAAgB,EAChB,CACErF,aAAa,EACbC,KAAK,EACLQ,OAAO,EACPE,UAAU,EACVD,SAAS,EACTP,UAAU,EACVD,WAAW,EACXH,SAAS,EACTiB,SAAS,EACT5C,UAAU,EACVQ,UAAU,EACVqC,UAAU,MACN;EACJjB,aAAa;EACbC,KAAK;EACLQ,OAAO;EACPE,UAAU;EACVD,SAAS;EACTP,UAAU;EACVD,WAAW;EACXH,SAAS;EACTiB,SAAS;EACT5C,UAAU;EACVQ,UAAU;AACVqC,EAAAA;AACF,CAAC,CACH,CAAC;AAED,MAAMqE,kBAAkB,GAAG;AACzBvE,EAAAA;AACF,CAAC;AAED,oBAAewE,OAAO,CACpBf,uBAAuB,EACvBc,kBACF,CAAC,CAACE,IAAI,CAAChF,WAAkB,CAAC,CAAC;;;;"}