@commercetools-frontend/application-shell 22.30.3 → 22.32.0

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 (96) hide show
  1. package/dist/{application-entry-point-2365588d.esm.js → application-entry-point-44f059a0.esm.js} +3 -3
  2. package/dist/{application-entry-point-257a1cbc.cjs.prod.js → application-entry-point-654951a6.cjs.prod.js} +2 -2
  3. package/dist/{application-entry-point-a403a123.cjs.dev.js → application-entry-point-c2f77f23.cjs.dev.js} +3 -3
  4. package/dist/commercetools-frontend-application-shell.cjs.dev.js +11 -5
  5. package/dist/commercetools-frontend-application-shell.cjs.prod.js +11 -5
  6. package/dist/commercetools-frontend-application-shell.esm.js +5 -5
  7. package/dist/{custom-view-dev-host-4e28e0f9.cjs.prod.js → custom-view-dev-host-50d585ab.cjs.prod.js} +12 -16
  8. package/dist/{custom-view-dev-host-e57a61c2.esm.js → custom-view-dev-host-8c058d60.esm.js} +12 -15
  9. package/dist/{custom-view-dev-host-2cc66e5d.cjs.dev.js → custom-view-dev-host-d7d6a676.cjs.dev.js} +12 -16
  10. package/dist/declarations/src/components/application-page-title/application-page-title.d.ts +16 -0
  11. package/dist/declarations/src/components/application-shell/application-shell.d.ts +17 -0
  12. package/dist/declarations/src/components/application-shell-authenticated/application-shell-authenticated.d.ts +4 -0
  13. package/dist/declarations/src/components/navbar/menu-items.d.ts +1 -0
  14. package/dist/declarations/src/components/navbar/menu-items.styles.d.ts +5 -1
  15. package/dist/declarations/src/components/navbar/navbar.d.ts +4 -0
  16. package/dist/declarations/src/components/navbar/use-navbar-state-manager.d.ts +6 -0
  17. package/dist/declarations/src/components/workspaces-navigation-button/index.d.ts +1 -0
  18. package/dist/declarations/src/components/workspaces-navigation-button/messages.d.ts +8 -0
  19. package/dist/declarations/src/components/workspaces-navigation-button/workspaces-navigation-button.d.ts +3 -0
  20. package/dist/declarations/src/configure-store.d.ts +3 -0
  21. package/dist/declarations/src/hooks/use-routes-creator/use-routes-creator.d.ts +3 -0
  22. package/dist/declarations/src/index.d.ts +16 -1
  23. package/dist/declarations/src/types/generated/ctp.d.ts +562 -0
  24. package/dist/declarations/src/types/generated/mc.d.ts +5 -0
  25. package/dist/declarations/src/types/generated/proxy.d.ts +3 -0
  26. package/dist/declarations/src/types/generated/settings.d.ts +22 -0
  27. package/dist/declarations/src/utils/get-mc-origin/get-mc-origin.d.ts +16 -0
  28. package/dist/{index-01054d41.esm.js → index-30d34b7f.esm.js} +185 -154
  29. package/dist/{index-986cb2e3.cjs.prod.js → index-312ee159.cjs.prod.js} +175 -144
  30. package/dist/{index-9ad54c23.cjs.dev.js → index-89389085.cjs.dev.js} +190 -153
  31. package/dist/{index-055ebc13.cjs.prod.js → index-91985d64.cjs.prod.js} +2 -2
  32. package/dist/{index-ca730730.cjs.dev.js → index-b1476d46.cjs.dev.js} +2 -2
  33. package/dist/{index-4e5248df.esm.js → index-b6081c20.esm.js} +2 -2
  34. package/dist/navbar-3b9c6b6b.esm.js +1394 -0
  35. package/dist/{navbar-ced649a9.cjs.prod.js → navbar-9da45ea7.cjs.prod.js} +172 -111
  36. package/dist/navbar-b18bb556.cjs.dev.js +1426 -0
  37. package/dist/oidc-6c6599a2.cjs.dev.js +98 -0
  38. package/dist/oidc-8275c04f.esm.js +84 -0
  39. package/dist/{oidc-callback-64f9a790.cjs.prod.js → oidc-callback-0e597d85.cjs.prod.js} +11 -12
  40. package/dist/{oidc-callback-bc478925.esm.js → oidc-callback-427bb1fe.esm.js} +11 -12
  41. package/dist/{oidc-callback-651f63e0.cjs.dev.js → oidc-callback-cb22ccb9.cjs.dev.js} +11 -12
  42. package/dist/oidc-d02d4ab8.cjs.prod.js +98 -0
  43. package/dist/{project-container-7b970853.cjs.prod.js → project-container-8ea3157d.cjs.prod.js} +14 -16
  44. package/dist/{project-container-7f10329f.cjs.dev.js → project-container-a3583d97.cjs.dev.js} +14 -16
  45. package/dist/{project-container-e9061cf4.esm.js → project-container-e40ef9d5.esm.js} +14 -16
  46. package/dist/{project-expired-7b154842.cjs.dev.js → project-expired-5fcc5f07.cjs.dev.js} +8 -8
  47. package/dist/{project-expired-1cb50976.esm.js → project-expired-d577ae18.esm.js} +8 -8
  48. package/dist/{project-expired-08aee9c1.cjs.prod.js → project-expired-dfccc21f.cjs.prod.js} +8 -8
  49. package/dist/{project-not-found-d1bc7cf2.cjs.prod.js → project-not-found-2278758f.cjs.prod.js} +7 -7
  50. package/dist/{project-not-found-1b3a3444.cjs.dev.js → project-not-found-4604d59d.cjs.dev.js} +7 -7
  51. package/dist/{project-not-found-3dc52680.esm.js → project-not-found-fd3a1f58.esm.js} +7 -7
  52. package/dist/{project-not-initialized-3ca17563.esm.js → project-not-initialized-b34c95c9.esm.js} +8 -8
  53. package/dist/{project-not-initialized-f314f99a.cjs.prod.js → project-not-initialized-cb1d4d19.cjs.prod.js} +8 -8
  54. package/dist/{project-not-initialized-72ca9efb.cjs.dev.js → project-not-initialized-d85c316d.cjs.dev.js} +8 -8
  55. package/dist/{project-suspended-944c20e8.esm.js → project-suspended-56e0ee3b.esm.js} +7 -7
  56. package/dist/{project-suspended-f767d4f0.cjs.dev.js → project-suspended-5e490e56.cjs.dev.js} +7 -7
  57. package/dist/{project-suspended-c5ae709a.cjs.prod.js → project-suspended-ec44d7fc.cjs.prod.js} +7 -7
  58. package/dist/{quick-access-ee9ef366.cjs.dev.js → quick-access-809ff4ff.cjs.dev.js} +204 -133
  59. package/dist/{quick-access-30cee256.esm.js → quick-access-a19e4dc0.esm.js} +204 -132
  60. package/dist/{quick-access-c4f74cba.cjs.prod.js → quick-access-cbb7a118.cjs.prod.js} +204 -133
  61. package/dist/{redirect-to-login-3ebce35d.cjs.dev.js → redirect-to-login-32ebe009.cjs.dev.js} +10 -13
  62. package/dist/{redirect-to-login-3c5a3f4a.cjs.prod.js → redirect-to-login-60a00442.cjs.prod.js} +10 -13
  63. package/dist/{redirect-to-login-af9860c8.esm.js → redirect-to-login-b69fb5ce.esm.js} +10 -13
  64. package/dist/{redirect-to-logout-e365ba72.cjs.prod.js → redirect-to-logout-1ffebbfe.cjs.prod.js} +9 -10
  65. package/dist/{redirect-to-logout-fff4cb7c.cjs.dev.js → redirect-to-logout-371cc9b1.cjs.dev.js} +9 -10
  66. package/dist/{redirect-to-logout-f3172701.esm.js → redirect-to-logout-7b502bb5.esm.js} +9 -10
  67. package/dist/{redirector-0a16c1d1.cjs.prod.js → redirector-01f35da8.cjs.prod.js} +3 -4
  68. package/dist/{redirector-d2fd2b5e.esm.js → redirector-76670a54.esm.js} +3 -4
  69. package/dist/{redirector-e58b9bc3.cjs.dev.js → redirector-98dfc5f0.cjs.dev.js} +3 -4
  70. package/dist/{requests-in-flight-loader-171a2177.cjs.prod.js → requests-in-flight-loader-49463178.cjs.prod.js} +7 -7
  71. package/dist/{requests-in-flight-loader-dd3f8cbb.cjs.dev.js → requests-in-flight-loader-7d5f946c.cjs.dev.js} +7 -7
  72. package/dist/{requests-in-flight-loader-acb4dbaa.esm.js → requests-in-flight-loader-e45b9001.esm.js} +7 -7
  73. package/dist/{service-page-project-switcher-6c523761.cjs.dev.js → service-page-project-switcher-679fa3be.cjs.dev.js} +1 -1
  74. package/dist/{service-page-project-switcher-65755fa9.esm.js → service-page-project-switcher-9bebaaa0.esm.js} +1 -1
  75. package/dist/{service-page-project-switcher-2b3f4d1d.cjs.prod.js → service-page-project-switcher-d3bc9ef6.cjs.prod.js} +1 -1
  76. package/dist/{use-applications-menu-2fe3d465.cjs.dev.js → use-applications-menu-222b9106.cjs.prod.js} +40 -49
  77. package/dist/{use-applications-menu-0d3f4ffc.cjs.prod.js → use-applications-menu-302a0ac8.cjs.dev.js} +40 -49
  78. package/dist/{use-applications-menu-03759eab.esm.js → use-applications-menu-b583e9c3.esm.js} +38 -46
  79. package/dist/{user-settings-menu-bbc43c88.cjs.dev.js → user-settings-menu-7c17f227.cjs.dev.js} +22 -29
  80. package/dist/{user-settings-menu-3f86267c.cjs.prod.js → user-settings-menu-8bba9f50.cjs.prod.js} +22 -29
  81. package/dist/{user-settings-menu-36bea559.esm.js → user-settings-menu-ff4a6c63.esm.js} +22 -29
  82. package/dist/{version-tracker-2ce61357.esm.js → version-tracker-58df65c0.esm.js} +6 -6
  83. package/dist/{version-tracker-ab883166.cjs.dev.js → version-tracker-66d5d210.cjs.dev.js} +6 -6
  84. package/dist/{version-tracker-b049fca7.cjs.prod.js → version-tracker-a984dbbe.cjs.prod.js} +6 -6
  85. package/package.json +17 -16
  86. package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.dev.js +1 -2
  87. package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.prod.js +1 -2
  88. package/ssr/dist/commercetools-frontend-application-shell-ssr.esm.js +1 -2
  89. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.dev.js +21 -26
  90. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.prod.js +21 -26
  91. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.esm.js +16 -20
  92. package/dist/navbar-e3ee2a76.esm.js +0 -1325
  93. package/dist/navbar-f981de75.cjs.dev.js +0 -1358
  94. package/dist/oidc-63e926e1.cjs.dev.js +0 -115
  95. package/dist/oidc-cfa56c46.cjs.prod.js +0 -115
  96. package/dist/oidc-ff53dfd3.esm.js +0 -100
@@ -5,7 +5,6 @@ var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
5
5
  var _pt = require('prop-types');
6
6
  var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
7
7
  var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
8
- var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
9
8
  var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
10
9
  var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
11
10
  var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
@@ -23,12 +22,11 @@ var LogoSVG = require('@commercetools-frontend/assets/logos/commercetools_small-
23
22
  var constants = require('@commercetools-frontend/constants');
24
23
  var icons = require('@commercetools-uikit/icons');
25
24
  var Spacings = require('@commercetools-uikit/spacings');
26
- var _taggedTemplateLiteral = require('@babel/runtime-corejs3/helpers/taggedTemplateLiteral');
27
25
  var _styled = require('@emotion/styled/base');
28
26
  var react = require('@emotion/react');
29
27
  var applicationComponents = require('@commercetools-frontend/application-components');
30
28
  var designSystem = require('@commercetools-uikit/design-system');
31
- var oidc = require('./oidc-cfa56c46.cjs.prod.js');
29
+ var oidc = require('./oidc-d02d4ab8.cjs.prod.js');
32
30
  var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
33
31
  var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
34
32
  var _everyInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/every');
@@ -46,7 +44,7 @@ var _sortInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/insta
46
44
  var isNil = require('lodash/isNil');
47
45
  var throttle = require('lodash/throttle');
48
46
  var sentry = require('@commercetools-frontend/sentry');
49
- var useApplicationsMenu = require('./use-applications-menu-0d3f4ffc.cjs.prod.js');
47
+ var useApplicationsMenu = require('./use-applications-menu-222b9106.cjs.prod.js');
50
48
  require('@apollo/client');
51
49
  require('@commercetools-frontend/l10n');
52
50
 
@@ -55,7 +53,6 @@ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e };
55
53
  var _pt__default = /*#__PURE__*/_interopDefault(_pt);
56
54
  var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
57
55
  var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
58
- var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
59
56
  var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
60
57
  var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
61
58
  var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
@@ -109,27 +106,31 @@ var _ref5 = {
109
106
  styles: "bottom:0"
110
107
  } ;
111
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
+ `;
112
113
  var _ref3 = {
113
114
  name: "eivff4",
114
115
  styles: "display:none"
115
116
  } ;
116
117
  const Expander = /*#__PURE__*/_styled__default["default"]("li", {
117
- target: "e1i568cv7"
118
+ target: "e1i568cv8"
118
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, ");}" + ("" ));
119
120
  const ExpanderIcon = /*#__PURE__*/_styled__default["default"]("div", {
120
- target: "e1i568cv6"
121
+ target: "e1i568cv7"
121
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;}" + ("" ));
122
123
  const LeftNavigation = /*#__PURE__*/_styled__default["default"]("nav", {
123
- target: "e1i568cv5"
124
+ target: "e1i568cv6"
124
125
  } )("display:grid;width:", oidc.NAVBAR.widthLeftNavigation, ";background:", applicationComponents.designTokens.backgroundColorForNavbar, ";height:100%;grid-template-rows:56px 1fr;transition:", oidc.NAVBAR.leftNavigationTransition, ";" + ("" ));
125
126
  const TextLinkSublistWrapper = /*#__PURE__*/_styled__default["default"]("div", {
126
- target: "e1i568cv4"
127
+ target: "e1i568cv5"
127
128
  } )({
128
129
  name: "khglpi",
129
130
  styles: "display:flex;flex-direction:column;position:relative;min-height:0"
130
131
  } );
131
132
  const NavlinkClickableContent = /*#__PURE__*/_styled__default["default"]("div", {
132
- target: "e1i568cv3"
133
+ target: "e1i568cv4"
133
134
  } )({
134
135
  name: "1kzq5ms",
135
136
  styles: "height:100%;width:100%"
@@ -144,23 +145,32 @@ var _ref2 = {
144
145
  styles: "visibility:hidden"
145
146
  } ;
146
147
  const MenuList = /*#__PURE__*/_styled__default["default"]("ul", {
147
- target: "e1i568cv2"
148
+ target: "e1i568cv3"
148
149
  } )(props => [props.level === 1 && listStyles, getSubmenuPositionBasedOnMenuItemPosition(props.isSubmenuAboveMenuItem, props.submenuVerticalPosition), props.level === 2 && sublistStyles,
149
150
  // prevent glitchy behavior during the initial render when the submenu's vertical position is evaluated as 0
150
- props.submenuVerticalPosition === 0 && _ref2, (props.isSublistActiveWhileIsMenuExpanded || props.isSublistCollapsedAndActive || props.isSublistCollapsedAndActiveAndAbove) && /*#__PURE__*/react.css("opacity:1;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, ";}" + ("" ));
151
+ 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, ";}" + ("" ));
151
152
  const SublistItem = /*#__PURE__*/_styled__default["default"]("li", {
152
- target: "e1i568cv1"
153
+ target: "e1i568cv2"
153
154
  } )("display:flex;align-items:center;align-self:stretch;", props => [props.isActive && /*#__PURE__*/react.css("border-radius:", designSystem.designTokens.borderRadius4, ";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']{padding:", designSystem.designTokens.spacing25, " ", designSystem.designTokens.spacing25, " ", designSystem.designTokens.spacing25, " calc(\n ", designSystem.designTokens.spacing30, " + ", designSystem.designTokens.spacing20, "\n );}}" + ("" ), "" )], ";" + ("" ));
154
155
  var _ref = {
155
156
  name: "1azakc",
156
157
  styles: "text-align:center"
157
158
  } ;
158
159
  const MenuListItem = /*#__PURE__*/_styled__default["default"]("li", {
160
+ target: "e1i568cv1"
161
+ } )("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, ";}" + ("" ));
162
+ const SafeArea = /*#__PURE__*/_styled__default["default"]("span", {
159
163
  target: "e1i568cv0"
160
- } )("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{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, ";}" + ("" ));
164
+ } )("position:absolute;top:0;bottom:0;right:100%;width:calc(100% - ", designSystem.designTokens.spacing30, ");clip-path:polygon(var(--safe-start), 100% 100%, 100% 0);" + ("" ));
161
165
 
162
- var _templateObject;
163
- const visible = react.keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n"])));
166
+ const visible = react.keyframes`
167
+ from {
168
+ opacity: 0;
169
+ }
170
+ to {
171
+ opacity: 1;
172
+ }
173
+ `;
164
174
  const FixedMenu = /*#__PURE__*/_styled__default["default"]("div", {
165
175
  target: "e1meml8k10"
166
176
  } )("position:relative;width:", oidc.NAVBAR.widthLeftNavigation, ";", MenuListItem, " ", ItemIconText, "{justify-content:center;display:flex;width:100%;}" + ("" ));
@@ -308,8 +318,8 @@ const MenuGroup = /*#__PURE__*/react$1.forwardRef((props, ref) => {
308
318
  return jsxRuntime.jsx(MenuList, {
309
319
  ref: ref && props.level === 2 ? ref : null,
310
320
  level: props.level,
311
- id: "group-".concat(props.id),
312
- "data-testid": "group-".concat(props.id),
321
+ id: `group-${props.id}`,
322
+ "data-testid": `group-${props.id}`,
313
323
  role: "menu",
314
324
  "aria-expanded": isSublistActiveWhileIsMenuExpanded || isSublistActiveWhileIsMenuCollapsed,
315
325
  onKeyDown: props.handleKeyDown,
@@ -348,6 +358,7 @@ const MenuItem$1 = props => {
348
358
  isActive: props.isActive,
349
359
  isRouteActive: Boolean(props.isMainMenuRouteActive),
350
360
  isCollapsed: !props.isMenuOpen,
361
+ onMouseMove: props.onMouseMove,
351
362
  children: jsxRuntime.jsx(ItemContent, {
352
363
  children: props.children
353
364
  })
@@ -411,7 +422,7 @@ const restrictedMenuItemDefaultProps = {
411
422
  permissions: []
412
423
  };
413
424
  function isLongLivedFlag(flag) {
414
- return typeof (flag === null || flag === void 0 ? void 0 : flag.value) === 'boolean';
425
+ return typeof flag?.value === 'boolean';
415
426
  }
416
427
  const RestrictedMenuItem = props => {
417
428
  // NOTE: Custom application are activated/deactivated while their
@@ -599,7 +610,11 @@ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var _
599
610
  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 } } } };
600
611
  const getInitialState = isForcedMenuOpen => ({
601
612
  isExpanderVisible: true,
602
- isMenuOpen: isNil__default["default"](isForcedMenuOpen) ? false : isForcedMenuOpen
613
+ isMenuOpen: isNil__default["default"](isForcedMenuOpen) ? false : isForcedMenuOpen,
614
+ mousePosition: {
615
+ clientX: 0,
616
+ clientY: 0
617
+ }
603
618
  });
604
619
  const isForcedMenuOpenDefaultValue = false;
605
620
  const reducer = (state, action) => {
@@ -625,24 +640,30 @@ const reducer = (state, action) => {
625
640
  isExpanderVisible: true,
626
641
  isMenuOpen: action.payload
627
642
  });
643
+ case 'getMousePosition':
644
+ return _objectSpread$1(_objectSpread$1({}, state), {}, {
645
+ mousePosition: action.payload
646
+ });
628
647
  case 'reset':
629
648
  return {
630
649
  isExpanderVisible: false,
631
- isMenuOpen: false
650
+ isMenuOpen: false,
651
+ mousePosition: {
652
+ clientX: 0,
653
+ clientY: 0
654
+ }
632
655
  };
633
656
  default:
634
657
  return state;
635
658
  }
636
659
  };
637
- const isFocusOutEventCalledBySubmenuItem = event => {
638
- var _event$relatedTarget, _event$target;
639
- return (
640
- // a case when a submenu item loses focus
641
- event.type === 'focusout' && ( // element receiving focus
642
- (_event$relatedTarget = event.relatedTarget) === null || _event$relatedTarget === void 0 ? void 0 : _event$relatedTarget.matches('a[data-link-level="text-link"]')) && ( // element losing focus
643
- (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.matches('a[data-link-level="text-link-sublist"]'))
644
- );
645
- };
660
+ const isFocusOutEventCalledBySubmenuItem = event =>
661
+ // a case when a submenu item loses focus
662
+ event.type === 'focusout' &&
663
+ // element receiving focus
664
+ event.relatedTarget?.matches('a[data-link-level="text-link"]') &&
665
+ // element losing focus
666
+ event.target?.matches('a[data-link-level="text-link-sublist"]');
646
667
  const useNavbarStateManager = props => {
647
668
  var _context, _context2, _context4, _context5;
648
669
  const navBarNode = react$1.useRef(null);
@@ -742,8 +763,7 @@ const useNavbarStateManager = props => {
742
763
  }
743
764
  }, 100), [isForcedMenuOpen, state.isExpanderVisible, state.isMenuOpen]);
744
765
  const shouldCloseMenuFly = react$1.useCallback(event => {
745
- var _navBarNode$current;
746
- if (!(navBarNode !== null && navBarNode !== void 0 && (_navBarNode$current = navBarNode.current) !== null && _navBarNode$current !== void 0 && _navBarNode$current.contains(event.target)) && !state.isMenuOpen) {
766
+ if (!navBarNode?.current?.contains(event.target) && !state.isMenuOpen) {
747
767
  dispatch({
748
768
  type: 'unsetActiveItemIndex'
749
769
  });
@@ -782,6 +802,17 @@ const useNavbarStateManager = props => {
782
802
  payload: nextActiveItemIndex
783
803
  });
784
804
  }, [state.activeItemIndex]);
805
+ const getMousePosition = react$1.useCallback((e, itemIndex) => {
806
+ if (state.activeItemIndex === itemIndex) {
807
+ dispatch({
808
+ type: 'getMousePosition',
809
+ payload: {
810
+ clientX: e.clientX,
811
+ clientY: e.clientY
812
+ }
813
+ });
814
+ }
815
+ }, [state.activeItemIndex]);
785
816
  const handleToggleMenu = react$1.useCallback(() => {
786
817
  if (state.isMenuOpen && state.activeItemIndex) {
787
818
  dispatch({
@@ -797,33 +828,31 @@ const useNavbarStateManager = props => {
797
828
  const allApplicationsNavbarMenuGroups = _sortInstanceProperty__default["default"](_context4 = _mapInstanceProperty__default["default"](_context5 = applicationsNavBarMenuGroups || []).call(_context5, navbarMenuGroup => navbarMenuGroup.key === '2' && allCustomApplicationsNavbarMenu.length > 0 ? {
798
829
  key: navbarMenuGroup.key,
799
830
  items: [...navbarMenuGroup.items, ...allCustomApplicationsNavbarMenu]
800
- } : navbarMenuGroup)).call(_context4, (navBarMenuGroupA, navBarMenuGroupB) => Number(navBarMenuGroupA === null || navBarMenuGroupA === void 0 ? void 0 : navBarMenuGroupA.key) - Number(navBarMenuGroupB === null || navBarMenuGroupB === void 0 ? void 0 : navBarMenuGroupB.key));
831
+ } : navbarMenuGroup)).call(_context4, (navBarMenuGroupA, navBarMenuGroupB) => Number(navBarMenuGroupA?.key) - Number(navBarMenuGroupB?.key));
801
832
  return _objectSpread$1(_objectSpread$1({}, state), {}, {
802
833
  navBarNode,
803
834
  handleToggleItem,
804
835
  handleToggleMenu,
805
836
  shouldCloseMenuFly,
837
+ getMousePosition,
806
838
  allApplicationsNavbarMenuGroups
807
839
  });
808
840
  };
809
841
 
810
842
  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; }
811
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context10, _context11; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context10 = ownKeys(Object(t), !0)).call(_context10, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context11 = ownKeys(Object(t))).call(_context11, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
843
+ 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; }
812
844
  const getMenuVisibilitiesOfSubmenus = menu => {
813
845
  var _context, _context2;
814
846
  return _filterInstanceProperty__default["default"](_context = _mapInstanceProperty__default["default"](_context2 = menu.submenu).call(_context2, submenu => submenu.menuVisibility)).call(_context, nonNullable);
815
847
  };
816
848
  const getMenuVisibilityOfMainmenu = menu => menu.menuVisibility ? [menu.menuVisibility] : [];
817
- const getIsSubmenuRouteActive = (uriPath, props) => {
818
- var _context3;
819
- return Boolean(reactRouterDom.matchPath(props.location.pathname, {
820
- path: _concatInstanceProperty__default["default"](_context3 = "/".concat(props.projectKey, "/")).call(_context3, uriPath),
821
- exact: true,
822
- strict: false
823
- }));
824
- };
849
+ const getIsSubmenuRouteActive = (uriPath, props) => Boolean(reactRouterDom.matchPath(props.location.pathname, {
850
+ path: `/${props.projectKey}/${uriPath}`,
851
+ exact: true,
852
+ strict: false
853
+ }));
825
854
  const ApplicationMenu = props => {
826
- var _context4, _props$menu$featureTo, _props$menu$actionRig, _props$menu$dataFence, _context5, _context6;
855
+ var _context3;
827
856
  const _useState = react$1.useState(0),
828
857
  _useState2 = _slicedToArray(_useState, 2),
829
858
  submenuVerticalPosition = _useState2[0],
@@ -836,15 +865,54 @@ const ApplicationMenu = props => {
836
865
  _useState6 = _slicedToArray(_useState5, 2),
837
866
  isSubmenuFocused = _useState6[0],
838
867
  setIsSubmenuFocused = _useState6[1];
868
+ const _useState7 = react$1.useState(0),
869
+ _useState8 = _slicedToArray(_useState7, 2),
870
+ percentageX = _useState8[0],
871
+ setPercentageX = _useState8[1];
872
+ const _useState9 = react$1.useState(0),
873
+ _useState10 = _slicedToArray(_useState9, 2),
874
+ percentageY = _useState10[0],
875
+ setPercentageY = _useState10[1];
839
876
  const observerRef = react$1.useRef(null);
840
877
  const submenuRef = react$1.useRef(null);
878
+ const submenuSafeAreaRef = react$1.useRef(null);
879
+
880
+ /* Getting the width and height of the menu*/
881
+ const subRefBoundingClientRect = submenuRef.current?.getBoundingClientRect();
882
+ const _ref = subRefBoundingClientRect ?? {},
883
+ menuItemWidth = _ref.width,
884
+ menuItemHeight = _ref.height;
885
+
886
+ // /* We want to track the left, top, width, and height of the safe area */
887
+ const submenuSafeAreaRefBoundingClientRect = submenuSafeAreaRef.current?.getBoundingClientRect();
888
+ const safeAreaLeftPos = submenuSafeAreaRefBoundingClientRect?.left || 0;
889
+ const safeAreaTopPos = submenuSafeAreaRefBoundingClientRect?.top || 0;
890
+ const safeAreaWidth = submenuSafeAreaRefBoundingClientRect?.width || 0;
891
+ const safeAreaHeight = submenuSafeAreaRefBoundingClientRect?.height || 0;
892
+ const calculateSafeAreaStartPositon = react$1.useCallback(e => {
893
+ const localX = e.clientX - safeAreaLeftPos;
894
+ const localY = e.clientY - safeAreaTopPos;
895
+ setPercentageX(localX / safeAreaWidth * 100);
896
+ setPercentageY(localY / safeAreaHeight * 100);
897
+ }, [safeAreaHeight, safeAreaLeftPos, safeAreaTopPos, safeAreaWidth]);
898
+ react$1.useEffect(() => {
899
+ calculateSafeAreaStartPositon(e => e);
900
+ window.addEventListener('mousemove', calculateSafeAreaStartPositon);
901
+ return () => {
902
+ window.removeEventListener('mousemove', calculateSafeAreaStartPositon);
903
+ };
904
+ }, [calculateSafeAreaStartPositon, menuItemHeight, menuItemWidth, safeAreaHeight, safeAreaLeftPos, safeAreaTopPos, safeAreaWidth]);
905
+ react$1.useLayoutEffect(() => {
906
+ submenuRef.current?.style.setProperty('--safe-start',
907
+ // Adding the +1 to slightly keep the cursor inside the safe area while moving
908
+ `${percentageX}% ${percentageY + 1}%`);
909
+ }, [calculateSafeAreaStartPositon, percentageX, percentageY]);
841
910
  const hasSubmenu = _Array$isArray__default["default"](props.menu.submenu) && props.menu.submenu.length > 0;
842
911
  const menuItemIdentifier = snakeCase__default["default"](props.menu.key);
843
912
  const callbackFn = react$1.useCallback(entries => {
844
- var _document$querySelect;
845
- const menuItemBoundingClientRect = (_document$querySelect = document.querySelector("[data-menuitem=\"".concat(menuItemIdentifier, "\"]"))) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.getBoundingClientRect();
846
- const menuItemTop = (menuItemBoundingClientRect === null || menuItemBoundingClientRect === void 0 ? void 0 : menuItemBoundingClientRect.top) || 0;
847
- const menuItemBottom = (menuItemBoundingClientRect === null || menuItemBoundingClientRect === void 0 ? void 0 : menuItemBoundingClientRect.bottom) || 0;
913
+ const menuItemBoundingClientRect = document.querySelector(`[data-menuitem="${menuItemIdentifier}"]`)?.getBoundingClientRect();
914
+ const menuItemTop = menuItemBoundingClientRect?.top || 0;
915
+ const menuItemBottom = menuItemBoundingClientRect?.bottom || 0;
848
916
  const _entries = _slicedToArray(entries, 1),
849
917
  entry = _entries[0];
850
918
  const doesSubmenuFitWithinViewportBelowMenuItem = entry.boundingClientRect.height + (props.isMenuOpen ? menuItemTop : menuItemBottom) > window.innerHeight;
@@ -862,10 +930,7 @@ const ApplicationMenu = props => {
862
930
  observerRef.current = new IntersectionObserver(callbackFn, {
863
931
  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
864
932
  });
865
- return () => {
866
- var _observerRef$current;
867
- return (_observerRef$current = observerRef.current) === null || _observerRef$current === void 0 ? void 0 : _observerRef$current.disconnect();
868
- };
933
+ return () => observerRef.current?.disconnect();
869
934
  }, [callbackFn, props.isMenuOpen]);
870
935
  react$1.useLayoutEffect(() => {
871
936
  const currentSubmenuRef = submenuRef.current;
@@ -875,10 +940,10 @@ const ApplicationMenu = props => {
875
940
  observer.observe(currentSubmenuRef);
876
941
  }
877
942
  setIsSubmenuFocused(false);
878
- return () => observer === null || observer === void 0 ? void 0 : observer.disconnect();
943
+ return () => observer?.disconnect();
879
944
  }, [menuItemIdentifier, props.isMenuOpen, props.handleToggleItem, callbackFn]);
880
945
  const isMainMenuRouteActive = Boolean(reactRouterDom.matchPath(props.location.pathname, {
881
- path: _concatInstanceProperty__default["default"](_context4 = "/".concat(props.projectKey, "/")).call(_context4, props.menu.uriPath),
946
+ path: `/${props.projectKey}/${props.menu.uriPath}`,
882
947
  exact: false,
883
948
  strict: false
884
949
  }));
@@ -893,22 +958,20 @@ const ApplicationMenu = props => {
893
958
 
894
959
  const namesOfMenuVisibilitiesOfAllSubmenus = hasSubmenu ? getMenuVisibilitiesOfSubmenus(props.menu) : getMenuVisibilityOfMainmenu(props.menu);
895
960
  const handleKeyDown = e => {
896
- var _submenuRef$current;
897
- const currentlyFocusedItem = (_submenuRef$current = submenuRef.current) === null || _submenuRef$current === void 0 ? void 0 : _submenuRef$current.querySelector(':focus');
961
+ const currentlyFocusedItem = submenuRef.current?.querySelector(':focus');
898
962
  if (e.key === 'Enter') {
899
963
  setIsSubmenuFocused(true);
900
964
  if (!currentlyFocusedItem) {
901
- var _submenuRef$current2;
902
- (_submenuRef$current2 = submenuRef.current) === null || _submenuRef$current2 === void 0 || (_submenuRef$current2 = _submenuRef$current2.querySelector('a')) === null || _submenuRef$current2 === void 0 || _submenuRef$current2.focus();
965
+ submenuRef.current?.querySelector('a')?.focus();
903
966
  }
904
967
  }
905
968
  };
906
969
  return jsxRuntime.jsx(RestrictedMenuItem, {
907
970
  keyOfMenuItem: props.menu.key,
908
- featureToggle: (_props$menu$featureTo = props.menu.featureToggle) !== null && _props$menu$featureTo !== void 0 ? _props$menu$featureTo : undefined,
971
+ featureToggle: props.menu.featureToggle ?? undefined,
909
972
  permissions: props.menu.permissions,
910
- actionRights: (_props$menu$actionRig = props.menu.actionRights) !== null && _props$menu$actionRig !== void 0 ? _props$menu$actionRig : undefined,
911
- dataFences: (_props$menu$dataFence = props.menu.dataFences) !== null && _props$menu$dataFence !== void 0 ? _props$menu$dataFence : undefined,
973
+ actionRights: props.menu.actionRights ?? undefined,
974
+ dataFences: props.menu.dataFences ?? undefined,
912
975
  projectPermissions: props.projectPermissions,
913
976
  menuVisibilities: props.menuVisibilities,
914
977
  namesOfMenuVisibilities: namesOfMenuVisibilitiesOfAllSubmenus,
@@ -921,9 +984,10 @@ const ApplicationMenu = props => {
921
984
  onKeyDown: handleKeyDown,
922
985
  onMouseEnter: props.handleToggleItem,
923
986
  onMouseLeave: props.shouldCloseMenuFly,
987
+ onMouseMove: props.onMouseMove,
924
988
  identifier: menuItemIdentifier,
925
989
  children: [jsxRuntime.jsx(MenuItemLink, {
926
- linkTo: _concatInstanceProperty__default["default"](_context5 = "/".concat(props.projectKey, "/")).call(_context5, props.menu.uriPath),
990
+ linkTo: `/${props.projectKey}/${props.menu.uriPath}`,
927
991
  useFullRedirectsForLinks: props.useFullRedirectsForLinks,
928
992
  onClick: props.onMenuItemClick,
929
993
  children: jsxRuntime.jsx(ItemContainer, {
@@ -934,7 +998,7 @@ const ApplicationMenu = props => {
934
998
  isMenuOpen: props.isMenuOpen
935
999
  })
936
1000
  }), jsxRuntime.jsxs(MenuGroup, {
937
- id: "group-".concat(props.menu.key),
1001
+ id: `group-${props.menu.key}`,
938
1002
  level: 2,
939
1003
  isActive: props.isActive,
940
1004
  isExpanded: props.isMenuOpen,
@@ -945,7 +1009,7 @@ const ApplicationMenu = props => {
945
1009
  children: [!props.isMenuOpen && jsxRuntime.jsx(TooltipContainer, {
946
1010
  alignsAgainstBottom: isSubmenuAboveMenuItem,
947
1011
  children: jsxRuntime.jsx(Tooltip, {
948
- "aria-owns": "group-".concat(props.menu.key),
1012
+ "aria-owns": `group-${props.menu.key}`,
949
1013
  role: "tooltip",
950
1014
  children: jsxRuntime.jsx(MenuLabel, {
951
1015
  labelAllLocales: props.menu.labelAllLocales,
@@ -953,40 +1017,39 @@ const ApplicationMenu = props => {
953
1017
  applicationLocale: props.applicationLocale
954
1018
  })
955
1019
  })
956
- }), hasSubmenu ? _mapInstanceProperty__default["default"](_context6 = props.menu.submenu).call(_context6, submenu => {
957
- var _context7, _submenu$featureToggl, _submenu$actionRights, _submenu$dataFences, _context8;
958
- return jsxRuntime.jsx(RestrictedMenuItem, {
959
- keyOfMenuItem: submenu.key,
960
- featureToggle: (_submenu$featureToggl = submenu.featureToggle) !== null && _submenu$featureToggl !== void 0 ? _submenu$featureToggl : undefined,
961
- permissions: submenu.permissions,
962
- actionRights: (_submenu$actionRights = submenu.actionRights) !== null && _submenu$actionRights !== void 0 ? _submenu$actionRights : undefined,
963
- dataFences: (_submenu$dataFences = submenu.dataFences) !== null && _submenu$dataFences !== void 0 ? _submenu$dataFences : undefined,
964
- projectPermissions: props.projectPermissions,
965
- menuVisibilities: props.menuVisibilities,
966
- namesOfMenuVisibilities: submenu.menuVisibility ? [submenu.menuVisibility] : undefined,
967
- children: jsxRuntime.jsx(SublistItem, {
968
- isActive: getIsSubmenuRouteActive(submenu.uriPath, props),
969
- children: jsxRuntime.jsx(Text, {
970
- children: jsxRuntime.jsx(MenuItemLink, {
971
- linkTo: _concatInstanceProperty__default["default"](_context8 = "/".concat(props.projectKey, "/")).call(_context8, submenu.uriPath)
972
- // We want to use an exact matching strategy to avoid multiple
973
- // links matching sub-routes.
974
- ,
975
- exactMatch: true,
976
- useFullRedirectsForLinks: props.useFullRedirectsForLinks,
977
- onClick: props.onMenuItemClick,
978
- isSubmenuLink: true,
979
- isSubmenuFocused: isSubmenuFocused,
980
- children: jsxRuntime.jsx(MenuLabel, {
981
- labelAllLocales: submenu.labelAllLocales,
982
- defaultLabel: submenu.defaultLabel,
983
- applicationLocale: props.applicationLocale
984
- })
1020
+ }), hasSubmenu ? _mapInstanceProperty__default["default"](_context3 = props.menu.submenu).call(_context3, submenu => jsxRuntime.jsx(RestrictedMenuItem, {
1021
+ keyOfMenuItem: submenu.key,
1022
+ featureToggle: submenu.featureToggle ?? undefined,
1023
+ permissions: submenu.permissions,
1024
+ actionRights: submenu.actionRights ?? undefined,
1025
+ dataFences: submenu.dataFences ?? undefined,
1026
+ projectPermissions: props.projectPermissions,
1027
+ menuVisibilities: props.menuVisibilities,
1028
+ namesOfMenuVisibilities: submenu.menuVisibility ? [submenu.menuVisibility] : undefined,
1029
+ children: jsxRuntime.jsx(SublistItem, {
1030
+ isActive: getIsSubmenuRouteActive(submenu.uriPath, props),
1031
+ children: jsxRuntime.jsx(Text, {
1032
+ children: jsxRuntime.jsx(MenuItemLink, {
1033
+ linkTo: `/${props.projectKey}/${submenu.uriPath}`
1034
+ // We want to use an exact matching strategy to avoid multiple
1035
+ // links matching sub-routes.
1036
+ ,
1037
+ exactMatch: true,
1038
+ useFullRedirectsForLinks: props.useFullRedirectsForLinks,
1039
+ onClick: props.onMenuItemClick,
1040
+ isSubmenuLink: true,
1041
+ isSubmenuFocused: isSubmenuFocused,
1042
+ children: jsxRuntime.jsx(MenuLabel, {
1043
+ labelAllLocales: submenu.labelAllLocales,
1044
+ defaultLabel: submenu.defaultLabel,
1045
+ applicationLocale: props.applicationLocale
985
1046
  })
986
1047
  })
987
1048
  })
988
- }, _concatInstanceProperty__default["default"](_context7 = "".concat(props.menu.key, "-submenu-")).call(_context7, submenu.key));
989
- }) : null]
1049
+ })
1050
+ }, `${props.menu.key}-submenu-${submenu.key}`)) : null, jsxRuntime.jsx(SafeArea, {
1051
+ ref: submenuSafeAreaRef
1052
+ })]
990
1053
  })]
991
1054
  })
992
1055
  }, props.menu.key);
@@ -1002,24 +1065,20 @@ const NavBar = props => {
1002
1065
  isMenuOpen = _useNavbarStateManage.isMenuOpen,
1003
1066
  isExpanderVisible = _useNavbarStateManage.isExpanderVisible,
1004
1067
  activeItemIndex = _useNavbarStateManage.activeItemIndex,
1068
+ mousePosition = _useNavbarStateManage.mousePosition,
1005
1069
  handleToggleItem = _useNavbarStateManage.handleToggleItem,
1006
1070
  handleToggleMenu = _useNavbarStateManage.handleToggleMenu,
1007
1071
  shouldCloseMenuFly = _useNavbarStateManage.shouldCloseMenuFly,
1008
- allApplicationsNavbarMenuGroups = _useNavbarStateManage.allApplicationsNavbarMenuGroups;
1072
+ allApplicationsNavbarMenuGroups = _useNavbarStateManage.allApplicationsNavbarMenuGroups,
1073
+ getMousePosition = _useNavbarStateManage.getMousePosition;
1009
1074
  const useFullRedirectsForLinks = Boolean(props.environment.useFullRedirectsForLinks);
1010
1075
  const location = reactRouterDom.useLocation();
1011
- const projectPermissions = react$1.useMemo(() => {
1012
- var _props$project, _props$project2, _props$project3;
1013
- return {
1014
- permissions: applicationShellConnectors.normalizeAllAppliedPermissions((_props$project = props.project) === null || _props$project === void 0 ? void 0 : _props$project.allPermissionsForAllApplications.allAppliedPermissions),
1015
- actionRights: applicationShellConnectors.normalizeAllAppliedActionRights((_props$project2 = props.project) === null || _props$project2 === void 0 ? void 0 : _props$project2.allPermissionsForAllApplications.allAppliedActionRights),
1016
- dataFences: applicationShellConnectors.normalizeAllAppliedDataFences((_props$project3 = props.project) === null || _props$project3 === void 0 ? void 0 : _props$project3.allPermissionsForAllApplications.allAppliedDataFences)
1017
- };
1018
- }, [props.project]);
1019
- const menuVisibilities = react$1.useMemo(() => {
1020
- var _props$project4;
1021
- return applicationShellConnectors.normalizeAllAppliedMenuVisibilities((_props$project4 = props.project) === null || _props$project4 === void 0 ? void 0 : _props$project4.allPermissionsForAllApplications.allAppliedMenuVisibilities);
1022
- }, [props.project]);
1076
+ const projectPermissions = react$1.useMemo(() => ({
1077
+ permissions: applicationShellConnectors.normalizeAllAppliedPermissions(props.project?.allPermissionsForAllApplications.allAppliedPermissions),
1078
+ actionRights: applicationShellConnectors.normalizeAllAppliedActionRights(props.project?.allPermissionsForAllApplications.allAppliedActionRights),
1079
+ dataFences: applicationShellConnectors.normalizeAllAppliedDataFences(props.project?.allPermissionsForAllApplications.allAppliedDataFences)
1080
+ }), [props.project]);
1081
+ const menuVisibilities = react$1.useMemo(() => applicationShellConnectors.normalizeAllAppliedMenuVisibilities(props.project?.allPermissionsForAllApplications.allAppliedMenuVisibilities), [props.project]);
1023
1082
  const applicationLocale = props.applicationLocale;
1024
1083
 
1025
1084
  // Render the loading navbar as long as all the data
@@ -1050,11 +1109,11 @@ const NavBar = props => {
1050
1109
  children: jsxRuntime.jsx(Spacings__default["default"].Stack, {
1051
1110
  scale: "l",
1052
1111
  children: _mapInstanceProperty__default["default"](allApplicationsNavbarMenuGroups).call(allApplicationsNavbarMenuGroups, navbarMenuGroup => {
1053
- var _context9;
1112
+ var _context4;
1054
1113
  return jsxRuntime.jsx("div", {
1055
- children: _mapInstanceProperty__default["default"](_context9 = navbarMenuGroup.items).call(_context9, menu => {
1114
+ children: _mapInstanceProperty__default["default"](_context4 = navbarMenuGroup.items).call(_context4, menu => {
1056
1115
  const menuType = 'scrollable';
1057
- const itemIndex = "".concat(menuType, "-").concat(menu.key);
1116
+ const itemIndex = `${menuType}-${menu.key}`;
1058
1117
  return jsxRuntime.jsx(ApplicationMenu, {
1059
1118
  location: location,
1060
1119
  menu: menu,
@@ -1067,7 +1126,9 @@ const NavBar = props => {
1067
1126
  applicationLocale: applicationLocale,
1068
1127
  projectKey: props.projectKey,
1069
1128
  useFullRedirectsForLinks: useFullRedirectsForLinks,
1070
- onMenuItemClick: props.onMenuItemClick
1129
+ onMenuItemClick: props.onMenuItemClick,
1130
+ onMouseMove: e => getMousePosition(e, itemIndex),
1131
+ mousePosition: mousePosition
1071
1132
  }, menu.key);
1072
1133
  })
1073
1134
  }, navbarMenuGroup.key);