@commercetools-frontend/application-shell 0.0.0-CRAFT-1791-20251006162610

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 (217) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +7 -0
  3. package/dist/application-entry-point-10a5e1a5.esm.js +82 -0
  4. package/dist/application-entry-point-8c4b8e53.cjs.prod.js +86 -0
  5. package/dist/application-entry-point-c87294b0.cjs.dev.js +96 -0
  6. package/dist/box-09bf50e1.cjs.prod.js +30 -0
  7. package/dist/box-4857aa65.cjs.dev.js +30 -0
  8. package/dist/box-9cf180c1.esm.js +17 -0
  9. package/dist/cart-645074db.cjs.prod.js +30 -0
  10. package/dist/cart-b0044279.cjs.dev.js +30 -0
  11. package/dist/cart-bb491ca1.esm.js +17 -0
  12. package/dist/commercetools-frontend-application-shell.cjs.d.ts +2 -0
  13. package/dist/commercetools-frontend-application-shell.cjs.dev.js +214 -0
  14. package/dist/commercetools-frontend-application-shell.cjs.js +7 -0
  15. package/dist/commercetools-frontend-application-shell.cjs.prod.js +214 -0
  16. package/dist/commercetools-frontend-application-shell.esm.js +82 -0
  17. package/dist/connected-square-2d046cb8.cjs.prod.js +30 -0
  18. package/dist/connected-square-a2fea344.cjs.dev.js +30 -0
  19. package/dist/connected-square-fe6a790f.esm.js +17 -0
  20. package/dist/custom-view-dev-host-864a12e2.cjs.dev.js +197 -0
  21. package/dist/custom-view-dev-host-8e2f6aa7.cjs.prod.js +197 -0
  22. package/dist/custom-view-dev-host-d9c410aa.esm.js +186 -0
  23. package/dist/declarations/src/components/application-page-title/application-page-title.d.ts +24 -0
  24. package/dist/declarations/src/components/application-page-title/index.d.ts +1 -0
  25. package/dist/declarations/src/components/application-shell/application-shell.d.ts +45 -0
  26. package/dist/declarations/src/components/application-shell/index.d.ts +1 -0
  27. package/dist/declarations/src/components/application-shell-provider/application-shell-provider.d.ts +17 -0
  28. package/dist/declarations/src/components/application-shell-provider/index.d.ts +1 -0
  29. package/dist/declarations/src/components/application-shell-provider/utils.d.ts +3 -0
  30. package/dist/declarations/src/components/configure-intl-provider/configure-intl-provider.d.ts +12 -0
  31. package/dist/declarations/src/components/configure-intl-provider/index.d.ts +1 -0
  32. package/dist/declarations/src/components/custom-view-shell/custom-view-shell.d.ts +12 -0
  33. package/dist/declarations/src/components/custom-view-shell/index.d.ts +1 -0
  34. package/dist/declarations/src/components/error-apologizer/index.d.ts +5 -0
  35. package/dist/declarations/src/components/fetch-user/fetch-user.d.ts +16 -0
  36. package/dist/declarations/src/components/fetch-user/index.d.ts +1 -0
  37. package/dist/declarations/src/components/inject-reducers/index.d.ts +1 -0
  38. package/dist/declarations/src/components/inject-reducers/inject-reducers.d.ts +13 -0
  39. package/dist/declarations/src/components/redirect-to-login/index.d.ts +5 -0
  40. package/dist/declarations/src/components/redirect-to-logout/index.d.ts +4 -0
  41. package/dist/declarations/src/components/route-catch-all/index.d.ts +2 -0
  42. package/dist/declarations/src/components/setup-flop-flip-provider/index.d.ts +1 -0
  43. package/dist/declarations/src/components/setup-flop-flip-provider/setup-flop-flip-provider.d.ts +17 -0
  44. package/dist/declarations/src/components/suspended-route/index.d.ts +3 -0
  45. package/dist/declarations/src/components/suspended-route/protected-route.d.ts +7 -0
  46. package/dist/declarations/src/components/suspended-route/suspended-protected-route.d.ts +7 -0
  47. package/dist/declarations/src/components/suspended-route/suspended-route.d.ts +10 -0
  48. package/dist/declarations/src/configure-store.d.ts +22 -0
  49. package/dist/declarations/src/export-types.d.ts +8 -0
  50. package/dist/declarations/src/hooks/use-routes-creator/index.d.ts +1 -0
  51. package/dist/declarations/src/hooks/use-routes-creator/use-routes-creator.d.ts +22 -0
  52. package/dist/declarations/src/index.d.ts +33 -0
  53. package/dist/declarations/src/ssr/index.d.ts +2 -0
  54. package/dist/declarations/src/test-utils/custom-views-utils.d.ts +21 -0
  55. package/dist/declarations/src/test-utils/index.d.ts +2 -0
  56. package/dist/declarations/src/test-utils/test-utils.d.ts +87 -0
  57. package/dist/declarations/src/types/generated/mc.d.ts +742 -0
  58. package/dist/declarations/src/utils/get-previous-project-key/get-previous-project-key.d.ts +2 -0
  59. package/dist/declarations/src/utils/get-previous-project-key/index.d.ts +1 -0
  60. package/dist/declarations/src/utils/oidc.d.ts +10 -0
  61. package/dist/declarations/src/utils/setup-global-error-listener/index.d.ts +1 -0
  62. package/dist/declarations/src/utils/setup-global-error-listener/setup-global-error-listener.d.ts +1 -0
  63. package/dist/declarations/src/version.d.ts +2 -0
  64. package/dist/declarations-connectors/dist/commercetools-frontend-application-shell-connectors.cjs.d.ts +2 -0
  65. package/dist/declarations-connectors/src/components/application-context/application-context.d.ts +109 -0
  66. package/dist/declarations-connectors/src/components/application-context/index.d.ts +10 -0
  67. package/dist/declarations-connectors/src/components/application-context/normalizers.d.ts +48 -0
  68. package/dist/declarations-connectors/src/components/custom-view-context/custom-view-context.d.ts +19 -0
  69. package/dist/declarations-connectors/src/components/custom-view-context/index.d.ts +4 -0
  70. package/dist/declarations-connectors/src/components/project-extension-image-regex/index.d.ts +3 -0
  71. package/dist/declarations-connectors/src/components/project-extension-image-regex/project-extension-image-regex.d.ts +37 -0
  72. package/dist/declarations-connectors/src/configure-apollo.d.ts +7 -0
  73. package/dist/declarations-connectors/src/export-types.d.ts +21 -0
  74. package/dist/declarations-connectors/src/hooks/apollo-hooks/apollo-hooks.d.ts +12 -0
  75. package/dist/declarations-connectors/src/hooks/apollo-hooks/index.d.ts +1 -0
  76. package/dist/declarations-connectors/src/hooks/custom-views/use-custom-view-parent-data-refresher.d.ts +5 -0
  77. package/dist/declarations-connectors/src/index.d.ts +12 -0
  78. package/dist/declarations-connectors/src/types/generated/mc.d.ts +742 -0
  79. package/dist/declarations-connectors/src/types/generated/settings.d.ts +2116 -0
  80. package/dist/declarations-connectors/src/utils/apollo-client-runtime-cache.d.ts +4 -0
  81. package/dist/declarations-connectors/src/utils/apollo-context.d.ts +16 -0
  82. package/dist/declarations-connectors/src/utils/get-correlation-id/get-correlation-id.d.ts +3 -0
  83. package/dist/declarations-connectors/src/utils/get-correlation-id/index.d.ts +1 -0
  84. package/dist/declarations-connectors/src/utils/get-mc-api-url/get-mc-api-url.d.ts +3 -0
  85. package/dist/declarations-connectors/src/utils/get-mc-api-url/index.d.ts +1 -0
  86. package/dist/declarations-connectors/src/utils/http-client.d.ts +107 -0
  87. package/dist/declarations-connectors/src/utils/index.d.ts +7 -0
  88. package/dist/declarations-connectors/src/utils/logger.d.ts +10 -0
  89. package/dist/declarations-connectors/src/utils/oidc-storage.d.ts +12 -0
  90. package/dist/declarations-connectors/src/utils/select-project-key-from-url/index.d.ts +1 -0
  91. package/dist/declarations-connectors/src/utils/select-project-key-from-url/select-project-key-from-url.d.ts +1 -0
  92. package/dist/declarations-connectors/src/utils/select-team-id-from-storage/index.d.ts +1 -0
  93. package/dist/declarations-connectors/src/utils/select-team-id-from-storage/select-team-id-from-storage.d.ts +1 -0
  94. package/dist/declarations-connectors/src/utils/select-user-id/index.d.ts +1 -0
  95. package/dist/declarations-connectors/src/utils/select-user-id/select-user-id.d.ts +1 -0
  96. package/dist/declarations-connectors/src/version.d.ts +2 -0
  97. package/dist/error-apologizer-76f087f4.esm.js +39 -0
  98. package/dist/error-apologizer-84dc825c.cjs.prod.js +53 -0
  99. package/dist/error-apologizer-f6793491.cjs.dev.js +53 -0
  100. package/dist/gear-4f7cde98.cjs.prod.js +30 -0
  101. package/dist/gear-ee90ba83.esm.js +17 -0
  102. package/dist/gear-f2668579.cjs.dev.js +30 -0
  103. package/dist/get-mc-origin-8f7a578c.cjs.prod.js +51 -0
  104. package/dist/get-mc-origin-a86dff20.cjs.dev.js +51 -0
  105. package/dist/get-mc-origin-fecfee07.esm.js +44 -0
  106. package/dist/heart-01f01038.cjs.prod.js +30 -0
  107. package/dist/heart-86f780f3.esm.js +17 -0
  108. package/dist/heart-e49dd92a.cjs.dev.js +30 -0
  109. package/dist/index-245e2980.cjs.prod.js +237 -0
  110. package/dist/index-60cd194b.cjs.prod.js +2053 -0
  111. package/dist/index-614accc4.cjs.dev.js +237 -0
  112. package/dist/index-86039df7.esm.js +211 -0
  113. package/dist/index-8637a317.esm.js +2072 -0
  114. package/dist/index-f0f4fbcd.cjs.dev.js +2134 -0
  115. package/dist/list-with-search-027ab8eb.cjs.dev.js +30 -0
  116. package/dist/list-with-search-6462447e.cjs.prod.js +30 -0
  117. package/dist/list-with-search-d2901e34.esm.js +17 -0
  118. package/dist/location-537e0660.cjs.prod.js +32 -0
  119. package/dist/location-c835b8df.cjs.dev.js +32 -0
  120. package/dist/location-f21dbc25.esm.js +30 -0
  121. package/dist/navbar-022383bd.cjs.dev.js +1364 -0
  122. package/dist/navbar-844d350d.esm.js +1332 -0
  123. package/dist/navbar-acc2cd1b.cjs.prod.js +1225 -0
  124. package/dist/oidc-8827f9fe.cjs.dev.js +98 -0
  125. package/dist/oidc-b2520905.esm.js +84 -0
  126. package/dist/oidc-callback-2800b1f0.cjs.prod.js +243 -0
  127. package/dist/oidc-callback-5213e755.cjs.dev.js +246 -0
  128. package/dist/oidc-callback-619f18d9.esm.js +232 -0
  129. package/dist/oidc-d74e6aa2.cjs.prod.js +98 -0
  130. package/dist/paperclip-005ec544.cjs.dev.js +30 -0
  131. package/dist/paperclip-a820ee87.esm.js +17 -0
  132. package/dist/paperclip-fe72a70d.cjs.prod.js +30 -0
  133. package/dist/plugin-81ae1044.cjs.prod.js +30 -0
  134. package/dist/plugin-c7bf9e53.esm.js +17 -0
  135. package/dist/plugin-feb22442.cjs.dev.js +30 -0
  136. package/dist/project-container-22619059.cjs.prod.js +378 -0
  137. package/dist/project-container-96f2d671.cjs.dev.js +378 -0
  138. package/dist/project-container-ef2dfb60.esm.js +357 -0
  139. package/dist/project-expired-8c4cd8a0.cjs.dev.js +137 -0
  140. package/dist/project-expired-9994ed78.cjs.prod.js +137 -0
  141. package/dist/project-expired-dc881501.esm.js +123 -0
  142. package/dist/project-not-found-3933434f.cjs.prod.js +130 -0
  143. package/dist/project-not-found-3a76e8d7.cjs.dev.js +130 -0
  144. package/dist/project-not-found-57a3a216.esm.js +116 -0
  145. package/dist/project-not-initialized-2eebb2c7.esm.js +123 -0
  146. package/dist/project-not-initialized-3cfd0aed.cjs.dev.js +137 -0
  147. package/dist/project-not-initialized-91af2604.cjs.prod.js +137 -0
  148. package/dist/project-suspended-0c98a90e.cjs.dev.js +135 -0
  149. package/dist/project-suspended-dddbda8b.cjs.prod.js +135 -0
  150. package/dist/project-suspended-eeb5f62e.esm.js +121 -0
  151. package/dist/quick-access-1475bad4.cjs.dev.js +1893 -0
  152. package/dist/quick-access-ba70983f.cjs.prod.js +1875 -0
  153. package/dist/quick-access-d2f9b458.esm.js +1865 -0
  154. package/dist/redirect-to-login-12f467b8.cjs.prod.js +117 -0
  155. package/dist/redirect-to-login-2944c890.esm.js +115 -0
  156. package/dist/redirect-to-login-3bee13ba.cjs.dev.js +117 -0
  157. package/dist/redirect-to-logout-4587f4ed.cjs.dev.js +126 -0
  158. package/dist/redirect-to-logout-7bb3eb45.esm.js +113 -0
  159. package/dist/redirect-to-logout-a96985ce.cjs.prod.js +126 -0
  160. package/dist/redirect-to-project-create-9249e554.esm.js +60 -0
  161. package/dist/redirect-to-project-create-e4ff7797.cjs.prod.js +68 -0
  162. package/dist/redirect-to-project-create-f4f01842.cjs.dev.js +68 -0
  163. package/dist/redirector-0c72d0a4.cjs.prod.js +61 -0
  164. package/dist/redirector-72ccfbc2.cjs.dev.js +61 -0
  165. package/dist/redirector-d856975f.esm.js +46 -0
  166. package/dist/requests-in-flight-loader-0594117d.cjs.dev.js +122 -0
  167. package/dist/requests-in-flight-loader-59e8fb86.esm.js +107 -0
  168. package/dist/requests-in-flight-loader-a8288906.cjs.prod.js +122 -0
  169. package/dist/rocket-3372731a.cjs.dev.js +30 -0
  170. package/dist/rocket-bacf24be.esm.js +17 -0
  171. package/dist/rocket-cb99be06.cjs.prod.js +30 -0
  172. package/dist/route-catch-all-7803b1fd.esm.js +42 -0
  173. package/dist/route-catch-all-8e71a93c.cjs.prod.js +44 -0
  174. package/dist/route-catch-all-b979e1fd.cjs.dev.js +44 -0
  175. package/dist/service-page-project-switcher-37faf2fb.cjs.prod.js +37 -0
  176. package/dist/service-page-project-switcher-47296fb1.esm.js +39 -0
  177. package/dist/service-page-project-switcher-6cdff717.cjs.dev.js +45 -0
  178. package/dist/speedometer-26f52e73.cjs.prod.js +30 -0
  179. package/dist/speedometer-4c8e0b9c.esm.js +17 -0
  180. package/dist/speedometer-c1ec5a1d.cjs.dev.js +30 -0
  181. package/dist/star-6b9a91d2.cjs.dev.js +30 -0
  182. package/dist/star-af90a9c6.esm.js +17 -0
  183. package/dist/star-e4902bbb.cjs.prod.js +30 -0
  184. package/dist/tag-multi-1c065f61.cjs.prod.js +30 -0
  185. package/dist/tag-multi-4c2742de.esm.js +17 -0
  186. package/dist/tag-multi-abef3e15.cjs.dev.js +30 -0
  187. package/dist/tree-structure-3ec98cce.cjs.prod.js +30 -0
  188. package/dist/tree-structure-96ab0b7e.cjs.dev.js +30 -0
  189. package/dist/tree-structure-ca0498a0.esm.js +17 -0
  190. package/dist/use-applications-menu-14a5a1f4.cjs.prod.js +172 -0
  191. package/dist/use-applications-menu-1514af11.esm.js +157 -0
  192. package/dist/use-applications-menu-823a2492.cjs.dev.js +172 -0
  193. package/dist/use-is-served-by-proxy-28f19a6f.cjs.dev.js +10 -0
  194. package/dist/use-is-served-by-proxy-480e8de8.cjs.prod.js +10 -0
  195. package/dist/use-is-served-by-proxy-a383da4b.esm.js +8 -0
  196. package/dist/user-filled-26f333b2.cjs.prod.js +30 -0
  197. package/dist/user-filled-34aeebcc.cjs.dev.js +30 -0
  198. package/dist/user-filled-61d8a81b.esm.js +17 -0
  199. package/dist/user-settings-menu-6113cdd3.cjs.dev.js +338 -0
  200. package/dist/user-settings-menu-d75f4958.cjs.prod.js +326 -0
  201. package/dist/user-settings-menu-f98bea89.esm.js +313 -0
  202. package/dist/world-22189397.cjs.prod.js +30 -0
  203. package/dist/world-500baeb2.cjs.dev.js +30 -0
  204. package/dist/world-523efd61.esm.js +17 -0
  205. package/package.json +144 -0
  206. package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.d.ts +2 -0
  207. package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.dev.js +20 -0
  208. package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.js +7 -0
  209. package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.prod.js +20 -0
  210. package/ssr/dist/commercetools-frontend-application-shell-ssr.esm.js +4 -0
  211. package/ssr/package.json +4 -0
  212. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.d.ts +2 -0
  213. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.dev.js +554 -0
  214. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.js +7 -0
  215. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.prod.js +554 -0
  216. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.esm.js +502 -0
  217. package/test-utils/package.json +4 -0
@@ -0,0 +1,1225 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
4
+ var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
5
+ var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find');
6
+ var _startsWithInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/starts-with');
7
+ var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
8
+ var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
9
+ var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
10
+ var _Number$isFinite = require('@babel/runtime-corejs3/core-js-stable/number/is-finite');
11
+ var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
12
+ var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
13
+ var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
14
+ var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
15
+ var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
16
+ var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
17
+ var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
18
+ var react$1 = require('react');
19
+ var snakeCase = require('lodash/snakeCase');
20
+ var reactIntl = require('react-intl');
21
+ var reactRouterDom = require('react-router-dom');
22
+ var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
23
+ var LogoSVG = require('@commercetools-frontend/assets/logos/commercetools_small-logo.svg');
24
+ var constants = require('@commercetools-frontend/constants');
25
+ var icons = require('@commercetools-uikit/icons');
26
+ var Spacings = require('@commercetools-uikit/spacings');
27
+ var _styled = require('@emotion/styled/base');
28
+ var react = require('@emotion/react');
29
+ var applicationComponents = require('@commercetools-frontend/application-components');
30
+ var designSystem = require('@commercetools-uikit/design-system');
31
+ var oidc = require('./oidc-d74e6aa2.cjs.prod.js');
32
+ var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
33
+ var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
34
+ var _everyInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/every');
35
+ var reactBroadcast = require('@flopflip/react-broadcast');
36
+ var classnames = require('classnames');
37
+ var MissingImageSvg = require('@commercetools-frontend/assets/images/diagonal-line.svg');
38
+ var permissions = require('@commercetools-frontend/permissions');
39
+ var InlineSvg = require('@commercetools-uikit/icons/inline-svg');
40
+ var location = require('./location-537e0660.cjs.prod.js');
41
+ var jsxRuntime = require('@emotion/react/jsx-runtime');
42
+ var _keysInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/keys');
43
+ var _sortInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/sort');
44
+ var isNil = require('lodash/isNil');
45
+ var throttle = require('lodash/throttle');
46
+ var useApplicationsMenu = require('./use-applications-menu-14a5a1f4.cjs.prod.js');
47
+ require('@apollo/client');
48
+ require('@commercetools-frontend/l10n');
49
+
50
+ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
51
+
52
+ var _findInstanceProperty__default = /*#__PURE__*/_interopDefault(_findInstanceProperty);
53
+ var _startsWithInstanceProperty__default = /*#__PURE__*/_interopDefault(_startsWithInstanceProperty);
54
+ var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
55
+ var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
56
+ var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
57
+ var _Number$isFinite__default = /*#__PURE__*/_interopDefault(_Number$isFinite);
58
+ var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
59
+ var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
60
+ var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
61
+ var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
62
+ var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
63
+ var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
64
+ var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
65
+ var snakeCase__default = /*#__PURE__*/_interopDefault(snakeCase);
66
+ var LogoSVG__default = /*#__PURE__*/_interopDefault(LogoSVG);
67
+ var Spacings__default = /*#__PURE__*/_interopDefault(Spacings);
68
+ var _styled__default = /*#__PURE__*/_interopDefault(_styled);
69
+ var _includesInstanceProperty__default = /*#__PURE__*/_interopDefault(_includesInstanceProperty);
70
+ var _everyInstanceProperty__default = /*#__PURE__*/_interopDefault(_everyInstanceProperty);
71
+ var classnames__default = /*#__PURE__*/_interopDefault(classnames);
72
+ var MissingImageSvg__default = /*#__PURE__*/_interopDefault(MissingImageSvg);
73
+ var InlineSvg__default = /*#__PURE__*/_interopDefault(InlineSvg);
74
+ var _keysInstanceProperty__default = /*#__PURE__*/_interopDefault(_keysInstanceProperty);
75
+ var _sortInstanceProperty__default = /*#__PURE__*/_interopDefault(_sortInstanceProperty);
76
+ var isNil__default = /*#__PURE__*/_interopDefault(isNil);
77
+ var throttle__default = /*#__PURE__*/_interopDefault(throttle);
78
+
79
+ const IconWrapper = /*#__PURE__*/_styled__default["default"]("div", {
80
+ target: "e1wv1pdj3"
81
+ } )({
82
+ name: "ex9e0f",
83
+ styles: "width:auto;display:flex;justify-content:center"
84
+ } );
85
+ const Icon = /*#__PURE__*/_styled__default["default"]("div", {
86
+ target: "e1wv1pdj2"
87
+ } )("width:", oidc.NAVBAR.iconSize, ";height:", oidc.NAVBAR.iconSize, ";transition:", oidc.NAVBAR.leftNavigationTransition, ";>svg *:not([fill='none']){fill:", designSystem.designTokens.colorSurface, ";}" + ("" ));
88
+ const ItemIconText = /*#__PURE__*/_styled__default["default"]("div", {
89
+ target: "e1wv1pdj1"
90
+ } )({
91
+ name: "192s9p1",
92
+ styles: "display:flex;flex-direction:row;justify-content:center;align-items:center"
93
+ } );
94
+ const Title = /*#__PURE__*/_styled__default["default"]("div", {
95
+ target: "e1wv1pdj0"
96
+ } )("flex:1;font-weight:600;font-size:", designSystem.designTokens.fontSize20, ";line-height:", designSystem.designTokens.lineHeight20, ";color:", designSystem.designTokens.colorNeutral, ";opacity:0;transition:", oidc.NAVBAR.leftNavigationTransition, ";text-align:left;text-decoration:none;z-index:1;" + ("" ));
97
+
98
+ const getSubmenuPositionBasedOnMenuItemPosition = (isSubmenuAboveMenuItem, submenuVerticalPosition) => /*#__PURE__*/react.css(isSubmenuAboveMenuItem ? 'bottom' : 'top', ":", submenuVerticalPosition, "px;" + ("" ), "" );
99
+ var _ref4 = {
100
+ name: "abcix4",
101
+ styles: "top:0"
102
+ } ;
103
+ var _ref5 = {
104
+ name: "8tapst",
105
+ styles: "bottom:0"
106
+ } ;
107
+ const getContainerPositionBasedOnMenuItemPosition = (isSubmenuAboveMenuItem, isSublistActiveWhileIsMenuExpanded, isSublistActiveWhileIsMenuCollapsed) => [isSublistActiveWhileIsMenuCollapsed && /*#__PURE__*/react.css(isSubmenuAboveMenuItem ? 'bottom' : 'top', ":-", oidc.NAVBAR.itemSize, ";" + ("" ), "" ), isSublistActiveWhileIsMenuExpanded && isSubmenuAboveMenuItem && _ref5, isSublistActiveWhileIsMenuExpanded && !isSubmenuAboveMenuItem && _ref4];
108
+ const fadeIn = react.keyframes`
109
+ from {opacity: 0;}
110
+ to { opacity: 1;}
111
+ `;
112
+ var _ref3 = {
113
+ name: "eivff4",
114
+ styles: "display:none"
115
+ } ;
116
+ const Expander = /*#__PURE__*/_styled__default["default"]("li", {
117
+ target: "e1i568cv8"
118
+ } )("display:flex;align-items:center;justify-content:center;background:", designSystem.designTokens.colorPrimary10, ";padding:", designSystem.designTokens.spacing30, " ", designSystem.designTokens.spacing25, ";", props => !props.isVisible && _ref3, "::before{content:'';position:absolute;top:", oidc.NAVBAR.itemHeight, ";height:1px;background:rgba(255, 255, 255, 0.5);width:calc(100% - 2 * ", designSystem.designTokens.spacing30, ");}" + ("" ));
119
+ const ExpanderIcon = /*#__PURE__*/_styled__default["default"]("div", {
120
+ target: "e1i568cv7"
121
+ } )("height:", oidc.NAVBAR.expanderSize, ";width:", oidc.NAVBAR.expanderSize, ";border-radius:", designSystem.designTokens.borderRadius4, ";padding:", designSystem.designTokens.spacing20, ";background:rgba(255, 255, 255, 0.2);display:flex;justify-content:center;align-items:center;:hover,:focus{background:rgba(255, 255, 255, 0.3);cursor:pointer;}" + ("" ));
122
+ const LeftNavigation = /*#__PURE__*/_styled__default["default"]("nav", {
123
+ target: "e1i568cv6"
124
+ } )("display:grid;width:", oidc.NAVBAR.widthLeftNavigation, ";background:", applicationComponents.designTokens.backgroundColorForNavbar, ";height:100%;grid-template-rows:56px 1fr;transition:", oidc.NAVBAR.leftNavigationTransition, ";" + ("" ));
125
+ const TextLinkSublistWrapper = /*#__PURE__*/_styled__default["default"]("div", {
126
+ target: "e1i568cv5"
127
+ } )({
128
+ name: "khglpi",
129
+ styles: "display:flex;flex-direction:column;position:relative;min-height:0"
130
+ } );
131
+ const NavlinkClickableContent = /*#__PURE__*/_styled__default["default"]("div", {
132
+ target: "e1i568cv4"
133
+ } )("height:100%;width:100%;display:block;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;transition:all 150ms ease-out;position:relative;left:calc(-1 * ", designSystem.designTokens.spacing20, ");" + ("" ));
134
+ const listStyles = {
135
+ name: "19z1op4",
136
+ styles: "margin:0;padding:0;display:flex;flex-direction:column;min-height:0;flex:1 1 0"
137
+ } ;
138
+ const sublistStyles = /*#__PURE__*/react.css("padding:", designSystem.designTokens.spacing30, ";font-weight:", designSystem.designTokens.fontWeight400, ";font-size:", designSystem.designTokens.fontSize20, ";background-color:", designSystem.designTokens.colorAccent10, ";left:", oidc.NAVBAR.sublistIndentationWhenCollapsed, ";z-index:-1;list-style:none;position:fixed;display:none;" + ("" ), "" );
139
+ var _ref2 = {
140
+ name: "6dhm9o",
141
+ styles: "visibility:hidden"
142
+ } ;
143
+ const MenuList = /*#__PURE__*/_styled__default["default"]("ul", {
144
+ target: "e1i568cv3"
145
+ } )(props => [props.level === 1 && listStyles, getSubmenuPositionBasedOnMenuItemPosition(props.isSubmenuAboveMenuItem, props.submenuVerticalPosition), props.level === 2 && sublistStyles,
146
+ // prevent glitchy behavior during the initial render when the submenu's vertical position is evaluated as 0
147
+ props.submenuVerticalPosition === 0 && _ref2, (props.isSublistActiveWhileIsMenuExpanded || props.isSublistCollapsedAndActive || props.isSublistCollapsedAndActiveAndAbove) && /*#__PURE__*/react.css("opacity:0;display:none;text-align:left;background-color:", designSystem.designTokens.colorAccent20, ";::before{content:'';position:absolute;display:block;width:calc(", oidc.NAVBAR.sublistWidth, " + ", designSystem.designTokens.spacing20, ");height:", oidc.NAVBAR.itemSize, ";left:calc(-1 * ", designSystem.designTokens.spacing20, ");", getContainerPositionBasedOnMenuItemPosition(props.isSubmenuAboveMenuItem, props.isSublistActiveWhileIsMenuExpanded, props.isSublistActiveWhileIsMenuCollapsed), ";}" + ("" ), "" )], " & .highlighted,& .highlighted ", Title, "{color:", designSystem.designTokens.colorSurface, "!important;font-weight:", designSystem.designTokens.fontWeight600, ";}" + ("" ));
148
+ const SublistItem = /*#__PURE__*/_styled__default["default"]("li", {
149
+ target: "e1i568cv2"
150
+ } )("display:flex;align-items:center;align-self:stretch;border-radius:", designSystem.designTokens.borderRadius4, ";", props => [props.isActive && /*#__PURE__*/react.css("background:", designSystem.designTokens.colorPrimary40, ";" + ("" ), "" ), !props.isActive && /*#__PURE__*/react.css(":hover,:focus-within{color:", designSystem.designTokens.colorSurface, ";font-weight:", designSystem.designTokens.fontWeight600, ";border-radius:", designSystem.designTokens.borderRadius4, ";background:", designSystem.designTokens.colorPrimary95, ";[data-link-level='text-link-sublist']{>", NavlinkClickableContent, "{left:0;}}}" + ("" ), "" )], ";" + ("" ));
151
+ var _ref = {
152
+ name: "1azakc",
153
+ styles: "text-align:center"
154
+ } ;
155
+ const MenuListItem = /*#__PURE__*/_styled__default["default"]("li", {
156
+ target: "e1i568cv1"
157
+ } )("height:", oidc.NAVBAR.itemSize, ";width:", oidc.NAVBAR.itemSize, ";margin:0;background:", applicationComponents.designTokens.backgroundColorForNavbar, ";list-style:none;cursor:pointer;", IconWrapper, "{width:auto;display:flex;justify-content:center;}", props => [props.isRouteActive && /*#__PURE__*/react.css("background:", designSystem.designTokens.colorPrimary25, ";border-radius:", designSystem.designTokens.borderRadius8, ";" + ("" ), "" ), !props.isRouteActive && /*#__PURE__*/react.css(":hover,:focus-within{background-color:", designSystem.designTokens.colorPrimary20, ";border-radius:", designSystem.designTokens.borderRadius8, ";}" + ("" ), "" ), props.isActive && /*#__PURE__*/react.css(ItemIconText, "{justify-content:flex-start;}" + ("" ), "" ), !props.isActive && /*#__PURE__*/react.css(":hover ", Icon, ">svg *:not([fill='none']),:focus-within ", Icon, ">svg *:not([fill='none']){fill:", designSystem.designTokens.colorSurface, ";}:hover .", Title, ",:focus-within ", Title, "{color:", designSystem.designTokens.colorSurface, ";}" + ("" ), "" ), props.isCollapsed && _ref], " :hover ", Title, ",:focus-within ", Title, "{margin-left:calc(", designSystem.designTokens.spacing25, " + 2px);}:hover ", Icon, ",:focus-within ", Icon, "{transform:scale(1.2);}:hover ", MenuList, ".sublist-collapsed__active,:hover ", MenuList, ".sublist-collapsed__active__above,:hover ", MenuList, ".sublist-expanded__active,:focus-within ", MenuList, ".sublist-collapsed__active,:focus-within ", MenuList, ".sublist-collapsed__active__above,:focus-within ", MenuList, ".sublist-expanded__active{animation-name:", fadeIn, ";animation-duration:16ms;animation-delay:100ms;animation-fill-mode:forwards;display:flex;flex-direction:column;align-items:flex-start;background-color:", designSystem.designTokens.colorSurface, ";min-height:", oidc.NAVBAR.sublistItemMinHeight, ";width:", oidc.NAVBAR.sublistWidth, ";border-radius:", designSystem.designTokens.borderRadius8, ";z-index:20001;box-shadow:-2px 4px 25px 0 rgba(89, 89, 89, 0.5);}:hover ", MenuList, ".sublist-collapsed__active.sublist-collapsed__empty,:hover ", MenuList, ".sublist-collapsed__active__above.sublist-collapsed__empty,:focus-within ", MenuList, ".sublist-collapsed__active.sublist-collapsed__empty,:focus-within ", MenuList, ".sublist-collapsed__active__above.sublist-collapsed__empty{visibility:hidden;}:hover ", MenuList, ".sublist-expanded__active,:focus-within ", MenuList, ".sublist-expanded__active{left:", oidc.NAVBAR.sublistIndentationWhenExpanded, ";}" + ("" ));
158
+ const SafeArea = /*#__PURE__*/_styled__default["default"]("span", {
159
+ target: "e1i568cv0"
160
+ } )("position:absolute;top:0;bottom:0;right:100%;width:calc(100% - ", designSystem.designTokens.spacing30, ");clip-path:polygon(var(--safe-start), 100% 100%, 100% 0);" + ("" ));
161
+
162
+ const visible = react.keyframes`
163
+ from {
164
+ opacity: 0;
165
+ }
166
+ to {
167
+ opacity: 1;
168
+ }
169
+ `;
170
+ const FixedMenu = /*#__PURE__*/_styled__default["default"]("div", {
171
+ target: "e1meml8k10"
172
+ } )("position:relative;width:", oidc.NAVBAR.widthLeftNavigation, ";", MenuListItem, " ", ItemIconText, "{justify-content:center;display:flex;width:100%;}" + ("" ));
173
+ const SupportMenuTooltipContainer = /*#__PURE__*/_styled__default["default"]("div", {
174
+ target: "e1meml8k9"
175
+ } )("position:fixed;left:", oidc.NAVBAR.sublistIndentationWhenCollapsed, ";display:none;align-items:center;justify-content:flex-start;height:", oidc.NAVBAR.itemSize, ";z-index:20001;" + ("" ));
176
+ const ItemContent = /*#__PURE__*/_styled__default["default"]("div", {
177
+ target: "e1meml8k8"
178
+ } )("color:", designSystem.designTokens.colorNeutral, ";width:", oidc.NAVBAR.itemSize, ";position:relative;display:block;:hover ", SupportMenuTooltipContainer, ",:focus-within ", SupportMenuTooltipContainer, "{display:flex;}" + ("" ));
179
+ const ScrollableMenu = /*#__PURE__*/_styled__default["default"]("div", {
180
+ target: "e1meml8k7"
181
+ } )("flex:1 1 0;overflow-x:hidden;overflow-y:hidden;padding:", designSystem.designTokens.spacing30, " ", designSystem.designTokens.spacing30, " ", oidc.NAVBAR.itemSize, ";width:", oidc.NAVBAR.widthLeftNavigation, ";box-sizing:border-box;:hover{overflow-y:scroll;}scrollbar-width:thin;scrollbar-color:", designSystem.designTokens.colorPrimary40, " transparent;&::-webkit-scrollbar{width:8px;}&::-webkit-scrollbar-track{background:transparent;}&::-webkit-scrollbar-thumb{background-color:", designSystem.designTokens.colorPrimary40, ";border-radius:", designSystem.designTokens.borderRadius8, ";}" + ("" ));
182
+ const leftNavigationOpenStyles = /*#__PURE__*/react.css(".body__menu-open ", LeftNavigation, "{transition:", oidc.NAVBAR.leftNavigationTransition, ";width:", oidc.NAVBAR.widthLeftNavigationWhenExpanded, ";}.body__menu-open ", ScrollableMenu, "{width:", oidc.NAVBAR.widthLeftNavigationWhenExpanded, ";}.body__menu-open ", FixedMenu, "{width:", oidc.NAVBAR.widthLeftNavigationWhenExpanded, ";}.body__menu-open [data-link-level='text-link']{justify-content:start;}.body__menu-open ", MenuListItem, "{height:auto;min-height:", oidc.NAVBAR.itemSize, ";width:calc(\n ", oidc.NAVBAR.sublistIndentationWhenExpanded, " - 2 *\n ", designSystem.designTokens.spacing25, "\n );&.active{max-height:500px;transition:max-height 0.25s ease-in;", ItemIconText, "{position:relative;width:auto;margin-left:0;}}", Title, "{opacity:1;margin-left:", designSystem.designTokens.spacing25, ";color:", designSystem.designTokens.colorSurface, ";transition:", oidc.NAVBAR.leftNavigationTransition, ";animation:", visible, " 150ms cubic-bezier(1, 0, 0.58, 1);}}.body__menu-open ", ItemContent, "{width:100%;}" + ("" ), "" );
183
+ const NavigationHeader = /*#__PURE__*/_styled__default["default"]("div", {
184
+ target: "e1meml8k6"
185
+ } )("background-color:", applicationComponents.designTokens.backgroundColorForNavbarHeader, ";color:", designSystem.designTokens.colorSurface, ";display:flex;justify-content:center;flex-direction:row;align-items:center;padding:", designSystem.designTokens.spacing30, ";" + ("" ));
186
+ const HeaderTitle = /*#__PURE__*/_styled__default["default"]("div", {
187
+ target: "e1meml8k5"
188
+ } )("font-weight:600;margin-left:", designSystem.designTokens.spacing20, ";transition:", oidc.NAVBAR.leftNavigationTransition, ";animation:", visible, " 150ms cubic-bezier(1, 0, 0.58, 1);" + ("" ));
189
+ const TooltipContainer = /*#__PURE__*/_styled__default["default"]("div", {
190
+ target: "e1meml8k4"
191
+ } )("position:absolute;left:0;display:flex;align-items:center;justify-content:flex-start;height:", oidc.NAVBAR.itemSize, ";visibility:visible;", props => props.alignsAgainstBottom ? 'bottom' : 'top', ":-", oidc.NAVBAR.itemSize, ";" + ("" ));
192
+ const Tooltip = /*#__PURE__*/_styled__default["default"]("div", {
193
+ target: "e1meml8k3"
194
+ } )("padding:", designSystem.designTokens.spacing10, " calc(", designSystem.designTokens.spacing20, " + ", designSystem.designTokens.spacing10, ");display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;border-radius:", designSystem.designTokens.borderRadius4, ";background:", designSystem.designTokens.colorAccent10, ";box-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.25);font-size:", designSystem.designTokens.fontSize20, ";line-height:", designSystem.designTokens.lineHeight20, ";font-weight:", designSystem.designTokens.fontWeight400, ";color:", designSystem.designTokens.colorSurface, ";max-height:", oidc.NAVBAR.itemSize, ";visibility:inherit;" + ("" ));
195
+ const TextLink = /*#__PURE__*/_styled__default["default"]("a", {
196
+ target: "e1meml8k2"
197
+ } )("color:", designSystem.designTokens.colorNeutral, ";text-decoration:none;display:flex;padding:", designSystem.designTokens.spacing25, ";align-items:center;justify-content:center;" + ("" ));
198
+ const SupportMenu = /*#__PURE__*/_styled__default["default"]("div", {
199
+ target: "e1meml8k1"
200
+ } )("padding:", designSystem.designTokens.spacing10, " ", designSystem.designTokens.spacing30, " ", designSystem.designTokens.spacing20, " ", designSystem.designTokens.spacing30, ";height:calc(", oidc.NAVBAR.itemSize, " + ", designSystem.designTokens.spacing20, ");" + ("" ));
201
+ const Text = /*#__PURE__*/_styled__default["default"]("div", {
202
+ target: "e1meml8k0"
203
+ } )("font-weight:", designSystem.designTokens.fontWeight400, ";font-size:", designSystem.designTokens.fontSize20, ";line-height:", designSystem.designTokens.lineHeight20, ";width:100%;height:100%;" + ("" ));
204
+ const getMenuItemLinkStyles = isSubmenuLink => [isSubmenuLink && /*#__PURE__*/react.css("display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;color:", designSystem.designTokens.colorSolid, ";font-weight:", designSystem.designTokens.fontWeight600, ";text-decoration:none;flex:1;padding:", designSystem.designTokens.spacing25, " ", designSystem.designTokens.spacing25, " ", designSystem.designTokens.spacing25, " ", designSystem.designTokens.spacing30, ";transition:padding 150ms ease-out;" + ("" ), "" ), !isSubmenuLink && /*#__PURE__*/react.css("color:", designSystem.designTokens.colorNeutral, ";text-decoration:none;display:flex;padding:", designSystem.designTokens.spacing25, ";align-items:center;justify-content:center;" + ("" ), "" )];
205
+
206
+ var messages = reactIntl.defineMessages({
207
+ 'NavBar.MCSupport.title': {
208
+ id: 'NavBar.MCSupport.title',
209
+ defaultMessage: 'Support'
210
+ },
211
+ 'NavBar.MenuExpander.collapseMenu': {
212
+ id: 'NavBar.MenuExpander.collapseMenu',
213
+ defaultMessage: 'Collapse menu'
214
+ },
215
+ 'NavBar.MenuExpander.expandMenu': {
216
+ id: 'NavBar.MenuExpander.expandMenu',
217
+ defaultMessage: 'Expand menu'
218
+ }
219
+ });
220
+
221
+ const _excluded = ["icon"],
222
+ _excluded2 = ["exactMatch"],
223
+ _excluded3 = ["permissions"];
224
+ function ownKeys$2(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
225
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context3, _context4; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context3 = ownKeys$2(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context4 = ownKeys$2(Object(t))).call(_context4, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
226
+ const HeartIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./heart-01f01038.cjs.prod.js'); }));
227
+ const PaperclipIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./paperclip-fe72a70d.cjs.prod.js'); }));
228
+ const PluginIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./plugin-81ae1044.cjs.prod.js'); }));
229
+ const RocketIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./rocket-cb99be06.cjs.prod.js'); }));
230
+ const StarIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./star-e4902bbb.cjs.prod.js'); }));
231
+ const ConnectedSquareIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./connected-square-2d046cb8.cjs.prod.js'); }));
232
+ const WorldIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./world-22189397.cjs.prod.js'); }));
233
+ const TreeStructureIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./tree-structure-3ec98cce.cjs.prod.js'); }));
234
+ const UserFilledIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./user-filled-26f333b2.cjs.prod.js'); }));
235
+ const SpeedometerIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./speedometer-26f52e73.cjs.prod.js'); }));
236
+ const TagMultiIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./tag-multi-1c065f61.cjs.prod.js'); }));
237
+ const CartIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./cart-645074db.cjs.prod.js'); }));
238
+ const BoxIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./box-09bf50e1.cjs.prod.js'); }));
239
+ const GearIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./gear-4f7cde98.cjs.prod.js'); }));
240
+ const ListWithSearchIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./list-with-search-6462447e.cjs.prod.js'); }));
241
+ // The icon is expected to be the `svg` document as a string.
242
+ // For backwards compatibility purposes, we still support the legacy "icon name",
243
+ // which we then map to one of the pre-defined icons.
244
+ // Eventually, we want to get rid of this "switch" logic.
245
+ const IconSwitcher = _ref => {
246
+ let icon = _ref.icon,
247
+ iconProps = _objectWithoutProperties(_ref, _excluded);
248
+ if (_includesInstanceProperty__default["default"](icon).call(icon, '<svg')) {
249
+ return jsxRuntime.jsx(InlineSvg__default["default"], _objectSpread$2({
250
+ data: icon
251
+ }, iconProps));
252
+ }
253
+ // Backwards compatibility for apps using the "icon name".
254
+ switch (icon) {
255
+ // Legacy application icons
256
+ // TODO: To be removed once MC applications icons updates are published
257
+ case 'TreeStructureIcon':
258
+ return jsxRuntime.jsx(TreeStructureIcon, _objectSpread$2({}, iconProps));
259
+ case 'UserFilledIcon':
260
+ return jsxRuntime.jsx(UserFilledIcon, _objectSpread$2({}, iconProps));
261
+ case 'SpeedometerIcon':
262
+ return jsxRuntime.jsx(SpeedometerIcon, _objectSpread$2({}, iconProps));
263
+ case 'TagMultiIcon':
264
+ return jsxRuntime.jsx(TagMultiIcon, _objectSpread$2({}, iconProps));
265
+ case 'CartIcon':
266
+ return jsxRuntime.jsx(CartIcon, _objectSpread$2({}, iconProps));
267
+ case 'BoxIcon':
268
+ return jsxRuntime.jsx(BoxIcon, _objectSpread$2({}, iconProps));
269
+ case 'GearIcon':
270
+ return jsxRuntime.jsx(GearIcon, _objectSpread$2({}, iconProps));
271
+ case 'ListWithSearchIcon':
272
+ return jsxRuntime.jsx(ListWithSearchIcon, _objectSpread$2({}, iconProps));
273
+
274
+ // Custom application icons set
275
+ case 'HeartIcon':
276
+ return jsxRuntime.jsx(HeartIcon, _objectSpread$2({}, iconProps));
277
+ case 'PaperclipIcon':
278
+ return jsxRuntime.jsx(PaperclipIcon, _objectSpread$2({}, iconProps));
279
+ case 'PluginIcon':
280
+ return jsxRuntime.jsx(PluginIcon, _objectSpread$2({}, iconProps));
281
+ case 'RocketIcon':
282
+ return jsxRuntime.jsx(RocketIcon, _objectSpread$2({}, iconProps));
283
+ case 'StarIcon':
284
+ return jsxRuntime.jsx(StarIcon, _objectSpread$2({}, iconProps));
285
+ case 'ConnectedSquareIcon':
286
+ return jsxRuntime.jsx(ConnectedSquareIcon, _objectSpread$2({}, iconProps));
287
+ // For backwards compatibility
288
+ case 'WorldIcon':
289
+ return jsxRuntime.jsx(WorldIcon, _objectSpread$2({}, iconProps));
290
+ default:
291
+ return jsxRuntime.jsx("img", {
292
+ src: MissingImageSvg__default["default"],
293
+ alt: "missing icon"
294
+ });
295
+ }
296
+ };
297
+ IconSwitcher.displayName = 'IconSwitcher';
298
+ const getIcon = _ref2 => {
299
+ let isMenuOpen = _ref2.isMenuOpen;
300
+ const Icon = isMenuOpen ? icons.SidebarCollapseIcon : icons.SidebarExpandIcon;
301
+ return jsxRuntime.jsx(Icon, {
302
+ color: "surface",
303
+ size: "big"
304
+ });
305
+ };
306
+ const MenuExpander = props => {
307
+ const _useIntl = reactIntl.useIntl(),
308
+ formatMessage = _useIntl.formatMessage;
309
+ return jsxRuntime.jsx(Expander, {
310
+ isVisible: props.isVisible,
311
+ role: "menuitem",
312
+ children: jsxRuntime.jsx(ExpanderIcon, {
313
+ onClick: props.onClick,
314
+ onKeyDown: e => {
315
+ if (e.key === 'Enter') {
316
+ props.onClick(e);
317
+ }
318
+ },
319
+ tabIndex: 0,
320
+ "data-testid": "menu-expander",
321
+ "aria-label": props.isMenuOpen ? formatMessage(messages['NavBar.MenuExpander.collapseMenu']) : formatMessage(messages['NavBar.MenuExpander.expandMenu']),
322
+ children: getIcon(props)
323
+ })
324
+ }, "expander");
325
+ };
326
+ MenuExpander.displayName = 'MenuExpander';
327
+ const MenuGroup = /*#__PURE__*/react$1.forwardRef((props, ref) => {
328
+ if (props.isExpanded && (props.level === 2 && !props.hasSubmenu || props.level === 2 && !props.isActive)) {
329
+ return null;
330
+ }
331
+ const isSublistActiveWhileIsMenuExpanded = Boolean(props.level === 2 && props.isActive && props.isExpanded);
332
+ const isSublistActiveWhileIsMenuCollapsed = Boolean(props.level === 2 && props.isActive && !props.isExpanded);
333
+ return jsxRuntime.jsx(MenuList, {
334
+ ref: ref && props.level === 2 ? ref : null,
335
+ level: props.level,
336
+ id: `group-${props.id}`,
337
+ "data-testid": `group-${props.id}`,
338
+ role: "menu",
339
+ onKeyDown: props.handleKeyDown,
340
+ className: classnames__default["default"]({
341
+ 'sublist-expanded__active': isSublistActiveWhileIsMenuExpanded
342
+ }, {
343
+ 'sublist-collapsed__empty': isSublistActiveWhileIsMenuCollapsed && !props.hasSubmenu
344
+ }, {
345
+ 'sublist-collapsed__active': isSublistActiveWhileIsMenuCollapsed && !props.isSubmenuAboveMenuItem
346
+ }, {
347
+ 'sublist-collapsed__active__above': isSublistActiveWhileIsMenuCollapsed && props.isSubmenuAboveMenuItem
348
+ }),
349
+ isSublistActiveWhileIsMenuExpanded: isSublistActiveWhileIsMenuExpanded,
350
+ isSublistActiveWhileIsMenuCollapsed: isSublistActiveWhileIsMenuCollapsed,
351
+ isSublistCollapsedAndActive: isSublistActiveWhileIsMenuCollapsed && !props.isSubmenuAboveMenuItem,
352
+ isSublistCollapsedAndActiveAndAbove: Boolean(isSublistActiveWhileIsMenuCollapsed && props.isSubmenuAboveMenuItem),
353
+ isSubmenuAboveMenuItem: props.isSubmenuAboveMenuItem,
354
+ submenuVerticalPosition: props.submenuVerticalPosition,
355
+ children: props.children
356
+ });
357
+ });
358
+ MenuGroup.displayName = 'MenuGroup';
359
+ const MenuItem$1 = props => {
360
+ return jsxRuntime.jsx(MenuListItem, {
361
+ role: "menuitem",
362
+ "aria-label": props.ariaLabel,
363
+ onClick: props.onClick,
364
+ onMouseEnter: props.onMouseEnter,
365
+ onMouseLeave: props.onMouseLeave,
366
+ onFocus: props.onMouseEnter,
367
+ onBlur: props.onMouseLeave,
368
+ onKeyDown: props.onKeyDown,
369
+ "data-menuitem": props.identifier,
370
+ className: classnames__default["default"]({
371
+ active: props.isActive
372
+ }),
373
+ isActive: props.isActive,
374
+ isRouteActive: Boolean(props.isMainMenuRouteActive),
375
+ isCollapsed: !props.isMenuOpen,
376
+ onMouseMove: props.onMouseMove,
377
+ children: jsxRuntime.jsx(ItemContent, {
378
+ children: props.children
379
+ })
380
+ });
381
+ };
382
+ MenuItem$1.displayName = 'MenuItem';
383
+ const NavLinkWrapper = props => {
384
+ const Wrapper = props.isSubmenuLink ? TextLinkSublistWrapper : react$1.Fragment;
385
+ return jsxRuntime.jsx(Wrapper, {
386
+ children: props.children
387
+ });
388
+ };
389
+ const NavLinkClickableContentWrapper = props => {
390
+ const Wrapper = props.isSubmenuLink ? NavlinkClickableContent : react$1.Fragment;
391
+ return jsxRuntime.jsx(Wrapper, {
392
+ children: props.children
393
+ });
394
+ };
395
+ const MenuItemLink = _ref3 => {
396
+ let _ref3$exactMatch = _ref3.exactMatch,
397
+ exactMatch = _ref3$exactMatch === void 0 ? false : _ref3$exactMatch,
398
+ props = _objectWithoutProperties(_ref3, _excluded2);
399
+ const redirectTo = targetUrl => location.location.replace(targetUrl);
400
+ if (props.linkTo) {
401
+ const linkLevel = props.isSubmenuLink ? 'text-link-sublist' : 'text-link';
402
+ return jsxRuntime.jsx(NavLinkWrapper, _objectSpread$2(_objectSpread$2({
403
+ exactMatch: exactMatch
404
+ }, props), {}, {
405
+ children: jsxRuntime.jsx(reactRouterDom.NavLink, {
406
+ to: props.linkTo,
407
+ exact: exactMatch,
408
+ activeClassName: "highlighted",
409
+ "data-link-level": linkLevel,
410
+ css: getMenuItemLinkStyles(Boolean(props.isSubmenuLink)),
411
+ tabIndex: props.isSubmenuLink && !props.isSubmenuFocused ? -1 : 0,
412
+ "aria-label": props.ariaLabel,
413
+ onClick: event => {
414
+ if (props.linkTo && props.useFullRedirectsForLinks) {
415
+ event.preventDefault();
416
+ redirectTo(props.linkTo);
417
+ } else if (props.onClick) {
418
+ event.persist();
419
+ props.onClick(event);
420
+ }
421
+ },
422
+ children: jsxRuntime.jsx(NavLinkClickableContentWrapper, _objectSpread$2(_objectSpread$2({
423
+ exactMatch: exactMatch
424
+ }, props), {}, {
425
+ children: props.children
426
+ }))
427
+ })
428
+ }));
429
+ }
430
+ return jsxRuntime.jsx(jsxRuntime.Fragment, {
431
+ children: props.children
432
+ });
433
+ };
434
+ MenuItemLink.displayName = 'MenuItemLink';
435
+ const isEveryMenuVisibilitySetToHidden = (menuVisibilities, namesOfMenuVisibilities) => _Array$isArray__default["default"](namesOfMenuVisibilities) && namesOfMenuVisibilities.length > 0 && _everyInstanceProperty__default["default"](namesOfMenuVisibilities).call(namesOfMenuVisibilities, nameOfMenuVisibility => menuVisibilities && menuVisibilities[nameOfMenuVisibility] === true);
436
+ function isLongLivedFlag(flag) {
437
+ return typeof flag?.value === 'boolean';
438
+ }
439
+ const RestrictedMenuItem = _ref4 => {
440
+ let _ref4$permissions = _ref4.permissions,
441
+ permissions$1 = _ref4$permissions === void 0 ? [] : _ref4$permissions,
442
+ props = _objectWithoutProperties(_ref4, _excluded3);
443
+ // NOTE: Custom application are activated/deactivated while their
444
+ // visibility is not controlled via a visibiility overwrite.
445
+ const flagVariation = reactBroadcast.useFlagVariation(props.featureToggle);
446
+ if (isEveryMenuVisibilitySetToHidden(props.menuVisibilities, props.namesOfMenuVisibilities)) return null;
447
+ const permissionsWrapper = _Array$isArray__default["default"](permissions$1) && permissions$1.length > 0 || _Array$isArray__default["default"](props.dataFences) && props.dataFences.length > 0 ? jsxRuntime.jsx(permissions.RestrictedByPermissions, {
448
+ permissions: permissions$1,
449
+ actionRights: props.actionRights,
450
+ dataFences: props.dataFences,
451
+ selectDataFenceData: demandedDataFence => {
452
+ switch (demandedDataFence.type) {
453
+ case 'store':
454
+ return demandedDataFence.actualDataFenceValues;
455
+ default:
456
+ return null;
457
+ }
458
+ }
459
+ // Always check that some of the given permissions match.
460
+ ,
461
+ shouldMatchSomePermissions: true,
462
+ projectPermissions: props.projectPermissions,
463
+ children: props.children
464
+ }) : jsxRuntime.jsx(jsxRuntime.Fragment, {
465
+ children: props.children
466
+ });
467
+ if (props.featureToggle) {
468
+ // A regular short-lived feature toggle
469
+ if (flagVariation === true) return permissionsWrapper;
470
+ // A long-lived feature toggle with `{ value: boolean, string: reason }`
471
+ if (isLongLivedFlag(flagVariation) && flagVariation.value === true) return permissionsWrapper;
472
+ return null;
473
+ }
474
+ return permissionsWrapper;
475
+ };
476
+ RestrictedMenuItem.displayName = 'RestrictedMenuItem';
477
+ const MenuLabel = props => {
478
+ var _context;
479
+ const localizedLabel = _findInstanceProperty__default["default"](_context = props.labelAllLocales).call(_context, loc => {
480
+ var _context2;
481
+ return _startsWithInstanceProperty__default["default"](_context2 = props.applicationLocale).call(_context2, loc.locale);
482
+ });
483
+ if (localizedLabel) return jsxRuntime.jsx(jsxRuntime.Fragment, {
484
+ children: localizedLabel.value
485
+ });
486
+ if (props.defaultLabel) return jsxRuntime.jsx(jsxRuntime.Fragment, {
487
+ children: props.defaultLabel
488
+ });
489
+ return jsxRuntime.jsx(jsxRuntime.Fragment, {
490
+ children: constants.NO_VALUE_FALLBACK
491
+ });
492
+ };
493
+ const NavBarLayout$1 = /*#__PURE__*/react$1.forwardRef((props, ref) => jsxRuntime.jsxs(jsxRuntime.Fragment, {
494
+ children: [jsxRuntime.jsx(react.Global, {
495
+ styles: leftNavigationOpenStyles
496
+ }), jsxRuntime.jsx(LeftNavigation, {
497
+ ref: ref,
498
+ "data-testid": "left-navigation",
499
+ children: props.children
500
+ })]
501
+ }));
502
+ NavBarLayout$1.displayName = 'NavBarLayout';
503
+ const ItemContainer = props => {
504
+ return jsxRuntime.jsxs(ItemIconText, {
505
+ children: [jsxRuntime.jsx(IconWrapper, {
506
+ children: jsxRuntime.jsx(Icon, {
507
+ className: "icon",
508
+ children: jsxRuntime.jsx(IconSwitcher, {
509
+ icon: props.icon,
510
+ size: "scale"
511
+ })
512
+ })
513
+ }), props.isMenuOpen ? jsxRuntime.jsx(Title, {
514
+ children: jsxRuntime.jsx(MenuLabel, {
515
+ labelAllLocales: props.labelAllLocales,
516
+ defaultLabel: props.defaultLabel,
517
+ applicationLocale: props.applicationLocale
518
+ })
519
+ }) : null]
520
+ });
521
+ };
522
+ ItemContainer.displayName = 'ItemContainer';
523
+
524
+ const NavBarLayout = props => {
525
+ return jsxRuntime.jsx("nav", {
526
+ "aria-busy": true,
527
+ css: /*#__PURE__*/react.css("display:flex;flex-direction:column;height:100%;width:", props.isExpanded ? '256px' : '80px', ";" + ("" ), "" ),
528
+ children: props.children
529
+ });
530
+ };
531
+ const NavBarHeader = /*#__PURE__*/_styled__default["default"]("div", {
532
+ target: "epfjvz37"
533
+ } )("display:flex;justify-content:center;align-items:center;padding:", designSystem.designTokens.spacing30, ";height:", oidc.DIMENSIONS.header, ";background:", applicationComponents.designTokens.backgroundColorForNavbarHeader, ";" + ("" ));
534
+ const NavBarBody = /*#__PURE__*/_styled__default["default"]("div", {
535
+ target: "epfjvz36"
536
+ } )("display:flex;flex:1;padding:", designSystem.designTokens.spacing30, ";flex-direction:column;align-items:flex-start;gap:", designSystem.designTokens.spacing40, ";flex-shrink:0;background:", designSystem.designTokens.colorPrimary10, ";position:relative;" + ("" ));
537
+ const NavBarFooter = /*#__PURE__*/_styled__default["default"]("div", {
538
+ target: "epfjvz35"
539
+ } )("position:relative;display:flex;width:100%;flex-direction:column;background:", designSystem.designTokens.colorPrimary10, ";padding:", designSystem.designTokens.spacing30, " ", props => props.isExpanded ? '58px' : '0px', ";justify-content:center;align-items:center;&::before{content:'';position:absolute;top:0;height:1px;width:calc(100% - 2 * ", designSystem.designTokens.spacing30, ");background:rgba(255, 255, 255, 0.5);}" + ("" ));
540
+ const ExpandIcon = /*#__PURE__*/_styled__default["default"]("div", {
541
+ target: "epfjvz34"
542
+ } )("width:40px;height:40px;border-radius:", designSystem.designTokens.borderRadius4, ";background:rgba(255, 255, 255, 0.2);" + ("" ));
543
+ const MenuItemContainer = /*#__PURE__*/_styled__default["default"]("div", {
544
+ target: "epfjvz33"
545
+ } )("display:flex;align-items:center;justify-content:center;gap:12px;padding:", props => props.contentWidth === 'wide' || !props.isExpanded ? '12px' : '12px 28px', ";height:48px;" + ("" ));
546
+ const MenuItemIcon = /*#__PURE__*/_styled__default["default"]("div", {
547
+ target: "epfjvz32"
548
+ } )("width:24px;height:24px;border-radius:", designSystem.designTokens.borderRadius4, ";background:rgba(255, 255, 255, 0.2);" + ("" ));
549
+ const MenuItemTitle = /*#__PURE__*/_styled__default["default"]("div", {
550
+ target: "epfjvz31"
551
+ } )("border-radius:", designSystem.designTokens.borderRadius4, ";background:rgba(255, 255, 255, 0.2);flex:1;height:18px;" + ("" ));
552
+ const MenuItemGroup = /*#__PURE__*/_styled__default["default"]("div", {
553
+ target: "epfjvz30"
554
+ } )({
555
+ name: "1d3w5wq",
556
+ styles: "width:100%"
557
+ } );
558
+
559
+ const MenuItem = props => {
560
+ return jsxRuntime.jsxs(MenuItemContainer, {
561
+ isExpanded: props.isExpanded,
562
+ contentWidth: props.contentWidth,
563
+ children: [jsxRuntime.jsx(MenuItemIcon, {}), props.isExpanded && jsxRuntime.jsx(MenuItemTitle, {})]
564
+ });
565
+ };
566
+ const NavBarSkeleton = props => {
567
+ var _context, _context2, _context3, _context4;
568
+ return jsxRuntime.jsxs(NavBarLayout, {
569
+ isExpanded: props.isExpanded,
570
+ children: [jsxRuntime.jsx(NavBarHeader, {
571
+ children: jsxRuntime.jsx(MenuItemGroup, {
572
+ children: jsxRuntime.jsx(MenuItem, {
573
+ contentWidth: "narrow",
574
+ isExpanded: props.isExpanded
575
+ })
576
+ })
577
+ }), jsxRuntime.jsxs(NavBarBody, {
578
+ children: [jsxRuntime.jsx(MenuItemGroup, {
579
+ children: _mapInstanceProperty__default["default"](_context = [..._keysInstanceProperty__default["default"](_context2 = Array(2)).call(_context2)]).call(_context, index => jsxRuntime.jsx(MenuItem, {
580
+ contentWidth: "wide",
581
+ isExpanded: props.isExpanded
582
+ }, index))
583
+ }), jsxRuntime.jsx(MenuItemGroup, {
584
+ children: _mapInstanceProperty__default["default"](_context3 = [..._keysInstanceProperty__default["default"](_context4 = Array(10)).call(_context4)]).call(_context3, index => jsxRuntime.jsx(MenuItem, {
585
+ contentWidth: "wide",
586
+ isExpanded: props.isExpanded
587
+ }, index))
588
+ }), jsxRuntime.jsx(MenuItemGroup, {
589
+ children: jsxRuntime.jsx(MenuItem, {
590
+ contentWidth: "wide",
591
+ isExpanded: props.isExpanded
592
+ })
593
+ })]
594
+ }), jsxRuntime.jsx(NavBarFooter, {
595
+ isExpanded: props.isExpanded,
596
+ children: jsxRuntime.jsx(ExpandIcon, {})
597
+ })]
598
+ });
599
+ };
600
+ NavBarSkeleton.displayName = 'NavBarSkeleton';
601
+
602
+ // Type guard to help with filtering arrays for nullish elements.
603
+ function nonNullable(value) {
604
+ return value !== null && value !== undefined;
605
+ }
606
+
607
+ function ownKeys$1(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
608
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var _context6, _context7; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context6 = ownKeys$1(Object(t), !0)).call(_context6, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context7 = ownKeys$1(Object(t))).call(_context7, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
609
+ var FetchProjectExtensionsNavbar = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "FetchProjectExtensionsNavbar" }, variableDefinitions: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "projectExtension" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "installedApplications" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "application" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "entryPointUriPath" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "icon" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "mainMenuLink" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "permissions" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "defaultLabel" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "labelAllLocales" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "locale" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }] } }, { kind: "Field", name: { kind: "Name", value: "submenuLinks" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "uriPath" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "permissions" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "defaultLabel" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "labelAllLocales" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "locale" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }] } }] } }] } }] } }] } }], loc: { start: 0, end: 537, source: { body: "query FetchProjectExtensionsNavbar {\n projectExtension {\n id\n installedApplications {\n application {\n id\n entryPointUriPath\n icon\n mainMenuLink {\n id\n permissions\n defaultLabel\n labelAllLocales {\n locale\n value\n }\n }\n submenuLinks {\n id\n uriPath\n permissions\n defaultLabel\n labelAllLocales {\n locale\n value\n }\n }\n }\n }\n }\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } };
610
+ const getInitialState = isForcedMenuOpen => ({
611
+ isExpanderVisible: true,
612
+ isMenuOpen: isNil__default["default"](isForcedMenuOpen) ? false : isForcedMenuOpen,
613
+ mousePosition: {
614
+ clientX: 0,
615
+ clientY: 0
616
+ }
617
+ });
618
+ const isForcedMenuOpenDefaultValue = false;
619
+ const reducer = (state, action) => {
620
+ switch (action.type) {
621
+ case 'setActiveItemIndex':
622
+ return _objectSpread$1(_objectSpread$1({}, state), {}, {
623
+ activeItemIndex: action.payload
624
+ });
625
+ case 'unsetActiveItemIndex':
626
+ return _objectSpread$1(_objectSpread$1({}, state), {}, {
627
+ activeItemIndex: undefined
628
+ });
629
+ case 'setIsExpanderVisible':
630
+ return _objectSpread$1(_objectSpread$1({}, state), {}, {
631
+ isExpanderVisible: true
632
+ });
633
+ case 'toggleIsMenuOpen':
634
+ return _objectSpread$1(_objectSpread$1({}, state), {}, {
635
+ isMenuOpen: !state.isMenuOpen
636
+ });
637
+ case 'setIsMenuOpenAndMakeExpanderVisible':
638
+ return _objectSpread$1(_objectSpread$1({}, state), {}, {
639
+ isExpanderVisible: true,
640
+ isMenuOpen: action.payload
641
+ });
642
+ case 'getMousePosition':
643
+ return _objectSpread$1(_objectSpread$1({}, state), {}, {
644
+ mousePosition: action.payload
645
+ });
646
+ case 'reset':
647
+ return {
648
+ isExpanderVisible: false,
649
+ isMenuOpen: false,
650
+ mousePosition: {
651
+ clientX: 0,
652
+ clientY: 0
653
+ }
654
+ };
655
+ default:
656
+ return state;
657
+ }
658
+ };
659
+ const isFocusOutEventCalledBySubmenuItem = event =>
660
+ // a case when a submenu item loses focus
661
+ event.type === 'focusout' &&
662
+ // element receiving focus
663
+ event.relatedTarget?.matches('a[data-link-level="text-link"]') &&
664
+ // element losing focus
665
+ event.target?.matches('a[data-link-level="text-link-sublist"]');
666
+ const useNavbarStateManager = props => {
667
+ var _context, _context2, _context4, _context5;
668
+ const navBarNode = react$1.useRef(null);
669
+ const applicationsNavBarMenuGroups = useApplicationsMenu.useApplicationsMenu('navBarGroups', {
670
+ environment: props.environment
671
+ });
672
+ const _useMcQuery = applicationShellConnectors.useMcQuery(FetchProjectExtensionsNavbar, {
673
+ skip: !props.project || !props.environment.servedByProxy,
674
+ context: {
675
+ target: constants.GRAPHQL_TARGETS.SETTINGS_SERVICE
676
+ },
677
+ fetchPolicy: 'cache-and-network'
678
+ }),
679
+ projectExtensionsQuery = _useMcQuery.data;
680
+ const allCustomApplicationsNavbarMenu = projectExtensionsQuery && projectExtensionsQuery.projectExtension && projectExtensionsQuery.projectExtension.installedApplications ? _filterInstanceProperty__default["default"](_context = _mapInstanceProperty__default["default"](_context2 = projectExtensionsQuery.projectExtension.installedApplications).call(_context2, installedApplication => {
681
+ var _context3;
682
+ const application = installedApplication.application;
683
+ // Map the menu properties to match the one from the proxy schema.
684
+ // This is to ensure that the menu object is the same from the proxy
685
+ // config and the custom apps config, thus allowing them to be
686
+ // concatenated and rendered the same way.
687
+ return {
688
+ key: application.id,
689
+ uriPath: application.entryPointUriPath,
690
+ labelAllLocales: application.mainMenuLink.labelAllLocales || [],
691
+ icon: application.icon,
692
+ permissions: application.mainMenuLink.permissions,
693
+ defaultLabel: application.mainMenuLink.defaultLabel,
694
+ featureToggle: undefined,
695
+ menuVisibility: undefined,
696
+ actionRights: undefined,
697
+ dataFences: undefined,
698
+ submenu: _mapInstanceProperty__default["default"](_context3 = application.submenuLinks || []).call(_context3, submenuLink => ({
699
+ key: submenuLink.id,
700
+ uriPath: submenuLink.uriPath,
701
+ labelAllLocales: submenuLink.labelAllLocales || [],
702
+ permissions: submenuLink.permissions,
703
+ defaultLabel: submenuLink.defaultLabel,
704
+ featureToggle: undefined,
705
+ menuVisibility: undefined,
706
+ actionRights: undefined,
707
+ dataFences: undefined
708
+ }))
709
+ };
710
+ })).call(_context, nonNullable) : [];
711
+ const cachedIsForcedMenuOpen = window.localStorage.getItem(constants.STORAGE_KEYS.IS_FORCED_MENU_OPEN);
712
+ const isForcedMenuOpen = isNil__default["default"](cachedIsForcedMenuOpen) ? isForcedMenuOpenDefaultValue : JSON.parse(cachedIsForcedMenuOpen);
713
+ if (isNil__default["default"](cachedIsForcedMenuOpen)) {
714
+ window.localStorage.setItem(constants.STORAGE_KEYS.IS_FORCED_MENU_OPEN, String(isForcedMenuOpen));
715
+ }
716
+ const _useReducer = react$1.useReducer(reducer, getInitialState(isForcedMenuOpen)),
717
+ _useReducer2 = _slicedToArray(_useReducer, 2),
718
+ state = _useReducer2[0],
719
+ dispatch = _useReducer2[1];
720
+ const checkSize = react$1.useCallback(throttle__default["default"](() => {
721
+ const shouldOpen = window.innerWidth > oidc.WINDOW_SIZES.STANDARD;
722
+ const canExpandMenu = window.innerWidth > oidc.WINDOW_SIZES.WIDE;
723
+
724
+ // If the screen is small, we should always keep the menu closed,
725
+ // no matter the settings.
726
+ if (!canExpandMenu) {
727
+ if (state.isMenuOpen || state.isExpanderVisible) {
728
+ // and resets the state to avoid conflicts
729
+ dispatch({
730
+ type: 'reset'
731
+ });
732
+ }
733
+ } else if (isForcedMenuOpen) {
734
+ dispatch({
735
+ type: 'setIsMenuOpenAndMakeExpanderVisible',
736
+ payload: true
737
+ });
738
+ } else if (canExpandMenu && state.isExpanderVisible !== true) {
739
+ dispatch({
740
+ type: 'setIsExpanderVisible'
741
+ });
742
+ } else if (isNil__default["default"](isForcedMenuOpen) && state.isMenuOpen !== shouldOpen) {
743
+ // User has no settings yet (this.props.isForcedMenuOpen === null)
744
+ // We check the viewport size and:
745
+ // - if screen is big, we open the menu
746
+ // - if screen is small we close it
747
+ dispatch({
748
+ type: 'setIsMenuOpenAndMakeExpanderVisible',
749
+ payload: shouldOpen
750
+ });
751
+ } else if (!isNil__default["default"](isForcedMenuOpen) && state.isMenuOpen !== isForcedMenuOpen) {
752
+ // User has setting, we should use that and ignore the screen size.
753
+ // Note: if viewport size is small, we should ignore the user settings.
754
+ dispatch({
755
+ type: 'setIsMenuOpenAndMakeExpanderVisible',
756
+ payload: isForcedMenuOpen
757
+ });
758
+ }
759
+ }, 100), [isForcedMenuOpen, state.isExpanderVisible, state.isMenuOpen]);
760
+ const shouldCloseMenuFly = react$1.useCallback(event => {
761
+ if (!navBarNode?.current?.contains(event.target) && !state.isMenuOpen) {
762
+ dispatch({
763
+ type: 'unsetActiveItemIndex'
764
+ });
765
+ } else if (event.type === 'mouseleave') {
766
+ dispatch({
767
+ type: 'unsetActiveItemIndex'
768
+ });
769
+ } else if (isFocusOutEventCalledBySubmenuItem(event)) {
770
+ dispatch({
771
+ type: 'unsetActiveItemIndex'
772
+ });
773
+ }
774
+ }, [state.isMenuOpen]);
775
+ react$1.useEffect(() => {
776
+ window.addEventListener('resize', checkSize);
777
+ window.addEventListener('click', shouldCloseMenuFly, true);
778
+ window.addEventListener('focusout', shouldCloseMenuFly, true);
779
+ return () => {
780
+ window.removeEventListener('resize', checkSize);
781
+ window.removeEventListener('click', shouldCloseMenuFly, true);
782
+ window.removeEventListener('focusout', shouldCloseMenuFly, true);
783
+ };
784
+ }, [checkSize, shouldCloseMenuFly]);
785
+ react$1.useEffect(() => {
786
+ checkSize();
787
+ // eslint-disable-next-line react-hooks/exhaustive-deps
788
+ }, []); // <-- run this only once!!
789
+
790
+ react$1.useLayoutEffect(() => {
791
+ if (state.isMenuOpen) document.body.classList.add('body__menu-open');
792
+ if (!state.isMenuOpen) document.body.classList.remove('body__menu-open');
793
+ }, [state.isMenuOpen]);
794
+ const handleToggleItem = react$1.useCallback(nextActiveItemIndex => {
795
+ if (state.activeItemIndex !== nextActiveItemIndex) dispatch({
796
+ type: 'setActiveItemIndex',
797
+ payload: nextActiveItemIndex
798
+ });
799
+ }, [state.activeItemIndex]);
800
+ const getMousePosition = react$1.useCallback((e, itemIndex) => {
801
+ if (state.activeItemIndex === itemIndex) {
802
+ dispatch({
803
+ type: 'getMousePosition',
804
+ payload: {
805
+ clientX: e.clientX,
806
+ clientY: e.clientY
807
+ }
808
+ });
809
+ }
810
+ }, [state.activeItemIndex]);
811
+ const handleToggleMenu = react$1.useCallback(() => {
812
+ if (state.isMenuOpen && state.activeItemIndex) {
813
+ dispatch({
814
+ type: 'unsetActiveItemIndex'
815
+ });
816
+ }
817
+ dispatch({
818
+ type: 'toggleIsMenuOpen'
819
+ });
820
+ // Synchronize the menu state with local storage.
821
+ window.localStorage.setItem(constants.STORAGE_KEYS.IS_FORCED_MENU_OPEN, String(!state.isMenuOpen));
822
+ }, [state.activeItemIndex, state.isMenuOpen]);
823
+ const allApplicationsNavbarMenuGroups = _sortInstanceProperty__default["default"](_context4 = _mapInstanceProperty__default["default"](_context5 = applicationsNavBarMenuGroups || []).call(_context5, navbarMenuGroup => navbarMenuGroup.key === '2' && allCustomApplicationsNavbarMenu.length > 0 ? {
824
+ key: navbarMenuGroup.key,
825
+ items: [...navbarMenuGroup.items, ...allCustomApplicationsNavbarMenu]
826
+ } : navbarMenuGroup)).call(_context4, (navBarMenuGroupA, navBarMenuGroupB) => Number(navBarMenuGroupA?.key) - Number(navBarMenuGroupB?.key));
827
+ return _objectSpread$1(_objectSpread$1({}, state), {}, {
828
+ navBarNode,
829
+ handleToggleItem,
830
+ handleToggleMenu,
831
+ shouldCloseMenuFly,
832
+ getMousePosition,
833
+ allApplicationsNavbarMenuGroups
834
+ });
835
+ };
836
+
837
+ function ownKeys(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
838
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context5, _context6; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context5 = ownKeys(Object(t), !0)).call(_context5, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context6 = ownKeys(Object(t))).call(_context6, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
839
+ // Helper function to extract accessible label from menu objects
840
+ const getMenuAccessibleLabel = (labelAllLocales, defaultLabel, applicationLocale) => {
841
+ const localizedLabel = _findInstanceProperty__default["default"](labelAllLocales).call(labelAllLocales, loc => _startsWithInstanceProperty__default["default"](applicationLocale).call(applicationLocale, loc.locale));
842
+ if (localizedLabel) return localizedLabel.value;
843
+ if (defaultLabel) return defaultLabel;
844
+ return constants.NO_VALUE_FALLBACK;
845
+ };
846
+ const getMenuVisibilitiesOfSubmenus = menu => {
847
+ var _context, _context2;
848
+ return _filterInstanceProperty__default["default"](_context = _mapInstanceProperty__default["default"](_context2 = menu.submenu).call(_context2, submenu => submenu.menuVisibility)).call(_context, nonNullable);
849
+ };
850
+ const getMenuVisibilityOfMainmenu = menu => menu.menuVisibility ? [menu.menuVisibility] : [];
851
+ const getIsSubmenuRouteActive = (uriPath, props) => Boolean(reactRouterDom.matchPath(props.location.pathname, {
852
+ path: `/${props.projectKey}/${uriPath}`,
853
+ exact: true,
854
+ strict: false
855
+ }));
856
+ const ApplicationMenu = props => {
857
+ var _context3;
858
+ const _useState = react$1.useState(0),
859
+ _useState2 = _slicedToArray(_useState, 2),
860
+ submenuVerticalPosition = _useState2[0],
861
+ setSubmenuVerticalPosition = _useState2[1];
862
+ const _useState3 = react$1.useState(false),
863
+ _useState4 = _slicedToArray(_useState3, 2),
864
+ isSubmenuAboveMenuItem = _useState4[0],
865
+ setIsSubmenuAboveMenuItem = _useState4[1];
866
+ const _useState5 = react$1.useState(false),
867
+ _useState6 = _slicedToArray(_useState5, 2),
868
+ isSubmenuFocused = _useState6[0],
869
+ setIsSubmenuFocused = _useState6[1];
870
+ const _useState7 = react$1.useState(0),
871
+ _useState8 = _slicedToArray(_useState7, 2),
872
+ percentageX = _useState8[0],
873
+ setPercentageX = _useState8[1];
874
+ const _useState9 = react$1.useState(0),
875
+ _useState0 = _slicedToArray(_useState9, 2),
876
+ percentageY = _useState0[0],
877
+ setPercentageY = _useState0[1];
878
+ const observerRef = react$1.useRef(null);
879
+ const submenuRef = react$1.useRef(null);
880
+ const submenuSafeAreaRef = react$1.useRef(null);
881
+ const hasSubmenu = _Array$isArray__default["default"](props.menu.submenu) && props.menu.submenu.length > 0;
882
+ const menuItemIdentifier = snakeCase__default["default"](props.menu.key);
883
+ const calculateSafeAreaStartPositon = react$1.useCallback(e => {
884
+ const currentSafeAreaRect = submenuSafeAreaRef.current?.getBoundingClientRect();
885
+ const menuItemRect = document.querySelector(`[data-menuitem="${menuItemIdentifier}"]`)?.getBoundingClientRect();
886
+ const currentSafeAreaLeft = currentSafeAreaRect?.left || 0;
887
+ const currentSafeAreaTop = currentSafeAreaRect?.top || 0;
888
+ const currentSafeAreaWidth = currentSafeAreaRect?.width || 0;
889
+ const currentSafeAreaHeight = currentSafeAreaRect?.height || 0;
890
+ const localX = e.clientX - currentSafeAreaLeft;
891
+ const localY = e.clientY - currentSafeAreaTop;
892
+ let minXPercent = 0;
893
+ if (menuItemRect && currentSafeAreaRect && currentSafeAreaWidth > 0) {
894
+ const minX = Math.max(menuItemRect.left - currentSafeAreaRect.left, 0);
895
+ minXPercent = minX / currentSafeAreaWidth * 100;
896
+ } else if (menuItemRect && currentSafeAreaRect && currentSafeAreaWidth === 0) {
897
+ // If safe area has no width but menu item exists, consider minXPercent to be 0
898
+ minXPercent = 0;
899
+ }
900
+
901
+ // Calculate nextX, ensuring not to divide by zero
902
+ let nextX = minXPercent;
903
+ if (currentSafeAreaWidth > 0) {
904
+ nextX = localX / currentSafeAreaWidth * 100;
905
+ }
906
+
907
+ // Calculate nextY, ensuring not to divide by zero
908
+ let nextY = 0;
909
+ if (currentSafeAreaHeight > 0) {
910
+ nextY = localY / currentSafeAreaHeight * 100;
911
+ }
912
+
913
+ // Clamp X to menu item's left border (minXPercent) and safe area bounds (100%)
914
+ nextX = Math.max(nextX, minXPercent);
915
+ nextX = Math.min(nextX, 100);
916
+ if (!_Number$isFinite__default["default"](nextX)) {
917
+ nextX = minXPercent;
918
+ }
919
+
920
+ // Clamp Y to safe area bounds (0% to 100%)
921
+ nextY = Math.min(Math.max(nextY, 0), 100);
922
+ if (!_Number$isFinite__default["default"](nextY)) {
923
+ nextY = 0;
924
+ }
925
+ setPercentageX(nextX);
926
+ setPercentageY(nextY);
927
+ }, [menuItemIdentifier, setPercentageX, setPercentageY]);
928
+ react$1.useEffect(() => {
929
+ window.addEventListener('mousemove', calculateSafeAreaStartPositon);
930
+ return () => {
931
+ window.removeEventListener('mousemove', calculateSafeAreaStartPositon);
932
+ };
933
+ }, [calculateSafeAreaStartPositon]);
934
+ react$1.useLayoutEffect(() => {
935
+ if (!submenuRef.current) return;
936
+ const safeX = _Number$isFinite__default["default"](percentageX) ? percentageX : 0;
937
+ const safeY = _Number$isFinite__default["default"](percentageY) ? percentageY : 100;
938
+ submenuRef.current.style.setProperty('--safe-start', `${safeX}% ${safeY}%`);
939
+ }, [percentageX, percentageY]);
940
+ const callbackFn = react$1.useCallback(entries => {
941
+ const menuItemBoundingClientRect = document.querySelector(`[data-menuitem="${menuItemIdentifier}"]`)?.getBoundingClientRect();
942
+ const menuItemTop = menuItemBoundingClientRect?.top || 0;
943
+ const menuItemBottom = menuItemBoundingClientRect?.bottom || 0;
944
+ const _entries = _slicedToArray(entries, 1),
945
+ entry = _entries[0];
946
+
947
+ /**
948
+ * Adding a 12 pixel buffer to the height calculation when determining if the submenu fits within the viewport below the menu item.
949
+ * This buffer accounts for the padding added during link hover, accommodating one additional line height.
950
+ * We need this to account for the additional card height when a hovered submenu text link wraps to the next line,
951
+ * as otherwise the submenu would extend beyond the viewport's bottom edge and flip above the menu item.
952
+ */
953
+ const SINGLE_LINE_HEIGHT_BUFFER = 12;
954
+ const doesSubmenuFitWithinViewportBelowMenuItem = entry.boundingClientRect.height + (props.isMenuOpen ? menuItemTop : menuItemBottom) + SINGLE_LINE_HEIGHT_BUFFER > window.innerHeight;
955
+ // if the submenu does not fit at the bottom of the viewport (below the menu item)
956
+ if (doesSubmenuFitWithinViewportBelowMenuItem) {
957
+ setIsSubmenuAboveMenuItem(true);
958
+ setSubmenuVerticalPosition(window.innerHeight - (props.isMenuOpen ? menuItemBottom : menuItemTop));
959
+ // show the submenu above the menu item
960
+ } else {
961
+ setIsSubmenuAboveMenuItem(false);
962
+ setSubmenuVerticalPosition(props.isMenuOpen ? menuItemTop : menuItemBottom);
963
+ }
964
+ }, [menuItemIdentifier, props.isMenuOpen]);
965
+ react$1.useLayoutEffect(() => {
966
+ observerRef.current = new IntersectionObserver(callbackFn, {
967
+ rootMargin: '-100% 0px 0px 0px' // we want to observe if the submenu crosses the bottom line of the viewport - therefore we set the root element top margin to -100% of the viewport height
968
+ });
969
+ return () => observerRef.current?.disconnect();
970
+ }, [callbackFn, props.isMenuOpen]);
971
+ react$1.useLayoutEffect(() => {
972
+ const currentSubmenuRef = submenuRef.current;
973
+ const observer = observerRef.current;
974
+ if (!currentSubmenuRef) return;
975
+ if (observer && currentSubmenuRef) {
976
+ observer.observe(currentSubmenuRef);
977
+ }
978
+ setIsSubmenuFocused(false);
979
+ return () => observer?.disconnect();
980
+ }, [menuItemIdentifier, props.isMenuOpen, props.handleToggleItem, callbackFn]);
981
+ const isMainMenuRouteActive = Boolean(reactRouterDom.matchPath(props.location.pathname, {
982
+ path: `/${props.projectKey}/${props.menu.uriPath}`,
983
+ exact: false,
984
+ strict: false
985
+ }));
986
+ react$1.useEffect(() => {
987
+ // On first render, check which menu is active for the current application and expand
988
+ // the submenu automatically unless the all navbar is collapsed or there are no submenu links.
989
+ if (props.isMenuOpen && isMainMenuRouteActive && hasSubmenu) {
990
+ props.handleToggleItem();
991
+ }
992
+ // eslint-disable-next-line react-hooks/exhaustive-deps
993
+ }, [props.isMenuOpen]); // <-- (re)run this only when the all menu expands
994
+
995
+ const namesOfMenuVisibilitiesOfAllSubmenus = hasSubmenu ? getMenuVisibilitiesOfSubmenus(props.menu) : getMenuVisibilityOfMainmenu(props.menu);
996
+ const handleKeyDown = e => {
997
+ const currentlyFocusedItem = submenuRef.current?.querySelector(':focus');
998
+ if (e.key === 'Enter') {
999
+ setIsSubmenuFocused(true);
1000
+ if (!currentlyFocusedItem) {
1001
+ submenuRef.current?.querySelector('a')?.focus();
1002
+ }
1003
+ }
1004
+ };
1005
+ return jsxRuntime.jsx(RestrictedMenuItem, {
1006
+ keyOfMenuItem: props.menu.key,
1007
+ featureToggle: props.menu.featureToggle ?? undefined,
1008
+ permissions: props.menu.permissions,
1009
+ actionRights: props.menu.actionRights ?? undefined,
1010
+ dataFences: props.menu.dataFences ?? undefined,
1011
+ projectPermissions: props.projectPermissions,
1012
+ menuVisibilities: props.menuVisibilities,
1013
+ namesOfMenuVisibilities: namesOfMenuVisibilitiesOfAllSubmenus,
1014
+ children: jsxRuntime.jsxs(MenuItem$1, {
1015
+ hasSubmenu: hasSubmenu,
1016
+ isActive: props.isActive,
1017
+ isMainMenuRouteActive: isMainMenuRouteActive,
1018
+ isMenuOpen: props.isMenuOpen,
1019
+ onClick: props.handleToggleItem,
1020
+ onKeyDown: handleKeyDown,
1021
+ onMouseEnter: props.handleToggleItem,
1022
+ onMouseLeave: props.shouldCloseMenuFly,
1023
+ onMouseMove: props.onMouseMove,
1024
+ identifier: menuItemIdentifier,
1025
+ ariaLabel: getMenuAccessibleLabel(props.menu.labelAllLocales, props.menu.defaultLabel, props.applicationLocale),
1026
+ children: [jsxRuntime.jsx(MenuItemLink, {
1027
+ linkTo: `/${props.projectKey}/${props.menu.uriPath}`,
1028
+ useFullRedirectsForLinks: props.useFullRedirectsForLinks,
1029
+ onClick: props.onMenuItemClick,
1030
+ ariaLabel: getMenuAccessibleLabel(props.menu.labelAllLocales, props.menu.defaultLabel, props.applicationLocale),
1031
+ children: jsxRuntime.jsx(ItemContainer, {
1032
+ labelAllLocales: props.menu.labelAllLocales,
1033
+ defaultLabel: props.menu.defaultLabel,
1034
+ applicationLocale: props.applicationLocale,
1035
+ icon: props.menu.icon,
1036
+ isMenuOpen: props.isMenuOpen
1037
+ })
1038
+ }), jsxRuntime.jsxs(MenuGroup, {
1039
+ id: `group-${props.menu.key}`,
1040
+ level: 2,
1041
+ isActive: props.isActive,
1042
+ isExpanded: props.isMenuOpen,
1043
+ hasSubmenu: hasSubmenu,
1044
+ submenuVerticalPosition: submenuVerticalPosition,
1045
+ isSubmenuAboveMenuItem: isSubmenuAboveMenuItem,
1046
+ ref: submenuRef,
1047
+ children: [!props.isMenuOpen && jsxRuntime.jsx(TooltipContainer, {
1048
+ alignsAgainstBottom: isSubmenuAboveMenuItem,
1049
+ children: jsxRuntime.jsx(Tooltip, {
1050
+ "aria-owns": `group-${props.menu.key}`,
1051
+ role: "tooltip",
1052
+ children: jsxRuntime.jsx(MenuLabel, {
1053
+ labelAllLocales: props.menu.labelAllLocales,
1054
+ defaultLabel: props.menu.defaultLabel,
1055
+ applicationLocale: props.applicationLocale
1056
+ })
1057
+ })
1058
+ }), hasSubmenu ? _mapInstanceProperty__default["default"](_context3 = props.menu.submenu).call(_context3, submenu => jsxRuntime.jsx(RestrictedMenuItem, {
1059
+ keyOfMenuItem: submenu.key,
1060
+ featureToggle: submenu.featureToggle ?? undefined,
1061
+ permissions: submenu.permissions,
1062
+ actionRights: submenu.actionRights ?? undefined,
1063
+ dataFences: submenu.dataFences ?? undefined,
1064
+ projectPermissions: props.projectPermissions,
1065
+ menuVisibilities: props.menuVisibilities,
1066
+ namesOfMenuVisibilities: submenu.menuVisibility ? [submenu.menuVisibility] : undefined,
1067
+ children: jsxRuntime.jsx(SublistItem, {
1068
+ isActive: getIsSubmenuRouteActive(submenu.uriPath, props),
1069
+ children: jsxRuntime.jsx(Text, {
1070
+ children: jsxRuntime.jsx(MenuItemLink, {
1071
+ linkTo: `/${props.projectKey}/${submenu.uriPath}`
1072
+ // We want to use an exact matching strategy to avoid multiple
1073
+ // links matching sub-routes.
1074
+ ,
1075
+ exactMatch: true,
1076
+ useFullRedirectsForLinks: props.useFullRedirectsForLinks,
1077
+ onClick: props.onMenuItemClick,
1078
+ isSubmenuLink: true,
1079
+ isSubmenuFocused: isSubmenuFocused,
1080
+ ariaLabel: getMenuAccessibleLabel(submenu.labelAllLocales, submenu.defaultLabel, props.applicationLocale),
1081
+ children: jsxRuntime.jsx(MenuLabel, {
1082
+ labelAllLocales: submenu.labelAllLocales,
1083
+ defaultLabel: submenu.defaultLabel,
1084
+ applicationLocale: props.applicationLocale
1085
+ })
1086
+ })
1087
+ })
1088
+ })
1089
+ }, `${props.menu.key}-submenu-${submenu.key}`)) : null, jsxRuntime.jsx(SafeArea, {
1090
+ ref: submenuSafeAreaRef
1091
+ })]
1092
+ })]
1093
+ })
1094
+ }, props.menu.key);
1095
+ };
1096
+ ApplicationMenu.displayName = 'ApplicationMenu';
1097
+ const NavBar = props => {
1098
+ const _useNavbarStateManage = useNavbarStateManager({
1099
+ environment: props.environment,
1100
+ project: props.project
1101
+ }),
1102
+ navBarNode = _useNavbarStateManage.navBarNode,
1103
+ isMenuOpen = _useNavbarStateManage.isMenuOpen,
1104
+ isExpanderVisible = _useNavbarStateManage.isExpanderVisible,
1105
+ activeItemIndex = _useNavbarStateManage.activeItemIndex,
1106
+ mousePosition = _useNavbarStateManage.mousePosition,
1107
+ handleToggleItem = _useNavbarStateManage.handleToggleItem,
1108
+ handleToggleMenu = _useNavbarStateManage.handleToggleMenu,
1109
+ shouldCloseMenuFly = _useNavbarStateManage.shouldCloseMenuFly,
1110
+ allApplicationsNavbarMenuGroups = _useNavbarStateManage.allApplicationsNavbarMenuGroups,
1111
+ getMousePosition = _useNavbarStateManage.getMousePosition;
1112
+ const useFullRedirectsForLinks = Boolean(props.environment.useFullRedirectsForLinks);
1113
+ const location = reactRouterDom.useLocation();
1114
+ const _useIntl = reactIntl.useIntl(),
1115
+ formatMessage = _useIntl.formatMessage;
1116
+ const projectPermissions = react$1.useMemo(() => ({
1117
+ permissions: applicationShellConnectors.normalizeAllAppliedPermissions(props.project?.allPermissionsForAllApplications.allAppliedPermissions),
1118
+ actionRights: applicationShellConnectors.normalizeAllAppliedActionRights(props.project?.allPermissionsForAllApplications.allAppliedActionRights),
1119
+ dataFences: applicationShellConnectors.normalizeAllAppliedDataFences(props.project?.allPermissionsForAllApplications.allAppliedDataFences)
1120
+ }), [props.project]);
1121
+ const menuVisibilities = react$1.useMemo(() => applicationShellConnectors.normalizeAllAppliedMenuVisibilities(props.project?.allPermissionsForAllApplications.allAppliedMenuVisibilities), [props.project]);
1122
+ const applicationLocale = props.applicationLocale;
1123
+
1124
+ // Render the loading navbar as long as all the data
1125
+ // hasn't been loaded, or if the project does not exist.
1126
+ if (props.isLoading || typeof applicationLocale === 'undefined') {
1127
+ return jsxRuntime.jsx(NavBarSkeleton, {
1128
+ isExpanded: isMenuOpen
1129
+ });
1130
+ }
1131
+ return jsxRuntime.jsxs(NavBarLayout$1, {
1132
+ ref: navBarNode,
1133
+ children: [jsxRuntime.jsxs(NavigationHeader, {
1134
+ children: [jsxRuntime.jsx(IconWrapper, {
1135
+ children: jsxRuntime.jsx(Icon, {
1136
+ children: jsxRuntime.jsx("img", {
1137
+ src: LogoSVG__default["default"],
1138
+ width: "100%",
1139
+ alt: "Logo"
1140
+ })
1141
+ })
1142
+ }), isMenuOpen ? jsxRuntime.jsx(HeaderTitle, {
1143
+ children: "Merchant Center"
1144
+ }) : null]
1145
+ }), jsxRuntime.jsxs(MenuGroup, {
1146
+ id: "main",
1147
+ level: 1,
1148
+ children: [jsxRuntime.jsx(ScrollableMenu, {
1149
+ children: jsxRuntime.jsx(Spacings__default["default"].Stack, {
1150
+ scale: "l",
1151
+ children: _mapInstanceProperty__default["default"](allApplicationsNavbarMenuGroups).call(allApplicationsNavbarMenuGroups, navbarMenuGroup => {
1152
+ var _context4;
1153
+ return jsxRuntime.jsx("div", {
1154
+ children: _mapInstanceProperty__default["default"](_context4 = navbarMenuGroup.items).call(_context4, menu => {
1155
+ const menuType = 'scrollable';
1156
+ const itemIndex = `${menuType}-${menu.key}`;
1157
+ return jsxRuntime.jsx(ApplicationMenu, {
1158
+ location: location,
1159
+ menu: menu,
1160
+ isActive: activeItemIndex === itemIndex,
1161
+ handleToggleItem: () => handleToggleItem(itemIndex),
1162
+ isMenuOpen: isMenuOpen,
1163
+ shouldCloseMenuFly: shouldCloseMenuFly,
1164
+ projectPermissions: projectPermissions,
1165
+ menuVisibilities: menuVisibilities,
1166
+ applicationLocale: applicationLocale,
1167
+ projectKey: props.projectKey,
1168
+ useFullRedirectsForLinks: useFullRedirectsForLinks,
1169
+ onMenuItemClick: props.onMenuItemClick,
1170
+ onMouseMove: e => getMousePosition(e, itemIndex),
1171
+ mousePosition: mousePosition
1172
+ }, menu.key);
1173
+ })
1174
+ }, navbarMenuGroup.key);
1175
+ })
1176
+ })
1177
+ }), jsxRuntime.jsxs(FixedMenu, {
1178
+ children: [jsxRuntime.jsx(SupportMenu, {
1179
+ children: jsxRuntime.jsxs(MenuItem$1, {
1180
+ hasSubmenu: false,
1181
+ isActive: false,
1182
+ isMenuOpen: isMenuOpen,
1183
+ onClick: () => {
1184
+ handleToggleItem('fixed-support');
1185
+ },
1186
+ onMouseEnter: isMenuOpen ? undefined : () => handleToggleItem('fixed-support'),
1187
+ onMouseLeave: isMenuOpen ? undefined : shouldCloseMenuFly,
1188
+ ariaLabel: formatMessage(messages['NavBar.MCSupport.title']),
1189
+ children: [!isMenuOpen && jsxRuntime.jsx(SupportMenuTooltipContainer, {
1190
+ children: jsxRuntime.jsx(Tooltip, {
1191
+ role: "tooltip",
1192
+ children: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread({}, messages['NavBar.MCSupport.title']))
1193
+ })
1194
+ }), jsxRuntime.jsx(TextLink, {
1195
+ href: constants.SUPPORT_PORTAL_URL,
1196
+ rel: "noopener noreferrer",
1197
+ target: "_blank",
1198
+ "aria-label": formatMessage(messages['NavBar.MCSupport.title']),
1199
+ children: jsxRuntime.jsxs(ItemIconText, {
1200
+ children: [jsxRuntime.jsx(IconWrapper, {
1201
+ children: jsxRuntime.jsx(Icon, {
1202
+ className: "icon",
1203
+ children: jsxRuntime.jsx(icons.SupportIcon, {
1204
+ size: "scale"
1205
+ })
1206
+ })
1207
+ }), isMenuOpen ? jsxRuntime.jsx(Title, {
1208
+ children: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread({}, messages['NavBar.MCSupport.title']))
1209
+ }) : null]
1210
+ })
1211
+ })]
1212
+ })
1213
+ }), jsxRuntime.jsx(MenuExpander, {
1214
+ isVisible: isExpanderVisible,
1215
+ onClick: handleToggleMenu,
1216
+ isMenuOpen: isMenuOpen
1217
+ })]
1218
+ })]
1219
+ })]
1220
+ });
1221
+ };
1222
+ NavBar.displayName = 'NavBar';
1223
+
1224
+ exports.ApplicationMenu = ApplicationMenu;
1225
+ exports["default"] = NavBar;