@commercetools-frontend/application-shell 27.11.3 → 27.12.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 (44) hide show
  1. package/dist/commercetools-frontend-application-shell.cjs.dev.js +6 -3
  2. package/dist/commercetools-frontend-application-shell.cjs.prod.js +6 -3
  3. package/dist/commercetools-frontend-application-shell.esm.js +2 -2
  4. package/dist/{custom-view-dev-host-266a1924.cjs.dev.js → custom-view-dev-host-6d060417.cjs.dev.js} +1 -1
  5. package/dist/{custom-view-dev-host-c91854f5.esm.js → custom-view-dev-host-8aaf6e58.esm.js} +1 -1
  6. package/dist/{custom-view-dev-host-6ffee2b7.cjs.prod.js → custom-view-dev-host-92e55dd4.cjs.prod.js} +1 -1
  7. package/dist/declarations/src/utils/performance-marks/performance-marks.d.ts +3 -9
  8. package/dist/{error-apologizer-84dc825c.cjs.prod.js → error-apologizer-15c6ddd9.cjs.dev.js} +17 -1
  9. package/dist/{error-apologizer-76f087f4.esm.js → error-apologizer-9ba7c125.esm.js} +18 -2
  10. package/dist/{error-apologizer-f6793491.cjs.dev.js → error-apologizer-c7c5c7b4.cjs.prod.js} +17 -1
  11. package/dist/{index-c40a1490.cjs.prod.js → index-35109d28.cjs.prod.js} +22 -29
  12. package/dist/{index-d91e253a.cjs.dev.js → index-7b9f83f5.cjs.dev.js} +29 -36
  13. package/dist/{index-c23fe12b.esm.js → index-f730b40f.esm.js} +26 -32
  14. package/dist/{navbar-39b43428.esm.js → navbar-96d5f599.esm.js} +23 -8
  15. package/dist/{navbar-afc4d13f.cjs.dev.js → navbar-d7967989.cjs.dev.js} +22 -7
  16. package/dist/{navbar-ed0cd0de.cjs.prod.js → navbar-fc0b817f.cjs.prod.js} +21 -6
  17. package/dist/{oidc-callback-083a31b0.cjs.dev.js → oidc-callback-6b67bfd0.cjs.dev.js} +1 -1
  18. package/dist/{oidc-callback-2ddec6d5.esm.js → oidc-callback-9985547d.esm.js} +1 -1
  19. package/dist/{oidc-callback-63c38d74.cjs.prod.js → oidc-callback-a05d54b6.cjs.prod.js} +1 -1
  20. package/dist/{project-container-b885d880.esm.js → project-container-3d5828a0.esm.js} +5 -5
  21. package/dist/{project-container-abc9757b.cjs.prod.js → project-container-8ab8563b.cjs.prod.js} +5 -5
  22. package/dist/{project-container-912b68ec.cjs.dev.js → project-container-a4eb2e53.cjs.dev.js} +5 -5
  23. package/dist/{project-expired-da073503.cjs.prod.js → project-expired-07284090.cjs.prod.js} +2 -2
  24. package/dist/{project-expired-c282e0ce.cjs.dev.js → project-expired-2e0ab253.cjs.dev.js} +2 -2
  25. package/dist/{project-expired-3fec61b6.esm.js → project-expired-884b5933.esm.js} +2 -2
  26. package/dist/{project-not-found-955b876e.esm.js → project-not-found-6441c45b.esm.js} +2 -2
  27. package/dist/{project-not-found-32a768e5.cjs.prod.js → project-not-found-f45a291c.cjs.prod.js} +2 -2
  28. package/dist/{project-not-found-83b4a613.cjs.dev.js → project-not-found-ffe62b36.cjs.dev.js} +2 -2
  29. package/dist/{project-not-initialized-bade483e.cjs.dev.js → project-not-initialized-0278a02c.cjs.dev.js} +2 -2
  30. package/dist/{project-not-initialized-6ac30a3e.esm.js → project-not-initialized-097e07f5.esm.js} +2 -2
  31. package/dist/{project-not-initialized-4d7e3aee.cjs.prod.js → project-not-initialized-f5044c49.cjs.prod.js} +2 -2
  32. package/dist/{project-suspended-334a4a3e.cjs.prod.js → project-suspended-5e85a79e.cjs.prod.js} +2 -2
  33. package/dist/{project-suspended-35c32c81.esm.js → project-suspended-a1cac7d5.esm.js} +2 -2
  34. package/dist/{project-suspended-c8ce386a.cjs.dev.js → project-suspended-addb6af3.cjs.dev.js} +2 -2
  35. package/dist/{redirect-to-logout-5eab9241.cjs.prod.js → redirect-to-logout-499ebd3f.cjs.prod.js} +1 -1
  36. package/dist/{redirect-to-logout-600d612e.esm.js → redirect-to-logout-9360480e.esm.js} +1 -1
  37. package/dist/{redirect-to-logout-f711f0c6.cjs.dev.js → redirect-to-logout-9cb691db.cjs.dev.js} +1 -1
  38. package/dist/{requests-in-flight-loader-eea43c83.cjs.prod.js → requests-in-flight-loader-2f8f68e1.cjs.prod.js} +1 -1
  39. package/dist/{requests-in-flight-loader-8c8aa4e4.cjs.dev.js → requests-in-flight-loader-8fd6430b.cjs.dev.js} +1 -1
  40. package/dist/{requests-in-flight-loader-86c486ce.esm.js → requests-in-flight-loader-95224fbc.esm.js} +1 -1
  41. package/dist/{service-page-project-switcher-41aee60b.cjs.prod.js → service-page-project-switcher-1627299f.cjs.prod.js} +1 -1
  42. package/dist/{service-page-project-switcher-b8b11e5e.cjs.dev.js → service-page-project-switcher-4171511c.cjs.dev.js} +1 -1
  43. package/dist/{service-page-project-switcher-c0cd4c86.esm.js → service-page-project-switcher-5ea953d6.esm.js} +1 -1
  44. package/package.json +16 -16
@@ -2,16 +2,16 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var dist_commercetoolsFrontendApplicationShell = require('./index-d91e253a.cjs.dev.js');
5
+ var dist_commercetoolsFrontendApplicationShell = require('./index-7b9f83f5.cjs.dev.js');
6
6
  var applicationEntryPoint = require('./application-entry-point-e5623556.cjs.dev.js');
7
7
  var oidc = require('./oidc-b9e7297c.cjs.dev.js');
8
8
  var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
9
9
  var ssr = require('@commercetools-frontend/application-config/ssr');
10
10
  var reactBroadcast = require('@flopflip/react-broadcast');
11
11
  var launchdarklyAdapter = require('@flopflip/launchdarkly-adapter');
12
+ var constants = require('@commercetools-frontend/constants');
12
13
  require('react');
13
14
  require('react-router-dom');
14
- require('@commercetools-frontend/constants');
15
15
  require('@babel/runtime-corejs3/core-js-stable/object/keys');
16
16
  require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
17
17
  require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
@@ -97,7 +97,6 @@ exports.CustomViewShell = dist_commercetoolsFrontendApplicationShell.CustomViewS
97
97
  exports.ErrorApologizer = dist_commercetoolsFrontendApplicationShell.ErrorApologizer;
98
98
  exports.FetchUser = dist_commercetoolsFrontendApplicationShell.FetchUser;
99
99
  exports.InjectReducers = dist_commercetoolsFrontendApplicationShell.InjectReducers;
100
- exports.PERFORMANCE_MARKS = dist_commercetoolsFrontendApplicationShell.PERFORMANCE_MARKS;
101
100
  exports.ProtectedRoute = dist_commercetoolsFrontendApplicationShell.ProtectedRoute;
102
101
  exports.RedirectToLogin = dist_commercetoolsFrontendApplicationShell.RedirectToLogin;
103
102
  exports.RedirectToLogout = dist_commercetoolsFrontendApplicationShell.RedirectToLogout;
@@ -217,3 +216,7 @@ Object.defineProperty(exports, 'ldAdapter', {
217
216
  enumerable: true,
218
217
  get: function () { return launchdarklyAdapter.adapter; }
219
218
  });
219
+ Object.defineProperty(exports, 'PERFORMANCE_MARKS', {
220
+ enumerable: true,
221
+ get: function () { return constants.PERFORMANCE_MARKS; }
222
+ });
@@ -2,16 +2,16 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var dist_commercetoolsFrontendApplicationShell = require('./index-c40a1490.cjs.prod.js');
5
+ var dist_commercetoolsFrontendApplicationShell = require('./index-35109d28.cjs.prod.js');
6
6
  var applicationEntryPoint = require('./application-entry-point-516fd72c.cjs.prod.js');
7
7
  var oidc = require('./oidc-0cba182b.cjs.prod.js');
8
8
  var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
9
9
  var ssr = require('@commercetools-frontend/application-config/ssr');
10
10
  var reactBroadcast = require('@flopflip/react-broadcast');
11
11
  var launchdarklyAdapter = require('@flopflip/launchdarkly-adapter');
12
+ var constants = require('@commercetools-frontend/constants');
12
13
  require('react');
13
14
  require('react-router-dom');
14
- require('@commercetools-frontend/constants');
15
15
  require('@babel/runtime-corejs3/core-js-stable/object/keys');
16
16
  require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
17
17
  require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
@@ -97,7 +97,6 @@ exports.CustomViewShell = dist_commercetoolsFrontendApplicationShell.CustomViewS
97
97
  exports.ErrorApologizer = dist_commercetoolsFrontendApplicationShell.ErrorApologizer;
98
98
  exports.FetchUser = dist_commercetoolsFrontendApplicationShell.FetchUser;
99
99
  exports.InjectReducers = dist_commercetoolsFrontendApplicationShell.InjectReducers;
100
- exports.PERFORMANCE_MARKS = dist_commercetoolsFrontendApplicationShell.PERFORMANCE_MARKS;
101
100
  exports.ProtectedRoute = dist_commercetoolsFrontendApplicationShell.ProtectedRoute;
102
101
  exports.RedirectToLogin = dist_commercetoolsFrontendApplicationShell.RedirectToLogin;
103
102
  exports.RedirectToLogout = dist_commercetoolsFrontendApplicationShell.RedirectToLogout;
@@ -217,3 +216,7 @@ Object.defineProperty(exports, 'ldAdapter', {
217
216
  enumerable: true,
218
217
  get: function () { return launchdarklyAdapter.adapter; }
219
218
  });
219
+ Object.defineProperty(exports, 'PERFORMANCE_MARKS', {
220
+ enumerable: true,
221
+ get: function () { return constants.PERFORMANCE_MARKS; }
222
+ });
@@ -1,13 +1,13 @@
1
- export { e as ApplicationPageTitle, A as ApplicationShell, d as ApplicationShellProvider, C as ConfigureIntlProvider, f as CustomViewShell, i as ErrorApologizer, h as FetchUser, I as InjectReducers, o as PERFORMANCE_MARKS, l as ProtectedRoute, R as RedirectToLogin, j as RedirectToLogout, S as SetupFlopFlipProvider, m as SuspendedProtectedRoute, k as SuspendedRoute, g as getBrowserLocale, n as getPreviousProjectKey, p as selectProjectKeyInContext, s as setupGlobalErrorListener, u as useRoutesCreator, v as version } from './index-c23fe12b.esm.js';
1
+ export { e as ApplicationPageTitle, A as ApplicationShell, d as ApplicationShellProvider, C as ConfigureIntlProvider, f as CustomViewShell, i as ErrorApologizer, h as FetchUser, I as InjectReducers, l as ProtectedRoute, R as RedirectToLogin, j as RedirectToLogout, S as SetupFlopFlipProvider, m as SuspendedProtectedRoute, k as SuspendedRoute, g as getBrowserLocale, n as getPreviousProjectKey, o as selectProjectKeyInContext, s as setupGlobalErrorListener, u as useRoutesCreator, v as version } from './index-f730b40f.esm.js';
2
2
  export { R as RouteCatchAll, a as applyDefaultMiddlewares } from './application-entry-point-e20cafdb.esm.js';
3
3
  export { R as REGIONS } from './oidc-cb344fae.esm.js';
4
4
  export { buildApiUrl, createApolloClient, createApolloContextForProxyForwardTo, createHttpClientOptions, executeHttpClientRequest, getMcApiUrl, selectProjectKeyFromUrl, selectUserId, useMcLazyQuery, useMcMutation, useMcQuery } from '@commercetools-frontend/application-shell-connectors';
5
5
  export { entryPointUriPathToPermissionKeys, entryPointUriPathToResourceAccesses } from '@commercetools-frontend/application-config/ssr';
6
6
  export { ConfigureFlopFlip, ReconfigureFlopFlip, ToggleFeature, branchOnFeatureToggle, injectFeatureToggle, injectFeatureToggles, useAdapterReconfiguration, useAdapterStatus, useFeatureToggle, useFeatureToggles, useFlagVariation, useFlagVariations } from '@flopflip/react-broadcast';
7
7
  export { adapter as ldAdapter } from '@flopflip/launchdarkly-adapter';
8
+ export { PERFORMANCE_MARKS } from '@commercetools-frontend/constants';
8
9
  import 'react';
9
10
  import 'react-router-dom';
10
- import '@commercetools-frontend/constants';
11
11
  import '@babel/runtime-corejs3/core-js-stable/object/keys';
12
12
  import '@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols';
13
13
  import '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor';
@@ -10,7 +10,7 @@ var Constraints = require('@commercetools-uikit/constraints');
10
10
  var PrimaryButton = require('@commercetools-uikit/primary-button');
11
11
  var Spacings = require('@commercetools-uikit/spacings');
12
12
  var Text = require('@commercetools-uikit/text');
13
- var dist_commercetoolsFrontendApplicationShell = require('./index-d91e253a.cjs.dev.js');
13
+ var dist_commercetoolsFrontendApplicationShell = require('./index-7b9f83f5.cjs.dev.js');
14
14
  var jsxRuntime = require('@emotion/react/jsx-runtime');
15
15
  require('@commercetools-frontend/constants');
16
16
  require('./application-entry-point-e5623556.cjs.dev.js');
@@ -8,7 +8,7 @@ import Constraints from '@commercetools-uikit/constraints';
8
8
  import PrimaryButton from '@commercetools-uikit/primary-button';
9
9
  import Spacings from '@commercetools-uikit/spacings';
10
10
  import Text from '@commercetools-uikit/text';
11
- import { A as ApplicationShell } from './index-c23fe12b.esm.js';
11
+ import { A as ApplicationShell } from './index-f730b40f.esm.js';
12
12
  import { jsx, jsxs, Fragment } from '@emotion/react/jsx-runtime';
13
13
  import '@commercetools-frontend/constants';
14
14
  import './application-entry-point-e20cafdb.esm.js';
@@ -10,7 +10,7 @@ var Constraints = require('@commercetools-uikit/constraints');
10
10
  var PrimaryButton = require('@commercetools-uikit/primary-button');
11
11
  var Spacings = require('@commercetools-uikit/spacings');
12
12
  var Text = require('@commercetools-uikit/text');
13
- var dist_commercetoolsFrontendApplicationShell = require('./index-c40a1490.cjs.prod.js');
13
+ var dist_commercetoolsFrontendApplicationShell = require('./index-35109d28.cjs.prod.js');
14
14
  var jsxRuntime = require('@emotion/react/jsx-runtime');
15
15
  require('@commercetools-frontend/constants');
16
16
  require('./application-entry-point-516fd72c.cjs.prod.js');
@@ -1,12 +1,6 @@
1
- export declare const PERFORMANCE_MARKS: {
2
- readonly SKELETON_VISIBLE: "mc:skeleton-visible";
3
- readonly SHELL_CHROME_MOUNTED: "mc:shell-chrome-mounted";
4
- readonly INTL_READY: "mc:intl-ready";
5
- readonly CONTENT_RENDERED: "mc:content-rendered";
6
- readonly HYDRATION_USER: "mc:hydration-user";
7
- readonly HYDRATION_PROJECT: "mc:hydration-project";
8
- };
9
- export type TPerformanceMark = (typeof PERFORMANCE_MARKS)[keyof typeof PERFORMANCE_MARKS];
1
+ import { PERFORMANCE_MARKS, type TPerformanceMark } from '@commercetools-frontend/constants';
2
+ export { PERFORMANCE_MARKS };
3
+ export type { TPerformanceMark };
10
4
  export type TShellPerformanceMark = Exclude<TPerformanceMark, typeof PERFORMANCE_MARKS.SKELETON_VISIBLE>;
11
5
  declare const markOnce: (performanceMark: TShellPerformanceMark) => void;
12
6
  export default markOnce;
@@ -9,6 +9,7 @@ var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-
9
9
  var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
10
10
  var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
11
11
  var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
12
+ var react = require('react');
12
13
  var reactIntl = require('react-intl');
13
14
  var applicationComponents = require('@commercetools-frontend/application-components');
14
15
  var UnexpectedErrorSVG = require('@commercetools-frontend/assets/images/unexpected-error.svg');
@@ -39,7 +40,7 @@ var messages = reactIntl.defineMessages({
39
40
 
40
41
  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; }
41
42
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
42
- const ErrorApologizer = () => {
43
+ const ErrorApologizerPage = () => {
43
44
  const intl = reactIntl.useIntl();
44
45
  return jsxRuntime.jsx(applicationComponents.MaintenancePageLayout, {
45
46
  imageSrc: UnexpectedErrorSVG__default["default"],
@@ -48,6 +49,21 @@ const ErrorApologizer = () => {
48
49
  paragraph1: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread({}, messages.notifiedTeam))
49
50
  });
50
51
  };
52
+ const ErrorApologizer = () => {
53
+ const intl = react.useContext(reactIntl.IntlContext);
54
+ if (intl) {
55
+ return jsxRuntime.jsx(ErrorApologizerPage, {});
56
+ }
57
+
58
+ // The top-level error boundary sits above the application's IntlProvider.
59
+ // Without an intl context the fallback itself would throw, so the boundary
60
+ // would never commit and the original error would never be reported.
61
+ // Only the default (English) messages are available here.
62
+ return jsxRuntime.jsx(reactIntl.IntlProvider, {
63
+ locale: "en",
64
+ children: jsxRuntime.jsx(ErrorApologizerPage, {})
65
+ });
66
+ };
51
67
  ErrorApologizer.displayName = 'ErrorApologizer';
52
68
 
53
69
  exports["default"] = ErrorApologizer;
@@ -7,7 +7,8 @@ import _Object$getOwnPropertyDescriptors from '@babel/runtime-corejs3/core-js-st
7
7
  import _Object$defineProperties from '@babel/runtime-corejs3/core-js-stable/object/define-properties';
8
8
  import _Object$defineProperty from '@babel/runtime-corejs3/core-js-stable/object/define-property';
9
9
  import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
10
- import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
10
+ import { useContext } from 'react';
11
+ import { defineMessages, IntlContext, IntlProvider, useIntl, FormattedMessage } from 'react-intl';
11
12
  import { MaintenancePageLayout } from '@commercetools-frontend/application-components';
12
13
  import UnexpectedErrorSVG from '@commercetools-frontend/assets/images/unexpected-error.svg';
13
14
  import { jsx } from '@emotion/react/jsx-runtime';
@@ -25,7 +26,7 @@ var messages = defineMessages({
25
26
 
26
27
  function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
27
28
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
28
- const ErrorApologizer = () => {
29
+ const ErrorApologizerPage = () => {
29
30
  const intl = useIntl();
30
31
  return jsx(MaintenancePageLayout, {
31
32
  imageSrc: UnexpectedErrorSVG,
@@ -34,6 +35,21 @@ const ErrorApologizer = () => {
34
35
  paragraph1: jsx(FormattedMessage, _objectSpread({}, messages.notifiedTeam))
35
36
  });
36
37
  };
38
+ const ErrorApologizer = () => {
39
+ const intl = useContext(IntlContext);
40
+ if (intl) {
41
+ return jsx(ErrorApologizerPage, {});
42
+ }
43
+
44
+ // The top-level error boundary sits above the application's IntlProvider.
45
+ // Without an intl context the fallback itself would throw, so the boundary
46
+ // would never commit and the original error would never be reported.
47
+ // Only the default (English) messages are available here.
48
+ return jsx(IntlProvider, {
49
+ locale: "en",
50
+ children: jsx(ErrorApologizerPage, {})
51
+ });
52
+ };
37
53
  ErrorApologizer.displayName = 'ErrorApologizer';
38
54
 
39
55
  export { ErrorApologizer as default };
@@ -9,6 +9,7 @@ var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-
9
9
  var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
10
10
  var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
11
11
  var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
12
+ var react = require('react');
12
13
  var reactIntl = require('react-intl');
13
14
  var applicationComponents = require('@commercetools-frontend/application-components');
14
15
  var UnexpectedErrorSVG = require('@commercetools-frontend/assets/images/unexpected-error.svg');
@@ -39,7 +40,7 @@ var messages = reactIntl.defineMessages({
39
40
 
40
41
  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; }
41
42
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
42
- const ErrorApologizer = () => {
43
+ const ErrorApologizerPage = () => {
43
44
  const intl = reactIntl.useIntl();
44
45
  return jsxRuntime.jsx(applicationComponents.MaintenancePageLayout, {
45
46
  imageSrc: UnexpectedErrorSVG__default["default"],
@@ -48,6 +49,21 @@ const ErrorApologizer = () => {
48
49
  paragraph1: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread({}, messages.notifiedTeam))
49
50
  });
50
51
  };
52
+ const ErrorApologizer = () => {
53
+ const intl = react.useContext(reactIntl.IntlContext);
54
+ if (intl) {
55
+ return jsxRuntime.jsx(ErrorApologizerPage, {});
56
+ }
57
+
58
+ // The top-level error boundary sits above the application's IntlProvider.
59
+ // Without an intl context the fallback itself would throw, so the boundary
60
+ // would never commit and the original error would never be reported.
61
+ // Only the default (English) messages are available here.
62
+ return jsxRuntime.jsx(reactIntl.IntlProvider, {
63
+ locale: "en",
64
+ children: jsxRuntime.jsx(ErrorApologizerPage, {})
65
+ });
66
+ };
51
67
  ErrorApologizer.displayName = 'ErrorApologizer';
52
68
 
53
69
  exports["default"] = ErrorApologizer;
@@ -107,9 +107,9 @@ var _JSON$stringify__default = /*#__PURE__*/_interopDefault(_JSON$stringify);
107
107
  var _someInstanceProperty__default = /*#__PURE__*/_interopDefault(_someInstanceProperty);
108
108
 
109
109
  // NOTE: This string will be replaced on build time with the package version.
110
- var version = "27.11.3";
110
+ var version = "27.12.0";
111
111
 
112
- const RequestsInFlightLoader = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./requests-in-flight-loader-eea43c83.cjs.prod.js' /* webpackChunkName: "requests-in-flight-loader" */); }));
112
+ const RequestsInFlightLoader = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./requests-in-flight-loader-2f8f68e1.cjs.prod.js' /* webpackChunkName: "requests-in-flight-loader" */); }));
113
113
 
114
114
  // Attempt to load the `projectKey` from localStorage
115
115
  function selectProjectKeyFromLocalStorage() {
@@ -142,14 +142,6 @@ const selectProjectKeyInContext = _ref => {
142
142
  return undefined;
143
143
  };
144
144
 
145
- const PERFORMANCE_MARKS = {
146
- SKELETON_VISIBLE: 'mc:skeleton-visible',
147
- SHELL_CHROME_MOUNTED: 'mc:shell-chrome-mounted',
148
- INTL_READY: 'mc:intl-ready',
149
- CONTENT_RENDERED: 'mc:content-rendered',
150
- HYDRATION_USER: 'mc:hydration-user',
151
- HYDRATION_PROJECT: 'mc:hydration-project'
152
- };
153
145
  const alreadyMarked = new _Set__default["default"]();
154
146
  const markOnce = performanceMark => {
155
147
  if (alreadyMarked.has(performanceMark)) return;
@@ -157,7 +149,7 @@ const markOnce = performanceMark => {
157
149
  try {
158
150
  performance.mark(performanceMark);
159
151
  alreadyMarked.add(performanceMark);
160
- performance.measure(`${performanceMark}:from-nav`, {
152
+ performance.measure(`${performanceMark}${constants.PERFORMANCE_MEASURE_SUFFIX}`, {
161
153
  start: 0,
162
154
  end: performanceMark
163
155
  });
@@ -433,7 +425,6 @@ const REQUESTS_IN_FLIGHT_LOADER_DOM_ID = 'loader-for-requests-in-flight';
433
425
 
434
426
  const UserSettingsMenu = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./user-settings-menu-361180d0.cjs.prod.js' /* webpackChunkName: "user-settings-menu" */); }));
435
427
 
436
- const isStaticRouteWithoutProjectContext = topLevelPath => Boolean(topLevelPath) && constants.isStaticUrlPathInPositionOfProjectKey(topLevelPath) && !constants.isProjectKeylessApplicationEntryPointInProjectContext(topLevelPath);
437
428
  var _ref$2 = {
438
429
  name: "zjik7",
439
430
  styles: "display:flex"
@@ -470,11 +461,9 @@ const AppBar = props => {
470
461
  size: "s"
471
462
  });
472
463
  }
473
- // The `<ProjectSwitcher>` should be rendered only if the
474
- // user is fetched and the user has projects while the app runs in a
475
- // project context. Static routes like `/account` have no project
476
- // context, even when a previously used project key is available.
477
- if (props.user.projects.total > 0 && props.projectKey && !isStaticRouteWithoutProjectContext(topLevelPath)) {
464
+ // Project switcher only on project-scoped routes (`/:projectKey/...`).
465
+ // Static first segments (`/account`, `/agent-sphere`, …) never show it.
466
+ if (props.user.projects.total > 0 && props.projectKey && !constants.isStaticUrlPathInPositionOfProjectKey(topLevelPath)) {
478
467
  var _context;
479
468
  const selectedProject = _findInstanceProperty__default["default"](_context = props.user.projects.results).call(_context, project => project.key === props.projectKey);
480
469
  return jsxRuntime.jsxs("div", {
@@ -493,6 +482,11 @@ const AppBar = props => {
493
482
  })]
494
483
  });
495
484
  }
485
+ // Agent Sphere still runs in a project context (navbar), so there is
486
+ // nothing to "go back" to — leave the slot empty.
487
+ if (constants.isProjectKeylessApplicationEntryPointInProjectContext(topLevelPath)) {
488
+ return null;
489
+ }
496
490
  if (!props.user.defaultProjectKey) {
497
491
  return null;
498
492
  }
@@ -617,7 +611,7 @@ const ConfigureIntlProvider = props => {
617
611
  };
618
612
  ConfigureIntlProvider.displayName = 'ConfigureIntlProvider';
619
613
 
620
- const ErrorApologizer = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./error-apologizer-84dc825c.cjs.prod.js' /* webpackChunkName: "error-apologizer" */); }));
614
+ const ErrorApologizer = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./error-apologizer-c7c5c7b4.cjs.prod.js' /* webpackChunkName: "error-apologizer" */); }));
621
615
 
622
616
  var ProjectQuery = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "FetchProject" }, variableDefinitions: [{ kind: "VariableDefinition", variable: { kind: "Variable", name: { kind: "Name", value: "projectKey" } }, type: { kind: "NamedType", name: { kind: "Name", value: "String" } }, directives: [] }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "project" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "key" }, value: { kind: "Variable", name: { kind: "Name", value: "projectKey" } } }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "key" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "version" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "countries" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "currencies" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "languages" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "initialized" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "expiry" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "isActive" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "daysLeft" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "suspension" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "isActive" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "reason" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "isProductionProject" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "allAppliedPermissions" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "allAppliedActionRights" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "group" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "allAppliedDataFences" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "InlineFragment", typeCondition: { kind: "NamedType", name: { kind: "Name", value: "StoreDataFence" } }, directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "type" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "group" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "__typename" }, arguments: [], directives: [] }] } }] } }, { kind: "Field", name: { kind: "Name", value: "allPermissionsForAllApplications" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "allAppliedPermissions" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "allAppliedActionRights" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "group" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "allAppliedDataFences" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "InlineFragment", typeCondition: { kind: "NamedType", name: { kind: "Name", value: "StoreDataFence" } }, directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "type" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "group" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "__typename" }, arguments: [], directives: [] }] } }] } }] } }, { kind: "Field", name: { kind: "Name", value: "owner" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "sampleDataImportDataset" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "isUserAdminOfCurrentProject" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "productCatalogModel" }, arguments: [], directives: [] }] } }] } }], loc: { start: 0, end: 1035, source: { body: "query FetchProject($projectKey: String) {\n project(key: $projectKey) {\n key\n version\n name\n countries\n currencies\n languages\n initialized\n expiry {\n isActive\n daysLeft\n }\n suspension {\n isActive\n reason\n }\n isProductionProject\n allAppliedPermissions {\n name\n value\n }\n allAppliedActionRights {\n group\n name\n value\n }\n allAppliedDataFences {\n ... on StoreDataFence {\n type\n name\n value\n group\n __typename\n }\n }\n allPermissionsForAllApplications {\n allAppliedPermissions {\n name\n value\n }\n allAppliedActionRights {\n group\n name\n value\n }\n allAppliedDataFences {\n ... on StoreDataFence {\n type\n name\n value\n group\n __typename\n }\n }\n }\n owner {\n id\n name\n }\n sampleDataImportDataset\n isUserAdminOfCurrentProject\n productCatalogModel\n }\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } };
623
617
  const FetchProject = props => {
@@ -636,7 +630,7 @@ const FetchProject = props => {
636
630
  error = _useMcQuery.error;
637
631
  react.useEffect(() => {
638
632
  if (!loading && data?.project) {
639
- markOnce(PERFORMANCE_MARKS.HYDRATION_PROJECT);
633
+ markOnce(constants.PERFORMANCE_MARKS.HYDRATION_PROJECT);
640
634
  }
641
635
  }, [loading, data?.project]);
642
636
  return jsxRuntime.jsx(jsxRuntime.Fragment, {
@@ -662,7 +656,7 @@ const FetchUser = props => {
662
656
  error = _useMcQuery.error;
663
657
  react.useEffect(() => {
664
658
  if (!loading && data?.user) {
665
- markOnce(PERFORMANCE_MARKS.HYDRATION_USER);
659
+ markOnce(constants.PERFORMANCE_MARKS.HYDRATION_USER);
666
660
  }
667
661
  }, [loading, data?.user]);
668
662
  return jsxRuntime.jsx(jsxRuntime.Fragment, {
@@ -675,7 +669,7 @@ const FetchUser = props => {
675
669
  };
676
670
  FetchUser.displayName = 'FetchUser';
677
671
 
678
- const Navbar = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./navbar-ed0cd0de.cjs.prod.js' /* webpackChunkName: "navbar" */); }));
672
+ const Navbar = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./navbar-fc0b817f.cjs.prod.js' /* webpackChunkName: "navbar" */); }));
679
673
 
680
674
  const PerformanceMark = _ref => {
681
675
  let mark = _ref.mark;
@@ -685,9 +679,9 @@ const PerformanceMark = _ref => {
685
679
  return null;
686
680
  };
687
681
 
688
- const ProjectContainer = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./project-container-abc9757b.cjs.prod.js' /* webpackChunkName: "project-container" */); }));
682
+ const ProjectContainer = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./project-container-8ab8563b.cjs.prod.js' /* webpackChunkName: "project-container" */); }));
689
683
 
690
- const RedirectToLogout = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-logout-5eab9241.cjs.prod.js' /* webpackChunkName: "redirect-to-logout" */); }));
684
+ const RedirectToLogout = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-logout-499ebd3f.cjs.prod.js' /* webpackChunkName: "redirect-to-logout" */); }));
691
685
 
692
686
  const RedirectToProjectCreate = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-project-create-603634dd.cjs.prod.js' /* webpackChunkName: "redirect-to-project-create" */); }));
693
687
 
@@ -925,7 +919,7 @@ const ApplicationShellAuthenticated = props => {
925
919
  messages
926
920
  }), {}, {
927
921
  children: [jsxRuntime.jsx(PerformanceMark, {
928
- mark: PERFORMANCE_MARKS.INTL_READY
922
+ mark: constants.PERFORMANCE_MARKS.INTL_READY
929
923
  }), jsxRuntime.jsx(SetupFlopFlipProvider, {
930
924
  user: normalizedUser,
931
925
  projectKey: projectKeyInContext,
@@ -935,7 +929,7 @@ const ApplicationShellAuthenticated = props => {
935
929
  children: jsxRuntime.jsxs(ApplicationShellSplitterWrapper, {
936
930
  locale: locale ?? 'en',
937
931
  children: [jsxRuntime.jsx(PerformanceMark, {
938
- mark: PERFORMANCE_MARKS.SHELL_CHROME_MOUNTED
932
+ mark: constants.PERFORMANCE_MARKS.SHELL_CHROME_MOUNTED
939
933
  }), jsxRuntime.jsx(ThemeSwitcher, {}), jsxRuntime.jsx(RequestsInFlightLoader, {}), jsxRuntime.jsx(sentry.SentryUserTracker, {
940
934
  user: normalizedUser
941
935
  }), jsxRuntime.jsxs("div", {
@@ -997,7 +991,7 @@ const ApplicationShellAuthenticated = props => {
997
991
  }) : jsxRuntime.jsxs(MainContainer, {
998
992
  role: "main",
999
993
  children: [jsxRuntime.jsx(PerformanceMark, {
1000
- mark: PERFORMANCE_MARKS.CONTENT_RENDERED
994
+ mark: constants.PERFORMANCE_MARKS.CONTENT_RENDERED
1001
995
  }), jsxRuntime.jsx("div", {
1002
996
  ref: notificationsPageRef,
1003
997
  children: jsxRuntime.jsx(reactNotifications.NotificationsList, {
@@ -1317,7 +1311,7 @@ const hasCachedAuthenticationState = () => {
1317
1311
  return window.localStorage.getItem(constants.STORAGE_KEYS.IS_AUTHENTICATED) === 'true';
1318
1312
  };
1319
1313
 
1320
- const OidcCallback = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./oidc-callback-63c38d74.cjs.prod.js' /* webpackChunkName: "oidc-callback" */); }));
1314
+ const OidcCallback = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./oidc-callback-a05d54b6.cjs.prod.js' /* webpackChunkName: "oidc-callback" */); }));
1321
1315
 
1322
1316
  function ownKeys$4(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; }
1323
1317
  function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$4(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$4(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
@@ -1586,7 +1580,7 @@ const ApplicationShell = props => {
1586
1580
  ApplicationShell.displayName = 'ApplicationShell';
1587
1581
  ApplicationShell.version = version;
1588
1582
 
1589
- const CustomViewDevHost = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./custom-view-dev-host-6ffee2b7.cjs.prod.js' /* webpackChunkName: "custom-view-dev-host" */); }));
1583
+ const CustomViewDevHost = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./custom-view-dev-host-92e55dd4.cjs.prod.js' /* webpackChunkName: "custom-view-dev-host" */); }));
1590
1584
 
1591
1585
  function CustomViewFlopFlipProvider(props) {
1592
1586
  const adapterArgs = react.useMemo(() => ({
@@ -2041,7 +2035,6 @@ exports.ErrorBoundary = ErrorBoundary;
2041
2035
  exports.FetchProject = FetchProject;
2042
2036
  exports.FetchUser = FetchUser;
2043
2037
  exports.InjectReducers = InjectReducers;
2044
- exports.PERFORMANCE_MARKS = PERFORMANCE_MARKS;
2045
2038
  exports.ProjectSwitcher = ProjectSwitcher;
2046
2039
  exports.ProtectedRoute = ProtectedRoute;
2047
2040
  exports.REQUESTS_IN_FLIGHT_LOADER_DOM_ID = REQUESTS_IN_FLIGHT_LOADER_DOM_ID;