@commercetools-frontend/application-shell 0.0.0-FEC-157-preview-releases-20241126230331

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