@cloudscape-design/components 3.0.1 → 3.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/alert/interfaces.d.ts +1 -0
  2. package/alert/interfaces.d.ts.map +1 -1
  3. package/alert/interfaces.js.map +1 -1
  4. package/app-layout/index.d.ts.map +1 -1
  5. package/app-layout/index.js +16 -11
  6. package/app-layout/index.js.map +1 -1
  7. package/app-layout/test-classes/styles.css.js +13 -12
  8. package/app-layout/test-classes/styles.scoped.css +17 -13
  9. package/app-layout/test-classes/styles.selectors.js +13 -12
  10. package/app-layout/visual-refresh/context.d.ts +4 -2
  11. package/app-layout/visual-refresh/context.d.ts.map +1 -1
  12. package/app-layout/visual-refresh/context.js +31 -21
  13. package/app-layout/visual-refresh/context.js.map +1 -1
  14. package/app-layout/visual-refresh/layout.d.ts.map +1 -1
  15. package/app-layout/visual-refresh/layout.js +3 -13
  16. package/app-layout/visual-refresh/layout.js.map +1 -1
  17. package/app-layout/visual-refresh/split-panel.d.ts.map +1 -1
  18. package/app-layout/visual-refresh/split-panel.js +6 -2
  19. package/app-layout/visual-refresh/split-panel.js.map +1 -1
  20. package/code-editor/preferences-modal.js +2 -2
  21. package/code-editor/preferences-modal.js.map +1 -1
  22. package/container/styles.css.js +15 -14
  23. package/container/styles.scoped.css +28 -24
  24. package/container/styles.selectors.js +15 -14
  25. package/container/use-sticky-header.d.ts.map +1 -1
  26. package/container/use-sticky-header.js +19 -12
  27. package/container/use-sticky-header.js.map +1 -1
  28. package/flashbar/interfaces.d.ts +4 -4
  29. package/flashbar/interfaces.js.map +1 -1
  30. package/form-field/internal.js +3 -3
  31. package/form-field/internal.js.map +1 -1
  32. package/internal/base-component/styles.scoped.css +3 -0
  33. package/internal/components/dropdown/dropdown-fit-handler.js +1 -1
  34. package/internal/components/dropdown/dropdown-fit-handler.js.map +1 -1
  35. package/internal/context/app-layout-context.d.ts +1 -1
  36. package/internal/context/app-layout-context.d.ts.map +1 -1
  37. package/internal/context/app-layout-context.js +3 -4
  38. package/internal/context/app-layout-context.js.map +1 -1
  39. package/internal/context/form-field-context.d.ts +1 -1
  40. package/internal/context/form-field-context.d.ts.map +1 -1
  41. package/internal/context/form-field-context.js +3 -4
  42. package/internal/context/form-field-context.js.map +1 -1
  43. package/internal/environment.js +1 -1
  44. package/internal/generated/theming/index.cjs +14 -3
  45. package/internal/generated/theming/index.js +14 -3
  46. package/internal/utils/scrollable-containers.js +1 -1
  47. package/internal/utils/scrollable-containers.js.map +1 -1
  48. package/package.json +1 -1
  49. package/select/utils/use-select.d.ts.map +1 -1
  50. package/select/utils/use-select.js +1 -0
  51. package/select/utils/use-select.js.map +1 -1
  52. package/split-panel/index.js +2 -2
  53. package/split-panel/index.js.map +1 -1
  54. package/split-panel/utils/size-utils.d.ts +11 -0
  55. package/split-panel/utils/size-utils.d.ts.map +1 -1
  56. package/split-panel/utils/size-utils.js +12 -1
  57. package/split-panel/utils/size-utils.js.map +1 -1
  58. package/tag-editor/index.js +1 -1
  59. package/tag-editor/index.js.map +1 -1
  60. package/tag-editor/interfaces.d.ts +1 -1
  61. package/tag-editor/interfaces.d.ts.map +1 -1
  62. package/tag-editor/interfaces.js.map +1 -1
  63. package/tutorial-panel/components/tutorial-list/index.js +1 -1
  64. package/tutorial-panel/components/tutorial-list/index.js.map +1 -1
  65. package/internal/hooks/dom-context/index.d.ts +0 -14
  66. package/internal/hooks/dom-context/index.d.ts.map +0 -1
  67. package/internal/hooks/dom-context/index.js +0 -70
  68. package/internal/hooks/dom-context/index.js.map +0 -1
@@ -10,6 +10,7 @@ export interface AlertProps extends BaseComponentProps {
10
10
  type?: AlertProps.Type;
11
11
  /**
12
12
  * Determines whether the alert is displayed.
13
+ * @deprecated Use conditional rendering in your code instead of this prop
13
14
  */
14
15
  visible?: boolean;
15
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/alert/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,yBAAiB,UAAU,CAAC;IAC1B,KAAY,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;CAC7D;AAED,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD;;OAEG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC;;;OAGG;IACH,aAAa,CAAC,EAAE,yBAAyB,CAAC;CAC3C"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/alert/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,yBAAiB,UAAU,CAAC;IAC1B,KAAY,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;CAC7D;AAED,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD;;OAEG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC;;;OAGG;IACH,aAAa,CAAC,EAAE,yBAAyB,CAAC;CAC3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/alert/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BaseComponentProps } from '../internal/base-component';\nimport { NonCancelableEventHandler } from '../internal/events';\n\nexport namespace AlertProps {\n export type Type = 'success' | 'error' | 'warning' | 'info';\n}\n\nexport interface AlertProps extends BaseComponentProps {\n /**\n * Specifies the type of message you want to display.\n */\n type?: AlertProps.Type;\n /**\n * Determines whether the alert is displayed.\n */\n visible?: boolean;\n /**\n * Adds a close button to the alert when set to `true`.\n * An `onDismiss` event is fired when a user clicks the button.\n */\n dismissible?: boolean;\n /**\n * Adds an aria-label to the dismiss button.\n */\n dismissAriaLabel?: string;\n /**\n * Primary text displayed in the element.\n */\n children?: React.ReactNode;\n /**\n * Heading text.\n */\n header?: React.ReactNode;\n /**\n * Displays an action button next to the message area when set.\n * An `onButtonClick` event is fired when the user clicks it.\n * **Deprecated**, replaced by `action`.\n */\n buttonText?: React.ReactNode;\n /**\n * Specifies an action for the alert message.\n * Although it is technically possible to insert any content, our UX guidelines only allow you to add a button.\n */\n action?: React.ReactNode;\n /**\n * Fired when the user clicks the close icon that is displayed\n * when the `dismissible` property is set to `true`.\n */\n onDismiss?: NonCancelableEventHandler;\n /**\n * Fired when the user clicks the action button.\n * **Deprecated**, replaced by `action`.\n */\n onButtonClick?: NonCancelableEventHandler;\n}\n"]}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/alert/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BaseComponentProps } from '../internal/base-component';\nimport { NonCancelableEventHandler } from '../internal/events';\n\nexport namespace AlertProps {\n export type Type = 'success' | 'error' | 'warning' | 'info';\n}\n\nexport interface AlertProps extends BaseComponentProps {\n /**\n * Specifies the type of message you want to display.\n */\n type?: AlertProps.Type;\n /**\n * Determines whether the alert is displayed.\n * @deprecated Use conditional rendering in your code instead of this prop\n */\n visible?: boolean;\n /**\n * Adds a close button to the alert when set to `true`.\n * An `onDismiss` event is fired when a user clicks the button.\n */\n dismissible?: boolean;\n /**\n * Adds an aria-label to the dismiss button.\n */\n dismissAriaLabel?: string;\n /**\n * Primary text displayed in the element.\n */\n children?: React.ReactNode;\n /**\n * Heading text.\n */\n header?: React.ReactNode;\n /**\n * Displays an action button next to the message area when set.\n * An `onButtonClick` event is fired when the user clicks it.\n * **Deprecated**, replaced by `action`.\n */\n buttonText?: React.ReactNode;\n /**\n * Specifies an action for the alert message.\n * Although it is technically possible to insert any content, our UX guidelines only allow you to add a button.\n */\n action?: React.ReactNode;\n /**\n * Fired when the user clicks the close icon that is displayed\n * when the `dismissible` property is set to `true`.\n */\n onDismiss?: NonCancelableEventHandler;\n /**\n * Fired when the user clicks the action button.\n * **Deprecated**, replaced by `action`.\n */\n onButtonClick?: NonCancelableEventHandler;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app-layout/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAwE,MAAM,OAAO,CAAC;AAM7F,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAgC9C,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,QAAA,MAAM,SAAS,2FAmBd,CAAC;AAqhBF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app-layout/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAwE,MAAM,OAAO,CAAC;AAM7F,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAqC9C,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,QAAA,MAAM,SAAS,2FAmBd,CAAC;AA6hBF,eAAe,SAAS,CAAC"}
@@ -17,11 +17,11 @@ import useContentHeight from './utils/use-content-height';
17
17
  import styles from './styles.css.js';
18
18
  import testutilStyles from './test-classes/styles.css.js';
19
19
  import { findUpUntil } from '../internal/utils/dom';
20
- import { AppLayoutDomContext } from '../internal/context/app-layout-context';
20
+ import { AppLayoutContext } from '../internal/context/app-layout-context';
21
21
  import { useContainerQuery } from '../internal/hooks/container-queries';
22
22
  import { useStableEventHandler } from '../internal/hooks/use-stable-event-handler';
23
23
  import { applyDisplayName } from '../internal/utils/apply-display-name';
24
- import { getSplitPanelDefaultSize, MAIN_PANEL_MIN_HEIGHT } from '../split-panel/utils/size-utils';
24
+ import { CONSTRAINED_MAIN_PANEL_MIN_HEIGHT, CONSTRAINED_PAGE_HEIGHT, getSplitPanelDefaultSize, MAIN_PANEL_MIN_HEIGHT, } from '../split-panel/utils/size-utils';
25
25
  import useBaseComponent from '../internal/hooks/use-base-component';
26
26
  import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
27
27
  import ContentWrapper from './content-wrapper';
@@ -141,10 +141,14 @@ var OldAppLayout = React.forwardRef(function (_a, ref) {
141
141
  return 0; // render the split panel in its minimum possible size
142
142
  }
143
143
  else if (disableBodyScroll && legacyScrollRootRef.current) {
144
- return legacyScrollRootRef.current.clientHeight - MAIN_PANEL_MIN_HEIGHT;
144
+ var availableHeight = legacyScrollRootRef.current.clientHeight;
145
+ return availableHeight < CONSTRAINED_PAGE_HEIGHT ? availableHeight : availableHeight - MAIN_PANEL_MIN_HEIGHT;
145
146
  }
146
147
  else {
147
- return document.documentElement.clientHeight - headerHeight - footerHeight - MAIN_PANEL_MIN_HEIGHT;
148
+ var availableHeight = document.documentElement.clientHeight - headerHeight - footerHeight;
149
+ return availableHeight < CONSTRAINED_PAGE_HEIGHT
150
+ ? availableHeight - CONSTRAINED_MAIN_PANEL_MIN_HEIGHT
151
+ : availableHeight - MAIN_PANEL_MIN_HEIGHT;
148
152
  }
149
153
  });
150
154
  var _x = useState(false), isForcedPosition = _x[0], setIsForcedPosition = _x[1];
@@ -271,13 +275,14 @@ var OldAppLayout = React.forwardRef(function (_a, ref) {
271
275
  !navigationHide && (React.createElement(NavigationPanel, { ariaLabels: ariaLabels, footerHeight: footerHeight, headerHeight: headerHeight, isHidden: disableContentPaddings, isMobile: isMobile, isMotionEnabled: isMotionEnabled, navigation: navigation, navigationDrawerWidth: navigationDrawerWidth, navigationOpen: navigationOpen, onClick: isMobile ? onNavigationClick : undefined, onNavigationToggle: onNavigationToggle, panelHeightStyle: panelHeightStyle, toggleRefs: navigationRefs, navigationWidth: navigationWidth })),
272
276
  React.createElement("main", { ref: legacyScrollRootRef, className: clsx(styles['layout-main'], (_b = {},
273
277
  _b[styles['layout-main-scrollable']] = disableBodyScroll,
278
+ _b[testutilStyles['disable-body-scroll-root']] = disableBodyScroll,
274
279
  _b[styles.unfocusable] = isMobile && anyPanelOpen,
275
280
  _b)) },
276
281
  React.createElement("div", { style: {
277
282
  marginBottom: splitPanelBottomOffset,
278
283
  transform: contentScaleX ? "scaleX(".concat(contentScaleX, ")") : undefined
279
284
  } },
280
- notifications && (React.createElement(DarkHeader, __assign({}, contentHeaderProps, { topOffset: headerHeight, sticky: !isMobile && darkStickyHeaderContentType && stickyNotifications }),
285
+ notifications && (React.createElement(DarkHeader, __assign({}, contentHeaderProps, { topOffset: disableBodyScroll ? 0 : headerHeight, sticky: !isMobile && darkStickyHeaderContentType && stickyNotifications }),
281
286
  React.createElement(Notifications, { testUtilsClassName: clsx(styles.notifications, testutilStyles.notifications), labels: ariaLabels, topOffset: headerHeight, sticky: !isMobile && stickyNotifications, ref: notificationsRef, isMobile: isMobile, navigationPadding: contentWrapperProps.navigationPadding, toolsPadding: contentWrapperProps.toolsPadding, contentWidthStyles: contentWidthStyles }, notifications))),
282
287
  ((!isMobile && breadcrumbs) || contentHeader) && (React.createElement(DarkHeader, __assign({}, contentHeaderProps),
283
288
  React.createElement(ContentWrapper, __assign({}, contentWrapperProps, { contentWidthStyles: contentWidthStyles }),
@@ -295,12 +300,12 @@ var OldAppLayout = React.forwardRef(function (_a, ref) {
295
300
  !isMobile &&
296
301
  !contentHeader &&
297
302
  styles['content-wrapper-first-child']) }),
298
- React.createElement(AppLayoutDomContext.RootProvider, { value: {
299
- stickyOffsetTop: headerHeight + (stickyNotificationsHeight !== null ? stickyNotificationsHeight : 0),
300
- stickyOffsetBottom: footerHeight + (splitPanelBottomOffset || 0)
301
- },
302
- // eslint-disable-next-line react/forbid-component-props
303
- className: clsx(styles.content, testutilStyles.content, !disableContentHeaderOverlap && contentHeader && styles['content-overlapped']), style: contentWidthStyles }, content))),
303
+ React.createElement("div", { className: clsx(styles.content, testutilStyles.content, !disableContentHeaderOverlap && contentHeader && styles['content-overlapped']), style: contentWidthStyles },
304
+ React.createElement(AppLayoutContext.Provider, { value: {
305
+ stickyOffsetTop: (disableBodyScroll ? 0 : headerHeight) +
306
+ (stickyNotificationsHeight !== null ? stickyNotificationsHeight : 0),
307
+ stickyOffsetBottom: footerHeight + (splitPanelBottomOffset || 0)
308
+ } }, content)))),
304
309
  finalSplitPanePosition === 'bottom' && (React.createElement(SplitPanelWrapper, { context: splitPanelContext }, splitPanel))),
305
310
  React.createElement(ToolsAndSplitPanel, { splitPanel: finalSplitPanePosition === 'side' ? splitPanel : undefined, ariaLabels: ariaLabels, closedDrawerWidth: closedDrawerWidth, contentHeightStyle: contentHeightStyle, disableContentPaddings: disableContentPaddings, drawerWidth: toolsDrawerWidth, footerHeight: footerHeight, headerHeight: headerHeight, isHidden: isToolsDrawerHidden, isMobile: isMobile, isMotionEnabled: isMotionEnabled, onToolsToggle: onToolsToggle, panelHeightStyle: panelHeightStyle, splitPanelContext: splitPanelContext, splitPanelOpen: splitPanelOpenOnTheSide, splitPanelReportedSize: splitPanelReportedSize, toggleRefs: toolsRefs, tools: tools, toolsHide: Boolean(toolsHide), toolsOpen: toolsOpen, toolsWidth: toolsWidth })))));
306
311
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app-layout/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,cAAc,MAAM,0BAA0B,CAAC;AACtD,OAAO,gBAAgB,MAAM,4BAA4B,CAAC;AAC1D,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAClG,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,cAAuC,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAmB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,kBAAkB,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAIhE,IAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAChC,UACE,EAAwG,EACxG,GAAkC;IADhC,IAAA,mBAAuB,EAAvB,WAAW,mBAAG,SAAS,KAAA,EAAE,sBAAwB,EAAxB,cAAc,mBAAG,OAAO,KAAA,EAAE,sBAAwB,EAAxB,cAAc,mBAAG,OAAO,KAAA,EAAK,IAAI,cAAtF,mDAAwF,CAAF;IAG9E,IAAA,iBAAiB,GAAK,gBAAgB,CAAiB,WAAW,CAAC,kBAAlD,CAAmD;IAC5E,IAAM,SAAS,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAEtD,wDAAwD;IACxD,IAAM,KAAK,cAAK,WAAW,aAAA,EAAE,cAAc,gBAAA,EAAE,cAAc,gBAAA,IAAK,IAAI,CAAE,CAAC;IAEvE,IAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAErC,OAAO,CACL,sCAAK,GAAG,EAAE,iBAAiB,IAAM,SAAS,GACvC,SAAS,CAAC,CAAC,CAAC,oBAAC,kBAAkB,eAAK,KAAK,IAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,oBAAC,YAAY,eAAK,KAAK,IAAE,GAAG,EAAE,GAAG,IAAI,CAC5F,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,IAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CACnC,UACE,EAgCiB,EACjB,GAAkC;;;QAhChC,UAAU,gBAAA,EACV,uBAAqB,EAArB,eAAe,mBAAG,GAAG,KAAA,EACrB,cAAc,oBAAA,EACE,wBAAwB,oBAAA,EACxC,KAAK,WAAA,EACL,kBAAgB,EAAhB,UAAU,mBAAG,GAAG,KAAA,EAChB,SAAS,eAAA,EACE,mBAAmB,eAAA,EAC9B,WAAW,iBAAA,EACX,aAAa,mBAAA,EACb,mBAAmB,yBAAA,EACnB,aAAa,mBAAA,EACb,2BAA2B,iCAAA,EAC3B,OAAO,aAAA,EACP,mBAAuB,EAAvB,WAAW,mBAAG,SAAS,KAAA,EACvB,sBAAsB,4BAAA,EACtB,iBAAiB,uBAAA,EACjB,eAAe,qBAAA,EACf,eAAe,qBAAA,EACf,sBAAwB,EAAxB,cAAc,mBAAG,OAAO,KAAA,EACxB,sBAAwB,EAAxB,cAAc,mBAAG,OAAO,KAAA,EACxB,UAAU,gBAAA,EACV,UAAU,gBAAA,EACM,wBAAwB,oBAAA,EACxB,wBAAwB,oBAAA,EACjB,+BAA+B,2BAAA,EACtD,6BAA6B,mCAAA,EAC7B,kBAAkB,wBAAA,EAClB,kBAAkB,wBAAA,EAClB,kBAAkB,wBAAA,EAClB,aAAa,mBAAA;IAIf,IAAI,aAAa,EAAE;QACjB,IAAI,mBAAmB,IAAI,SAAS,EAAE;YACpC,QAAQ,CACN,WAAW,EACX,4JAAwK,CACzK,CAAC;SACH;KACF;IACD,IAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC7C,IAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC7B,IAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAErF,IAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,EAAE,EAAE,eAAe,iBAAA,EAAE,eAAe,iBAAA,EAAE,EAAE,KAAK,CAAC,CAAC;IACzF,IAAM,2BAA2B,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3E,IAAA,KAA8C,eAAe,CACjE,wBAAwB,EACxB,kBAAkB,EAClB,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,EAC1C,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,CACtG,EALM,UAAsB,EAAtB,cAAc,mBAAG,KAAK,KAAA,EAAE,iBAAiB,QAK/C,CAAC;IAEI,IAAA,KAAoC,eAAe,CACvD,mBAAmB,EACnB,aAAa,EACb,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EACrC,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,CAC5F,EALM,UAAiB,EAAjB,SAAS,mBAAG,KAAK,KAAA,EAAE,YAAY,QAKrC,CAAC;IAEF,IAAM,kBAAkB,GAAG,WAAW,CACpC,UAAC,IAAa;QACZ,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,sBAAsB,CAAC,kBAAkB,EAAE,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;IACvD,CAAC,EACD,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CACxC,CAAC;IACF,IAAM,aAAa,GAAG,WAAW,CAC/B,UAAC,IAAa;QACZ,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,sBAAsB,CAAC,aAAa,EAAE,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;IAClD,CAAC,EACD,CAAC,YAAY,EAAE,aAAa,CAAC,CAC9B,CAAC;IACF,IAAM,iBAAiB,GAAG,UAAC,KAAuB;QAChD,IAAM,OAAO,GAAG,WAAW,CACzB,KAAK,CAAC,MAAqB,EAC3B,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,CAAC,CAAE,IAA0B,CAAC,IAAI,EAA1D,CAA0D,CACnE,CAAC;QACF,IAAI,OAAO,EAAE;YACX,kBAAkB,CAAC,KAAK,CAAC,CAAC;SAC3B;IACH,CAAC,CAAC;IAEF,IAAM,iBAAiB,GAAG,CAAC,cAAc,IAAI,cAAc,CAAC;IAC5D,IAAM,YAAY,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC;IAEvC,IAAA,KAAuE,gBAAgB,CAC3F,cAAc,EACd,cAAc,EACd,iBAAiB,CAClB,EAJO,kBAAkB,wBAAA,EAAE,YAAY,kBAAA,EAAE,YAAY,kBAAA,EAAE,gBAAgB,sBAIvE,CAAC;IACI,IAAA,KAA0C,iBAAiB,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,MAAM,EAAX,CAAW,CAAC,EAA/E,mBAAmB,QAAA,EAAE,gBAAgB,QAA0C,CAAC;IACjF,IAAA,KAAoC,iBAAiB,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAA9B,CAA8B,EAAE,CAAC,UAAU,CAAC,CAAC,EAA1G,gBAAgB,QAAA,EAAE,aAAa,QAA2E,CAAC;IAC5G,IAAA,KAAuD,iBAAiB,CAC5E,UAAA,IAAI,IAAI,OAAA,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAA9B,CAA8B,EACtC,CAAC,UAAU,CAAC,CACb,EAHM,sBAAsB,QAAA,EAAE,0BAA0B,QAGxD,CAAC;IACF,IAAM,yBAAyB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAM,mBAAmB,GAAG,YAAY,CAAC,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;IAChG,IAAM,YAAY,GAAG,iBAAiB,IAAI,YAAY,CAAC;IACvD,IAAM,wBAAwB,GAAG,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvF,IAAM,yBAAyB,GAAG,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7E,IAAA,KAAoD,eAAe,CACvE,+BAA+B,EAC/B,6BAA6B,EAC7B,SAAS,EACT;QACE,aAAa,EAAE,WAAW;QAC1B,cAAc,EAAE,uBAAuB;QACvC,aAAa,EAAE,+BAA+B;KAC/C,CACF,EATM,qBAAqB,QAAA,EAAE,wBAAwB,QASrD,CAAC;IACF,IAAM,kBAAkB,GAAG,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,QAAQ,KAAI,QAAQ,CAAC;IAEvE,IAAM,iBAAiB,GAAG,EAAE,CAAC;IAC7B,IAAM,wBAAwB,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAC3G,IAAM,mBAAmB,GACvB,SAAS,IAAI,CAAC,CAAC,UAAU,IAAI,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,QAAQ,MAAK,MAAM,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,iBAAiB,CAAC;IAExB,IAAM,qBAAqB,GAAG,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;IACrE,IAAA,KAA8D,eAAe,CACjF,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB;QACE,aAAa,EAAE,WAAW;QAC1B,cAAc,EAAE,gBAAgB;QAChC,aAAa,EAAE,oBAAoB;KACpC,CACF,EATM,UAAsC,EAAtC,cAAc,mBAAG,qBAAqB,KAAA,EAAE,iBAAiB,QAS/D,CAAC;IAEI,IAAA,KAA8C,eAAe,CACjE,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,EACL;QACE,aAAa,EAAE,WAAW;QAC1B,cAAc,EAAE,gBAAgB;QAChC,aAAa,EAAE,oBAAoB;KACpC,CACF,EATM,UAAsB,EAAtB,cAAc,mBAAG,KAAK,KAAA,EAAE,iBAAiB,QAS/C,CAAC;IAEF,IAAM,cAAc,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,IAAM,mBAAmB,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAEtD,IAAM,0BAA0B,GAAG,WAAW,CAC5C,UAAC,MAAuC;QACtC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACjC,sBAAsB,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC,EACD,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,CAC1D,CAAC;IACF,IAAM,mBAAmB,GAAG,WAAW,CACrC,UAAC,MAAwB;QACvB,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,sBAAsB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC,EACD,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CACxC,CAAC;IACF,IAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,iBAAiB,CAAC,CAAC,cAAc,CAAC,CAAC;QACnC,sBAAsB,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;IACxE,CAAC,EAAE,CAAC,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAE5D,IAAM,qBAAqB,GAAG,qBAAqB,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YACxD,OAAO,GAAG,CAAC;SACZ;QAED,IAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;QACvE,qEAAqE;QACrE,qEAAqE;QACrE,IAAM,cAAc,GAAG,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,IAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,CAAC,eAAe,GAAG,cAAc,CAAC;QACzE,IAAM,UAAU,GAAG,sBAAsB,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAM,sBAAsB,GAAG,qBAAqB,CAAC;QACnD,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,OAAO,CAAC,CAAC,CAAC,sDAAsD;SACjE;aAAM,IAAI,iBAAiB,IAAI,mBAAmB,CAAC,OAAO,EAAE;YAC3D,OAAO,mBAAmB,CAAC,OAAO,CAAC,YAAY,GAAG,qBAAqB,CAAC;SACzE;aAAM;YACL,OAAO,QAAQ,CAAC,eAAe,CAAC,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,qBAAqB,CAAC;SACpG;IACH,CAAC,CAAC,CAAC;IAEG,IAAA,KAA0C,QAAQ,CAAC,KAAK,CAAC,EAAxD,gBAAgB,QAAA,EAAE,mBAAmB,QAAmB,CAAC;IAChE,IAAM,sBAAsB,GAAG,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAEhF,IAAM,2BAA2B,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,sBAAsB,KAAK,MAAM,CAAC;IAC7F,IAAM,uBAAuB,GAAG,2BAA2B,IAAI,cAAc,CAAC;IAE9E,IAAM,qBAAqB,GAAG,CAAC,CAAC;IAEhC,IAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAC/B,IAAA,KAA2C,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAvE,UAAU,UAAA,EAAS,WAAW,WAAyC,CAAC;IACtF,IAAM,0BAA0B,GAC9B,WAAW;QACX,UAAU;QACV,WAAW;QACX,mBAAmB;QACnB,wBAAwB;QACxB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAEvD,SAAS,CAAC;QACR,IAAM,YAAY,GAAG,0BAA0B,GAAG,cAAc,CAAC;QACjE,mBAAmB,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;QAChF,kFAAkF;QAClF,4BAA4B;QAC5B,uDAAuD;IACzD,CAAC,EAAE,CAAC,0BAA0B,EAAE,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;IAErE,IAAM,qBAAqB,GAAG,cAAc,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACjF,IAAM,gBAAgB,GAAG,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAEjE,IAAA,KAA4D,QAAQ,EAAyC,EAA5G,yBAAyB,QAAA,EAAE,4BAA4B,QAAqD,CAAC;IACpH,iBAAiB,CACf,cAAM,OAAA,4BAA4B,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAnF,CAAmF,EACzF,CAAC,cAAc,CAAC,CACjB,CAAC;IACF,iBAAiB,CAAC,cAAM,OAAA,4BAA4B,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAlD,CAAkD,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAElG,IAAM,oBAAoB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtF,IAAA,KAAsD,QAAQ,CAAC,CAAC,CAAC,EAAhE,sBAAsB,QAAA,EAAE,yBAAyB,QAAe,CAAC;IAExE,IAAM,iBAAiB,GAA2B;QAChD,SAAS,EAAE,YAAY,GAAG,CAAC,sBAAsB,KAAK,QAAQ,CAAC,CAAC,CAAC,yBAAyB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,YAAY,EAAE,YAAY;QAC1B,UAAU,EACR,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,qBAAqB,CAAC;QAC3G,WAAW,EAAE,WAAW,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACnG,QAAQ,EAAE,sBAAsB;QAChC,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,qBAAqB;QAClC,YAAY,EAAE,sBAAsB;QACpC,SAAS,EAAE,cAAM,OAAA,yBAAyB,CAAC,OAAO,EAAjC,CAAiC;QAClD,sBAAsB,wBAAA;QACtB,kBAAkB,EAAE,oBAAoB;QACxC,MAAM,EAAE,cAAc;QACtB,QAAQ,UAAA;QACR,SAAS,EAAE,KAAK;QAChB,gBAAgB,kBAAA;QAChB,eAAe,EAAE,yBAAyB;QAC1C,aAAa,eAAA;QACb,mBAAmB,qBAAA;QACnB,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,UAAA;QACR,mBAAmB,EAAE,0BAA0B;QAC/C,UAAU,EAAE,yBAAyB;KACtC,CAAC;IAEF,IAAM,mBAAmB,GAAwB;QAC/C,iBAAiB,EAAE,cAAc,IAAI,CAAC,CAAC,cAAc;QACrD,YAAY;QACV,uDAAuD;QACvD,yEAAyE;QACzE,CAAC,SAAS,IAAI,CAAC,CAAC,UAAU,IAAI,sBAAsB,KAAK,MAAM,CAAC,CAAC;YACjE,qCAAqC;YACrC,YAAY;YACZ,0CAA0C;YAC1C,uBAAuB;QACzB,QAAQ,UAAA;KACT,CAAC;IAEF,IAAM,cAAc,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IACvD,IAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAE7C,mBAAmB,CACjB,GAAG,EACH,cAAM,OAAA,CAAC;QACL,SAAS,EAAE,cAAM,OAAA,aAAa,CAAC,IAAI,CAAC,EAAnB,CAAmB;QACpC,0BAA0B,EAAE;YAC1B,IAAI,QAAQ,EAAE;gBACZ,kBAAkB,CAAC,KAAK,CAAC,CAAC;aAC3B;QACH,CAAC;KACF,CAAC,EAPI,CAOJ,EACF,CAAC,QAAQ,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAC9C,CAAC;IAEF,IAAM,sBAAsB,GAC1B,MAAA,CAAC,CAAC,UAAU,IAAI,sBAAsB,KAAK,QAAQ;QACjD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,sBAAsB,CAAC,mCAAI,SAAS,CAAC;IAE3C,IAAM,kBAAkB,GAAG,CAAC,QAAQ;QAClC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE;QAC5E,CAAC,CAAC,SAAS,CAAC;IAEd,IAAM,mBAAmB,GAAG,sBAAsB,CAAC;IAEnD,IAAM,gBAAgB,GAAG,CAAC;QACxB,IAAI,QAAQ,EAAE;YACZ,OAAO,CAAC,CAAC;SACV;QAED,IAAM,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC;QACnF,IAAM,eAAe,GACnB,CAAC,UAAU,IAAI,sBAAsB,KAAK,MAAM;YAC9C,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,sBAAsB;gBACxB,CAAC,CAAC,iBAAiB,CAAC;QAExB,OAAO,eAAe,GAAG,eAAe,CAAC;IAC3C,CAAC,CAAC,EAAE,CAAC;IAEL,IAAM,qBAAqB,GAAG,CAAC;QAC7B,IAAI,QAAQ,EAAE;YACZ,OAAO,CAAC,CAAC;SACV;QAED,OAAO,wBAAwB,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC;IAEL,IAAM,kBAAkB,GAAoB;QAC1C,QAAQ,UAAA;QACR,eAAe,EAAE,wBAAwB;QACzC,UAAU,EAAE,sBAAsB;YAChC,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,mBAAmB;oBACrB,CAAC,CAAC,qBAAqB;oBACvB,CAAC,CAAC,CAAC;KACN,CAAC;IAEF,IAAM,oBAAoB,GAAG,qBAAqB,CAChD,0BAA0B,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CACpF,CAAC;IAEF,IAAM,aAAa,GAAG,CAAC;QACrB,IAAI,QAAQ,IAAI,CAAC,eAAe,IAAI,CAAC,sBAAsB,IAAI,CAAC,oBAAoB,EAAE;YACpF,OAAO,SAAS,CAAC;SAClB;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,CACL,6BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,iBAAiB,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAChG,GAAG,EAAE,OAAO;QAEZ,6BAAK,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,kBAAkB;YAChE,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,cAAc,IAAI,WAAW,CAAC,IAAI,CAC7D,oBAAC,aAAa,IACZ,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,EAC1E,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,cAAM,OAAA,kBAAkB,CAAC,IAAI,CAAC,EAAxB,CAAwB,EAChD,WAAW,EAAE,cAAM,OAAA,aAAa,CAAC,IAAI,CAAC,EAAnB,CAAmB,EACtC,WAAW,EAAE,YAAY,IAExB,WAAW,CACE,CACjB;YACD,6BAAK,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACjF,CAAC,cAAc,IAAI,CAClB,oBAAC,eAAe,IACd,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,UAAU,EACtB,qBAAqB,EAAE,qBAAqB,EAC5C,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,EACjD,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,cAAc,EAC1B,eAAe,EAAE,eAAe,GAChC,CACH;gBACD,8BACE,GAAG,EAAE,mBAAmB,EACxB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;wBACnC,GAAC,MAAM,CAAC,wBAAwB,CAAC,IAAG,iBAAiB;wBACrD,GAAC,MAAM,CAAC,WAAW,IAAG,QAAQ,IAAI,YAAY;4BAC9C;oBAEF,6BACE,KAAK,EAAE;4BACL,YAAY,EAAE,sBAAsB;4BACpC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,iBAAU,aAAa,MAAG,CAAC,CAAC,CAAC,SAAS;yBAClE;wBAEA,aAAa,IAAI,CAChB,oBAAC,UAAU,eACL,kBAAkB,IACtB,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,CAAC,QAAQ,IAAI,2BAA2B,IAAI,mBAAmB;4BAEvE,oBAAC,aAAa,IACZ,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,aAAa,CAAC,EAC5E,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,CAAC,QAAQ,IAAI,mBAAmB,EACxC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,mBAAmB,CAAC,iBAAiB,EACxD,YAAY,EAAE,mBAAmB,CAAC,YAAY,EAC9C,kBAAkB,EAAE,kBAAkB,IAErC,aAAa,CACA,CACL,CACd;wBACA,CAAC,CAAC,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,aAAa,CAAC,IAAI,CAChD,oBAAC,UAAU,eAAK,kBAAkB;4BAChC,oBAAC,cAAc,eAAK,mBAAmB,IAAE,kBAAkB,EAAE,kBAAkB;gCAC5E,CAAC,QAAQ,IAAI,WAAW,IAAI,CAC3B,6BACE,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,WAAW,EAClB,cAAc,CAAC,WAAW,EAC1B,MAAM,CAAC,qBAAqB,CAAC,EAC7B,2BAA2B,IAAI,MAAM,CAAC,mCAAmC,CAAC,CAC3E,IAEA,WAAW,CACR,CACP;gCACA,aAAa,IAAI,CAChB,6BACE,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,wBAAwB,CAAC,EAChC,CAAC,wBAAwB;wCACvB,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC;wCAC1B,MAAM,CAAC,2BAA2B,CAAC,EACrC,CAAC,wBAAwB,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,oCAAoC,CAAC,EACzF,CAAC,2BAA2B,IAAI,MAAM,CAAC,mCAAmC,CAAC,CAC5E,IAEA,aAAa,CACV,CACP,CACc,CACN,CACd;wBACD,oBAAC,cAAc,eACT,mBAAmB,IACvB,GAAG,EAAE,cAAc,EACnB,eAAe,EAAE,sBAAsB;4BACvC,wDAAwD;4BACxD,SAAS,EAAE,IAAI,CACb,CAAC,sBAAsB,IAAI,MAAM,CAAC,iBAAiB,CAAC,EACpD,CAAC,sBAAsB;gCACrB,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC;gCAC1B,CAAC,aAAa;gCACd,MAAM,CAAC,2BAA2B,CAAC,EACrC,CAAC,wBAAwB;gCACvB,CAAC,WAAW;gCACZ,CAAC,QAAQ;gCACT,CAAC,aAAa;gCACd,MAAM,CAAC,6BAA6B,CAAC,CACxC;4BAED,oBAAC,mBAAmB,CAAC,YAAY,IAC/B,KAAK,EAAE;oCACL,eAAe,EACb,YAAY,GAAG,CAAC,yBAAyB,KAAK,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;oCACrF,kBAAkB,EAAE,YAAY,GAAG,CAAC,sBAAsB,IAAI,CAAC,CAAC;iCACjE;gCACD,wDAAwD;gCACxD,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,OAAO,EACd,cAAc,CAAC,OAAO,EACtB,CAAC,2BAA2B,IAAI,aAAa,IAAI,MAAM,CAAC,oBAAoB,CAAC,CAC9E,EACD,KAAK,EAAE,kBAAkB,IAExB,OAAO,CACyB,CACpB,CACb;oBACL,sBAAsB,KAAK,QAAQ,IAAI,CACtC,oBAAC,iBAAiB,IAAC,OAAO,EAAE,iBAAiB,IAAG,UAAU,CAAqB,CAChF,CACI;gBAEP,oBAAC,kBAAkB,IACjB,UAAU,EAAE,sBAAsB,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EACtE,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,kBAAkB,EAAE,kBAAkB,EACtC,sBAAsB,EAAE,sBAAsB,EAC9C,WAAW,EAAE,gBAAgB,EAC7B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,mBAAmB,EAC7B,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,uBAAuB,EACvC,sBAAsB,EAAE,sBAAsB,EAC9C,UAAU,EAAE,SAAS,EACrB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAC7B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,GACtB,CACE,CACF,CACF,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACzC,eAAe,SAAS,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport { useControllable } from '../internal/hooks/use-controllable';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { applyDefaults } from './defaults';\nimport { AppLayoutProps } from './interfaces';\nimport { Notifications } from './notifications';\nimport { MobileToolbar } from './mobile-toolbar';\nimport { SplitPanelWrapper } from './split-panel-wrapper';\nimport { useFocusControl } from './utils/use-focus-control';\nimport useWindowWidth from './utils/use-window-width';\nimport useContentHeight from './utils/use-content-height';\nimport styles from './styles.css.js';\nimport testutilStyles from './test-classes/styles.css.js';\nimport { findUpUntil } from '../internal/utils/dom';\nimport { AppLayoutDomContext } from '../internal/context/app-layout-context';\nimport { useContainerQuery } from '../internal/hooks/container-queries';\nimport { useStableEventHandler } from '../internal/hooks/use-stable-event-handler';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { SplitPanelContextProps, SplitPanelLastInteraction } from '../internal/context/split-panel-context';\nimport { getSplitPanelDefaultSize, MAIN_PANEL_MIN_HEIGHT } from '../split-panel/utils/size-utils';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport ContentWrapper, { ContentWrapperProps } from './content-wrapper';\nimport { DarkHeader, DarkHeaderProps } from './dark-header';\nimport { isMotionDisabled } from '../internal/motion';\nimport { useEffectOnUpdate } from '../internal/hooks/use-effect-on-update';\nimport { NavigationPanel } from './navigation-panel';\nimport { ToolsAndSplitPanel } from './tools-and-split-panel';\nimport { usePreviousFrameValue } from '../internal/hooks/use-previous-frame';\nimport useAppLayoutOffsets from './utils/use-content-width';\nimport { isDevelopment } from '../internal/is-development';\nimport { warnOnce } from '../internal/logging';\n\nimport RefreshedAppLayout from './visual-refresh';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\n\nexport { AppLayoutProps };\n\nconst AppLayout = React.forwardRef(\n (\n { contentType = 'default', headerSelector = '#b #h', footerSelector = '#b #f', ...rest }: AppLayoutProps,\n ref: React.Ref<AppLayoutProps.Ref>\n ) => {\n const { __internalRootRef } = useBaseComponent<HTMLDivElement>('AppLayout');\n const isRefresh = useVisualRefresh(__internalRootRef);\n\n // This re-builds the props including the default values\n const props = { contentType, headerSelector, footerSelector, ...rest };\n\n const baseProps = getBaseProps(rest);\n\n return (\n <div ref={__internalRootRef} {...baseProps}>\n {isRefresh ? <RefreshedAppLayout {...props} ref={ref} /> : <OldAppLayout {...props} ref={ref} />}\n </div>\n );\n }\n);\n\nconst OldAppLayout = React.forwardRef(\n (\n {\n navigation,\n navigationWidth = 280,\n navigationHide,\n navigationOpen: controlledNavigationOpen,\n tools,\n toolsWidth = 290,\n toolsHide,\n toolsOpen: controlledToolsOpen,\n breadcrumbs,\n notifications,\n stickyNotifications,\n contentHeader,\n disableContentHeaderOverlap,\n content,\n contentType = 'default',\n disableContentPaddings,\n disableBodyScroll,\n maxContentWidth,\n minContentWidth,\n headerSelector = '#b #h',\n footerSelector = '#b #f',\n ariaLabels,\n splitPanel,\n splitPanelSize: controlledSplitPanelSize,\n splitPanelOpen: controlledSplitPanelOpen,\n splitPanelPreferences: controlledSplitPanelPreferences,\n onSplitPanelPreferencesChange,\n onSplitPanelResize,\n onSplitPanelToggle,\n onNavigationChange,\n onToolsChange,\n }: AppLayoutProps,\n ref: React.Ref<AppLayoutProps.Ref>\n ) => {\n if (isDevelopment) {\n if (controlledToolsOpen && toolsHide) {\n warnOnce(\n 'AppLayout',\n `You have enabled both the \\`toolsOpen\\` prop and the \\`toolsHide\\` prop. This is not supported. Set \\`toolsOpen\\` to \\`false\\` when you set \\`toolsHide\\` to \\`true\\`.`\n );\n }\n }\n const rootRef = useRef<HTMLDivElement>(null);\n const isMobile = useMobile();\n const isMotionEnabled = rootRef.current ? !isMotionDisabled(rootRef.current) : false;\n\n const defaults = applyDefaults(contentType, { maxContentWidth, minContentWidth }, false);\n const darkStickyHeaderContentType = ['cards', 'table'].indexOf(contentType) > -1;\n const [navigationOpen = false, setNavigationOpen] = useControllable(\n controlledNavigationOpen,\n onNavigationChange,\n isMobile ? false : defaults.navigationOpen,\n { componentName: 'AppLayout', controlledProp: 'navigationOpen', changeHandler: 'onNavigationChange' }\n );\n\n const [toolsOpen = false, setToolsOpen] = useControllable(\n controlledToolsOpen,\n onToolsChange,\n isMobile ? false : defaults.toolsOpen,\n { componentName: 'AppLayout', controlledProp: 'toolsOpen', changeHandler: 'onToolsChange' }\n );\n\n const onNavigationToggle = useCallback(\n (open: boolean) => {\n setNavigationOpen(open);\n fireNonCancelableEvent(onNavigationChange, { open });\n },\n [setNavigationOpen, onNavigationChange]\n );\n const onToolsToggle = useCallback(\n (open: boolean) => {\n setToolsOpen(open);\n fireNonCancelableEvent(onToolsChange, { open });\n },\n [setToolsOpen, onToolsChange]\n );\n const onNavigationClick = (event: React.MouseEvent) => {\n const hasLink = findUpUntil(\n event.target as HTMLElement,\n node => node.tagName === 'A' && !!(node as HTMLAnchorElement).href\n );\n if (hasLink) {\n onNavigationToggle(false);\n }\n };\n\n const navigationVisible = !navigationHide && navigationOpen;\n const toolsVisible = !toolsHide && toolsOpen;\n\n const { contentHeightStyle, headerHeight, footerHeight, panelHeightStyle } = useContentHeight(\n headerSelector,\n footerSelector,\n disableBodyScroll\n );\n const [notificationsHeight, notificationsRef] = useContainerQuery(rect => rect.height);\n const [splitPanelHeight, splitPanelRef] = useContainerQuery(rect => (splitPanel ? rect.height : 0), [splitPanel]);\n const [splitPanelHeaderHeight, splitPanelHeaderMeasureRef] = useContainerQuery(\n rect => (splitPanel ? rect.height : 0),\n [splitPanel]\n );\n const splitPanelHeaderRefObject = useRef(null);\n const splitPanelHeaderRef = useMergeRefs(splitPanelHeaderMeasureRef, splitPanelHeaderRefObject);\n const anyPanelOpen = navigationVisible || toolsVisible;\n const hasRenderedNotifications = notificationsHeight ? notificationsHeight > 0 : false;\n const stickyNotificationsHeight = stickyNotifications ? notificationsHeight : null;\n\n const [splitPanelPreferences, setSplitPanelPreferences] = useControllable(\n controlledSplitPanelPreferences,\n onSplitPanelPreferencesChange,\n undefined,\n {\n componentName: 'AppLayout',\n controlledProp: 'splitPanelPreferences',\n changeHandler: 'onSplitPanelPreferencesChange',\n }\n );\n const splitPanelPosition = splitPanelPreferences?.position || 'bottom';\n\n const closedDrawerWidth = 40;\n const effectiveNavigationWidth = navigationHide ? 0 : navigationOpen ? navigationWidth : closedDrawerWidth;\n const effectiveToolsWidth =\n toolsHide && (!splitPanel || splitPanelPreferences?.position !== 'side')\n ? 0\n : toolsOpen\n ? toolsWidth\n : closedDrawerWidth;\n\n const defaultSplitPanelSize = getSplitPanelDefaultSize(splitPanelPosition);\n const [splitPanelSize = defaultSplitPanelSize, setSplitPanelSize] = useControllable(\n controlledSplitPanelSize,\n onSplitPanelResize,\n defaultSplitPanelSize,\n {\n componentName: 'AppLayout',\n controlledProp: 'splitPanelSize',\n changeHandler: 'onSplitPanelResize',\n }\n );\n\n const [splitPanelOpen = false, setSplitPanelOpen] = useControllable(\n controlledSplitPanelOpen,\n onSplitPanelToggle,\n false,\n {\n componentName: 'AppLayout',\n controlledProp: 'splitPanelOpen',\n changeHandler: 'onSplitPanelToggle',\n }\n );\n\n const mainContentRef = useRef<HTMLDivElement>(null);\n const legacyScrollRootRef = useRef<HTMLElement>(null);\n\n const onSplitPanelPreferencesSet = useCallback(\n (detail: { position: 'side' | 'bottom' }) => {\n setSplitPanelPreferences(detail);\n fireNonCancelableEvent(onSplitPanelPreferencesChange, detail);\n },\n [setSplitPanelPreferences, onSplitPanelPreferencesChange]\n );\n const onSplitPanelSizeSet = useCallback(\n (detail: { size: number }) => {\n setSplitPanelSize(detail.size);\n fireNonCancelableEvent(onSplitPanelResize, detail);\n },\n [setSplitPanelSize, onSplitPanelResize]\n );\n const onToggle = useCallback(() => {\n setSplitPanelOpen(!splitPanelOpen);\n fireNonCancelableEvent(onSplitPanelToggle, { open: !splitPanelOpen });\n }, [setSplitPanelOpen, splitPanelOpen, onSplitPanelToggle]);\n\n const getSplitPanelMaxWidth = useStableEventHandler(() => {\n if (!mainContentRef.current || !defaults.minContentWidth) {\n return NaN;\n }\n\n const width = parseInt(getComputedStyle(mainContentRef.current).width);\n // when disableContentPaddings is true there is less available space,\n // so we subtract space-scaled-2x-xxxl * 2 for left and right padding\n const contentPadding = disableContentPaddings ? 80 : 0;\n const spaceAvailable = width - defaults.minContentWidth - contentPadding;\n const spaceTaken = finalSplitPanePosition === 'side' ? splitPanelSize : 0;\n return Math.max(0, spaceTaken + spaceAvailable);\n });\n\n const getSplitPanelMaxHeight = useStableEventHandler(() => {\n if (typeof document === 'undefined') {\n return 0; // render the split panel in its minimum possible size\n } else if (disableBodyScroll && legacyScrollRootRef.current) {\n return legacyScrollRootRef.current.clientHeight - MAIN_PANEL_MIN_HEIGHT;\n } else {\n return document.documentElement.clientHeight - headerHeight - footerHeight - MAIN_PANEL_MIN_HEIGHT;\n }\n });\n\n const [isForcedPosition, setIsForcedPosition] = useState(false);\n const finalSplitPanePosition = isForcedPosition ? 'bottom' : splitPanelPosition;\n\n const splitPaneAvailableOnTheSide = Boolean(splitPanel) && finalSplitPanePosition === 'side';\n const splitPanelOpenOnTheSide = splitPaneAvailableOnTheSide && splitPanelOpen;\n\n const toggleButtonsBarWidth = 0;\n\n const windowWidth = useWindowWidth();\n const { left: leftOffset, right: rightOffset } = useAppLayoutOffsets(rootRef.current);\n const contentWidthWithSplitPanel =\n windowWidth -\n leftOffset -\n rightOffset -\n effectiveToolsWidth -\n effectiveNavigationWidth -\n (disableContentPaddings ? 0 : toggleButtonsBarWidth);\n\n useEffect(() => {\n const contentWidth = contentWidthWithSplitPanel - splitPanelSize;\n setIsForcedPosition(isMobile || (defaults.minContentWidth || 0) > contentWidth);\n // This is a workaround to avoid a forced position due to splitPanelSize, which is\n // user controlled variable.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [contentWidthWithSplitPanel, defaults.minContentWidth, isMobile]);\n\n const navigationClosedWidth = navigationHide || isMobile ? 0 : closedDrawerWidth;\n const toolsClosedWidth = toolsHide || isMobile ? 0 : closedDrawerWidth;\n\n const [splitPanelLastInteraction, setSplitPanelLastInteraction] = useState<undefined | SplitPanelLastInteraction>();\n useEffectOnUpdate(\n () => setSplitPanelLastInteraction(splitPanelOpen ? { type: 'open' } : { type: 'close' }),\n [splitPanelOpen]\n );\n useEffectOnUpdate(() => setSplitPanelLastInteraction({ type: 'position' }), [splitPanelPosition]);\n\n const contentMaxWidthStyle = !isMobile ? { maxWidth: defaults.maxContentWidth } : undefined;\n\n const [splitPanelReportedSize, setSplitPanelReportedSize] = useState(0);\n\n const splitPanelContext: SplitPanelContextProps = {\n topOffset: headerHeight + (finalSplitPanePosition === 'bottom' ? stickyNotificationsHeight || 0 : 0),\n bottomOffset: footerHeight,\n leftOffset:\n leftOffset + (isMobile ? 0 : !navigationHide && navigationOpen ? navigationWidth : navigationClosedWidth),\n rightOffset: rightOffset + (isMobile ? 0 : !toolsHide && toolsOpen ? toolsWidth : toolsClosedWidth),\n position: finalSplitPanePosition,\n size: splitPanelSize,\n getMaxWidth: getSplitPanelMaxWidth,\n getMaxHeight: getSplitPanelMaxHeight,\n getHeader: () => splitPanelHeaderRefObject.current,\n disableContentPaddings,\n contentWidthStyles: contentMaxWidthStyle,\n isOpen: splitPanelOpen,\n isMobile,\n isRefresh: false,\n isForcedPosition,\n lastInteraction: splitPanelLastInteraction,\n splitPanelRef,\n splitPanelHeaderRef,\n onResize: onSplitPanelSizeSet,\n onToggle,\n onPreferencesChange: onSplitPanelPreferencesSet,\n reportSize: setSplitPanelReportedSize,\n };\n\n const contentWrapperProps: ContentWrapperProps = {\n navigationPadding: navigationHide || !!navigationOpen,\n toolsPadding:\n // tools padding is displayed in one of the three cases\n // 1. Nothing on the that screen edge (no tools panel and no split panel)\n (toolsHide && (!splitPanel || finalSplitPanePosition !== 'side')) ||\n // 2. Tools panel is present and open\n toolsVisible ||\n // 3. Split panel is open in side position\n splitPanelOpenOnTheSide,\n isMobile,\n };\n\n const navigationRefs = useFocusControl(navigationOpen);\n const toolsRefs = useFocusControl(toolsOpen);\n\n useImperativeHandle(\n ref,\n () => ({\n openTools: () => onToolsToggle(true),\n closeNavigationIfNecessary: () => {\n if (isMobile) {\n onNavigationToggle(false);\n }\n },\n }),\n [isMobile, onNavigationToggle, onToolsToggle]\n );\n\n const splitPanelBottomOffset =\n (!splitPanel || finalSplitPanePosition !== 'bottom'\n ? undefined\n : splitPanelOpen\n ? splitPanelHeight\n : splitPanelHeaderHeight) ?? undefined;\n\n const contentWidthStyles = !isMobile\n ? { minWidth: defaults.minContentWidth, maxWidth: defaults.maxContentWidth }\n : undefined;\n\n const isToolsDrawerHidden = disableContentPaddings;\n\n const toolsDrawerWidth = (() => {\n if (isMobile) {\n return 0;\n }\n\n const toolsPanelWidth = toolsHide ? 0 : toolsOpen ? toolsWidth : closedDrawerWidth;\n const splitPanelWidth =\n !splitPanel || finalSplitPanePosition !== 'side'\n ? 0\n : splitPanelOpen\n ? splitPanelReportedSize\n : closedDrawerWidth;\n\n return toolsPanelWidth + splitPanelWidth;\n })();\n\n const navigationDrawerWidth = (() => {\n if (isMobile) {\n return 0;\n }\n\n return effectiveNavigationWidth;\n })();\n\n const contentHeaderProps: DarkHeaderProps = {\n isMobile,\n navigationWidth: effectiveNavigationWidth,\n toolsWidth: disableContentPaddings\n ? 0\n : toolsDrawerWidth\n ? toolsDrawerWidth\n : isToolsDrawerHidden\n ? toggleButtonsBarWidth\n : 0,\n };\n\n const previousContentWidth = usePreviousFrameValue(\n contentWidthWithSplitPanel - (splitPanelOpenOnTheSide ? splitPanelReportedSize : 0)\n );\n\n const contentScaleX = (() => {\n if (isMobile || !isMotionEnabled || !disableContentPaddings || !previousContentWidth) {\n return undefined;\n }\n })();\n\n return (\n <div\n className={clsx(styles.root, testutilStyles.root, disableBodyScroll && styles['root-no-scroll'])}\n ref={rootRef}\n >\n <div className={styles['layout-wrapper']} style={contentHeightStyle}>\n {isMobile && (!toolsHide || !navigationHide || breadcrumbs) && (\n <MobileToolbar\n anyPanelOpen={anyPanelOpen}\n toggleRefs={{ navigation: navigationRefs.toggle, tools: toolsRefs.toggle }}\n topOffset={headerHeight}\n ariaLabels={ariaLabels}\n navigationHide={navigationHide}\n toolsHide={toolsHide}\n onNavigationOpen={() => onNavigationToggle(true)}\n onToolsOpen={() => onToolsToggle(true)}\n unfocusable={anyPanelOpen}\n >\n {breadcrumbs}\n </MobileToolbar>\n )}\n <div className={clsx(styles.layout, disableBodyScroll && styles['layout-no-scroll'])}>\n {!navigationHide && (\n <NavigationPanel\n ariaLabels={ariaLabels}\n footerHeight={footerHeight}\n headerHeight={headerHeight}\n isHidden={disableContentPaddings}\n isMobile={isMobile}\n isMotionEnabled={isMotionEnabled}\n navigation={navigation}\n navigationDrawerWidth={navigationDrawerWidth}\n navigationOpen={navigationOpen}\n onClick={isMobile ? onNavigationClick : undefined}\n onNavigationToggle={onNavigationToggle}\n panelHeightStyle={panelHeightStyle}\n toggleRefs={navigationRefs}\n navigationWidth={navigationWidth}\n />\n )}\n <main\n ref={legacyScrollRootRef}\n className={clsx(styles['layout-main'], {\n [styles['layout-main-scrollable']]: disableBodyScroll,\n [styles.unfocusable]: isMobile && anyPanelOpen,\n })}\n >\n <div\n style={{\n marginBottom: splitPanelBottomOffset,\n transform: contentScaleX ? `scaleX(${contentScaleX})` : undefined,\n }}\n >\n {notifications && (\n <DarkHeader\n {...contentHeaderProps}\n topOffset={headerHeight}\n sticky={!isMobile && darkStickyHeaderContentType && stickyNotifications}\n >\n <Notifications\n testUtilsClassName={clsx(styles.notifications, testutilStyles.notifications)}\n labels={ariaLabels}\n topOffset={headerHeight}\n sticky={!isMobile && stickyNotifications}\n ref={notificationsRef}\n isMobile={isMobile}\n navigationPadding={contentWrapperProps.navigationPadding}\n toolsPadding={contentWrapperProps.toolsPadding}\n contentWidthStyles={contentWidthStyles}\n >\n {notifications}\n </Notifications>\n </DarkHeader>\n )}\n {((!isMobile && breadcrumbs) || contentHeader) && (\n <DarkHeader {...contentHeaderProps}>\n <ContentWrapper {...contentWrapperProps} contentWidthStyles={contentWidthStyles}>\n {!isMobile && breadcrumbs && (\n <div\n className={clsx(\n styles.breadcrumbs,\n testutilStyles.breadcrumbs,\n styles['breadcrumbs-desktop'],\n darkStickyHeaderContentType && styles['breadcrumbs-desktop-sticky-header']\n )}\n >\n {breadcrumbs}\n </div>\n )}\n {contentHeader && (\n <div\n className={clsx(\n styles['content-header-wrapper'],\n !hasRenderedNotifications &&\n (isMobile || !breadcrumbs) &&\n styles['content-extra-top-padding'],\n !hasRenderedNotifications && !breadcrumbs && styles['content-header-wrapper-first-child'],\n !disableContentHeaderOverlap && styles['content-header-wrapper-overlapped']\n )}\n >\n {contentHeader}\n </div>\n )}\n </ContentWrapper>\n </DarkHeader>\n )}\n <ContentWrapper\n {...contentWrapperProps}\n ref={mainContentRef}\n disablePaddings={disableContentPaddings}\n // eslint-disable-next-line react/forbid-component-props\n className={clsx(\n !disableContentPaddings && styles['content-wrapper'],\n !disableContentPaddings &&\n (isMobile || !breadcrumbs) &&\n !contentHeader &&\n styles['content-extra-top-padding'],\n !hasRenderedNotifications &&\n !breadcrumbs &&\n !isMobile &&\n !contentHeader &&\n styles['content-wrapper-first-child']\n )}\n >\n <AppLayoutDomContext.RootProvider\n value={{\n stickyOffsetTop:\n headerHeight + (stickyNotificationsHeight !== null ? stickyNotificationsHeight : 0),\n stickyOffsetBottom: footerHeight + (splitPanelBottomOffset || 0),\n }}\n // eslint-disable-next-line react/forbid-component-props\n className={clsx(\n styles.content,\n testutilStyles.content,\n !disableContentHeaderOverlap && contentHeader && styles['content-overlapped']\n )}\n style={contentWidthStyles}\n >\n {content}\n </AppLayoutDomContext.RootProvider>\n </ContentWrapper>\n </div>\n {finalSplitPanePosition === 'bottom' && (\n <SplitPanelWrapper context={splitPanelContext}>{splitPanel}</SplitPanelWrapper>\n )}\n </main>\n\n <ToolsAndSplitPanel\n splitPanel={finalSplitPanePosition === 'side' ? splitPanel : undefined}\n ariaLabels={ariaLabels}\n closedDrawerWidth={closedDrawerWidth}\n contentHeightStyle={contentHeightStyle}\n disableContentPaddings={disableContentPaddings}\n drawerWidth={toolsDrawerWidth}\n footerHeight={footerHeight}\n headerHeight={headerHeight}\n isHidden={isToolsDrawerHidden}\n isMobile={isMobile}\n isMotionEnabled={isMotionEnabled}\n onToolsToggle={onToolsToggle}\n panelHeightStyle={panelHeightStyle}\n splitPanelContext={splitPanelContext}\n splitPanelOpen={splitPanelOpenOnTheSide}\n splitPanelReportedSize={splitPanelReportedSize}\n toggleRefs={toolsRefs}\n tools={tools}\n toolsHide={Boolean(toolsHide)}\n toolsOpen={toolsOpen}\n toolsWidth={toolsWidth}\n />\n </div>\n </div>\n </div>\n );\n }\n);\n\napplyDisplayName(AppLayout, 'AppLayout');\nexport default AppLayout;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app-layout/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,cAAc,MAAM,0BAA0B,CAAC;AACtD,OAAO,gBAAgB,MAAM,4BAA4B,CAAC;AAC1D,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,EACL,iCAAiC,EACjC,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,cAAuC,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAmB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,kBAAkB,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAIhE,IAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAChC,UACE,EAAwG,EACxG,GAAkC;IADhC,IAAA,mBAAuB,EAAvB,WAAW,mBAAG,SAAS,KAAA,EAAE,sBAAwB,EAAxB,cAAc,mBAAG,OAAO,KAAA,EAAE,sBAAwB,EAAxB,cAAc,mBAAG,OAAO,KAAA,EAAK,IAAI,cAAtF,mDAAwF,CAAF;IAG9E,IAAA,iBAAiB,GAAK,gBAAgB,CAAiB,WAAW,CAAC,kBAAlD,CAAmD;IAC5E,IAAM,SAAS,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAEtD,wDAAwD;IACxD,IAAM,KAAK,cAAK,WAAW,aAAA,EAAE,cAAc,gBAAA,EAAE,cAAc,gBAAA,IAAK,IAAI,CAAE,CAAC;IAEvE,IAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAErC,OAAO,CACL,sCAAK,GAAG,EAAE,iBAAiB,IAAM,SAAS,GACvC,SAAS,CAAC,CAAC,CAAC,oBAAC,kBAAkB,eAAK,KAAK,IAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,oBAAC,YAAY,eAAK,KAAK,IAAE,GAAG,EAAE,GAAG,IAAI,CAC5F,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,IAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CACnC,UACE,EAgCiB,EACjB,GAAkC;;;QAhChC,UAAU,gBAAA,EACV,uBAAqB,EAArB,eAAe,mBAAG,GAAG,KAAA,EACrB,cAAc,oBAAA,EACE,wBAAwB,oBAAA,EACxC,KAAK,WAAA,EACL,kBAAgB,EAAhB,UAAU,mBAAG,GAAG,KAAA,EAChB,SAAS,eAAA,EACE,mBAAmB,eAAA,EAC9B,WAAW,iBAAA,EACX,aAAa,mBAAA,EACb,mBAAmB,yBAAA,EACnB,aAAa,mBAAA,EACb,2BAA2B,iCAAA,EAC3B,OAAO,aAAA,EACP,mBAAuB,EAAvB,WAAW,mBAAG,SAAS,KAAA,EACvB,sBAAsB,4BAAA,EACtB,iBAAiB,uBAAA,EACjB,eAAe,qBAAA,EACf,eAAe,qBAAA,EACf,sBAAwB,EAAxB,cAAc,mBAAG,OAAO,KAAA,EACxB,sBAAwB,EAAxB,cAAc,mBAAG,OAAO,KAAA,EACxB,UAAU,gBAAA,EACV,UAAU,gBAAA,EACM,wBAAwB,oBAAA,EACxB,wBAAwB,oBAAA,EACjB,+BAA+B,2BAAA,EACtD,6BAA6B,mCAAA,EAC7B,kBAAkB,wBAAA,EAClB,kBAAkB,wBAAA,EAClB,kBAAkB,wBAAA,EAClB,aAAa,mBAAA;IAIf,IAAI,aAAa,EAAE;QACjB,IAAI,mBAAmB,IAAI,SAAS,EAAE;YACpC,QAAQ,CACN,WAAW,EACX,4JAAwK,CACzK,CAAC;SACH;KACF;IACD,IAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC7C,IAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC7B,IAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAErF,IAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,EAAE,EAAE,eAAe,iBAAA,EAAE,eAAe,iBAAA,EAAE,EAAE,KAAK,CAAC,CAAC;IACzF,IAAM,2BAA2B,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3E,IAAA,KAA8C,eAAe,CACjE,wBAAwB,EACxB,kBAAkB,EAClB,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,EAC1C,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,CACtG,EALM,UAAsB,EAAtB,cAAc,mBAAG,KAAK,KAAA,EAAE,iBAAiB,QAK/C,CAAC;IAEI,IAAA,KAAoC,eAAe,CACvD,mBAAmB,EACnB,aAAa,EACb,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EACrC,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,CAC5F,EALM,UAAiB,EAAjB,SAAS,mBAAG,KAAK,KAAA,EAAE,YAAY,QAKrC,CAAC;IAEF,IAAM,kBAAkB,GAAG,WAAW,CACpC,UAAC,IAAa;QACZ,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,sBAAsB,CAAC,kBAAkB,EAAE,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;IACvD,CAAC,EACD,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CACxC,CAAC;IACF,IAAM,aAAa,GAAG,WAAW,CAC/B,UAAC,IAAa;QACZ,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,sBAAsB,CAAC,aAAa,EAAE,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;IAClD,CAAC,EACD,CAAC,YAAY,EAAE,aAAa,CAAC,CAC9B,CAAC;IACF,IAAM,iBAAiB,GAAG,UAAC,KAAuB;QAChD,IAAM,OAAO,GAAG,WAAW,CACzB,KAAK,CAAC,MAAqB,EAC3B,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,CAAC,CAAE,IAA0B,CAAC,IAAI,EAA1D,CAA0D,CACnE,CAAC;QACF,IAAI,OAAO,EAAE;YACX,kBAAkB,CAAC,KAAK,CAAC,CAAC;SAC3B;IACH,CAAC,CAAC;IAEF,IAAM,iBAAiB,GAAG,CAAC,cAAc,IAAI,cAAc,CAAC;IAC5D,IAAM,YAAY,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC;IAEvC,IAAA,KAAuE,gBAAgB,CAC3F,cAAc,EACd,cAAc,EACd,iBAAiB,CAClB,EAJO,kBAAkB,wBAAA,EAAE,YAAY,kBAAA,EAAE,YAAY,kBAAA,EAAE,gBAAgB,sBAIvE,CAAC;IACI,IAAA,KAA0C,iBAAiB,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,MAAM,EAAX,CAAW,CAAC,EAA/E,mBAAmB,QAAA,EAAE,gBAAgB,QAA0C,CAAC;IACjF,IAAA,KAAoC,iBAAiB,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAA9B,CAA8B,EAAE,CAAC,UAAU,CAAC,CAAC,EAA1G,gBAAgB,QAAA,EAAE,aAAa,QAA2E,CAAC;IAC5G,IAAA,KAAuD,iBAAiB,CAC5E,UAAA,IAAI,IAAI,OAAA,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAA9B,CAA8B,EACtC,CAAC,UAAU,CAAC,CACb,EAHM,sBAAsB,QAAA,EAAE,0BAA0B,QAGxD,CAAC;IACF,IAAM,yBAAyB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAM,mBAAmB,GAAG,YAAY,CAAC,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;IAChG,IAAM,YAAY,GAAG,iBAAiB,IAAI,YAAY,CAAC;IACvD,IAAM,wBAAwB,GAAG,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvF,IAAM,yBAAyB,GAAG,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7E,IAAA,KAAoD,eAAe,CACvE,+BAA+B,EAC/B,6BAA6B,EAC7B,SAAS,EACT;QACE,aAAa,EAAE,WAAW;QAC1B,cAAc,EAAE,uBAAuB;QACvC,aAAa,EAAE,+BAA+B;KAC/C,CACF,EATM,qBAAqB,QAAA,EAAE,wBAAwB,QASrD,CAAC;IACF,IAAM,kBAAkB,GAAG,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,QAAQ,KAAI,QAAQ,CAAC;IAEvE,IAAM,iBAAiB,GAAG,EAAE,CAAC;IAC7B,IAAM,wBAAwB,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAC3G,IAAM,mBAAmB,GACvB,SAAS,IAAI,CAAC,CAAC,UAAU,IAAI,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,QAAQ,MAAK,MAAM,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,iBAAiB,CAAC;IAExB,IAAM,qBAAqB,GAAG,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;IACrE,IAAA,KAA8D,eAAe,CACjF,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB;QACE,aAAa,EAAE,WAAW;QAC1B,cAAc,EAAE,gBAAgB;QAChC,aAAa,EAAE,oBAAoB;KACpC,CACF,EATM,UAAsC,EAAtC,cAAc,mBAAG,qBAAqB,KAAA,EAAE,iBAAiB,QAS/D,CAAC;IAEI,IAAA,KAA8C,eAAe,CACjE,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,EACL;QACE,aAAa,EAAE,WAAW;QAC1B,cAAc,EAAE,gBAAgB;QAChC,aAAa,EAAE,oBAAoB;KACpC,CACF,EATM,UAAsB,EAAtB,cAAc,mBAAG,KAAK,KAAA,EAAE,iBAAiB,QAS/C,CAAC;IAEF,IAAM,cAAc,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,IAAM,mBAAmB,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAEtD,IAAM,0BAA0B,GAAG,WAAW,CAC5C,UAAC,MAAuC;QACtC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACjC,sBAAsB,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC,EACD,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,CAC1D,CAAC;IACF,IAAM,mBAAmB,GAAG,WAAW,CACrC,UAAC,MAAwB;QACvB,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,sBAAsB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC,EACD,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CACxC,CAAC;IACF,IAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,iBAAiB,CAAC,CAAC,cAAc,CAAC,CAAC;QACnC,sBAAsB,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;IACxE,CAAC,EAAE,CAAC,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAE5D,IAAM,qBAAqB,GAAG,qBAAqB,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YACxD,OAAO,GAAG,CAAC;SACZ;QAED,IAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;QACvE,qEAAqE;QACrE,qEAAqE;QACrE,IAAM,cAAc,GAAG,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,IAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,CAAC,eAAe,GAAG,cAAc,CAAC;QACzE,IAAM,UAAU,GAAG,sBAAsB,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAM,sBAAsB,GAAG,qBAAqB,CAAC;QACnD,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,OAAO,CAAC,CAAC,CAAC,sDAAsD;SACjE;aAAM,IAAI,iBAAiB,IAAI,mBAAmB,CAAC,OAAO,EAAE;YAC3D,IAAM,eAAe,GAAG,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC;YACjE,OAAO,eAAe,GAAG,uBAAuB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,GAAG,qBAAqB,CAAC;SAC9G;aAAM;YACL,IAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC;YAC5F,OAAO,eAAe,GAAG,uBAAuB;gBAC9C,CAAC,CAAC,eAAe,GAAG,iCAAiC;gBACrD,CAAC,CAAC,eAAe,GAAG,qBAAqB,CAAC;SAC7C;IACH,CAAC,CAAC,CAAC;IAEG,IAAA,KAA0C,QAAQ,CAAC,KAAK,CAAC,EAAxD,gBAAgB,QAAA,EAAE,mBAAmB,QAAmB,CAAC;IAChE,IAAM,sBAAsB,GAAG,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAEhF,IAAM,2BAA2B,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,sBAAsB,KAAK,MAAM,CAAC;IAC7F,IAAM,uBAAuB,GAAG,2BAA2B,IAAI,cAAc,CAAC;IAE9E,IAAM,qBAAqB,GAAG,CAAC,CAAC;IAEhC,IAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAC/B,IAAA,KAA2C,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAvE,UAAU,UAAA,EAAS,WAAW,WAAyC,CAAC;IACtF,IAAM,0BAA0B,GAC9B,WAAW;QACX,UAAU;QACV,WAAW;QACX,mBAAmB;QACnB,wBAAwB;QACxB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAEvD,SAAS,CAAC;QACR,IAAM,YAAY,GAAG,0BAA0B,GAAG,cAAc,CAAC;QACjE,mBAAmB,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;QAChF,kFAAkF;QAClF,4BAA4B;QAC5B,uDAAuD;IACzD,CAAC,EAAE,CAAC,0BAA0B,EAAE,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;IAErE,IAAM,qBAAqB,GAAG,cAAc,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACjF,IAAM,gBAAgB,GAAG,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAEjE,IAAA,KAA4D,QAAQ,EAAyC,EAA5G,yBAAyB,QAAA,EAAE,4BAA4B,QAAqD,CAAC;IACpH,iBAAiB,CACf,cAAM,OAAA,4BAA4B,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAnF,CAAmF,EACzF,CAAC,cAAc,CAAC,CACjB,CAAC;IACF,iBAAiB,CAAC,cAAM,OAAA,4BAA4B,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAlD,CAAkD,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAElG,IAAM,oBAAoB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtF,IAAA,KAAsD,QAAQ,CAAC,CAAC,CAAC,EAAhE,sBAAsB,QAAA,EAAE,yBAAyB,QAAe,CAAC;IAExE,IAAM,iBAAiB,GAA2B;QAChD,SAAS,EAAE,YAAY,GAAG,CAAC,sBAAsB,KAAK,QAAQ,CAAC,CAAC,CAAC,yBAAyB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,YAAY,EAAE,YAAY;QAC1B,UAAU,EACR,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,qBAAqB,CAAC;QAC3G,WAAW,EAAE,WAAW,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACnG,QAAQ,EAAE,sBAAsB;QAChC,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,qBAAqB;QAClC,YAAY,EAAE,sBAAsB;QACpC,SAAS,EAAE,cAAM,OAAA,yBAAyB,CAAC,OAAO,EAAjC,CAAiC;QAClD,sBAAsB,wBAAA;QACtB,kBAAkB,EAAE,oBAAoB;QACxC,MAAM,EAAE,cAAc;QACtB,QAAQ,UAAA;QACR,SAAS,EAAE,KAAK;QAChB,gBAAgB,kBAAA;QAChB,eAAe,EAAE,yBAAyB;QAC1C,aAAa,eAAA;QACb,mBAAmB,qBAAA;QACnB,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,UAAA;QACR,mBAAmB,EAAE,0BAA0B;QAC/C,UAAU,EAAE,yBAAyB;KACtC,CAAC;IAEF,IAAM,mBAAmB,GAAwB;QAC/C,iBAAiB,EAAE,cAAc,IAAI,CAAC,CAAC,cAAc;QACrD,YAAY;QACV,uDAAuD;QACvD,yEAAyE;QACzE,CAAC,SAAS,IAAI,CAAC,CAAC,UAAU,IAAI,sBAAsB,KAAK,MAAM,CAAC,CAAC;YACjE,qCAAqC;YACrC,YAAY;YACZ,0CAA0C;YAC1C,uBAAuB;QACzB,QAAQ,UAAA;KACT,CAAC;IAEF,IAAM,cAAc,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IACvD,IAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAE7C,mBAAmB,CACjB,GAAG,EACH,cAAM,OAAA,CAAC;QACL,SAAS,EAAE,cAAM,OAAA,aAAa,CAAC,IAAI,CAAC,EAAnB,CAAmB;QACpC,0BAA0B,EAAE;YAC1B,IAAI,QAAQ,EAAE;gBACZ,kBAAkB,CAAC,KAAK,CAAC,CAAC;aAC3B;QACH,CAAC;KACF,CAAC,EAPI,CAOJ,EACF,CAAC,QAAQ,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAC9C,CAAC;IAEF,IAAM,sBAAsB,GAC1B,MAAA,CAAC,CAAC,UAAU,IAAI,sBAAsB,KAAK,QAAQ;QACjD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,sBAAsB,CAAC,mCAAI,SAAS,CAAC;IAE3C,IAAM,kBAAkB,GAAG,CAAC,QAAQ;QAClC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE;QAC5E,CAAC,CAAC,SAAS,CAAC;IAEd,IAAM,mBAAmB,GAAG,sBAAsB,CAAC;IAEnD,IAAM,gBAAgB,GAAG,CAAC;QACxB,IAAI,QAAQ,EAAE;YACZ,OAAO,CAAC,CAAC;SACV;QAED,IAAM,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC;QACnF,IAAM,eAAe,GACnB,CAAC,UAAU,IAAI,sBAAsB,KAAK,MAAM;YAC9C,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,sBAAsB;gBACxB,CAAC,CAAC,iBAAiB,CAAC;QAExB,OAAO,eAAe,GAAG,eAAe,CAAC;IAC3C,CAAC,CAAC,EAAE,CAAC;IAEL,IAAM,qBAAqB,GAAG,CAAC;QAC7B,IAAI,QAAQ,EAAE;YACZ,OAAO,CAAC,CAAC;SACV;QAED,OAAO,wBAAwB,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC;IAEL,IAAM,kBAAkB,GAAoB;QAC1C,QAAQ,UAAA;QACR,eAAe,EAAE,wBAAwB;QACzC,UAAU,EAAE,sBAAsB;YAChC,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,mBAAmB;oBACrB,CAAC,CAAC,qBAAqB;oBACvB,CAAC,CAAC,CAAC;KACN,CAAC;IAEF,IAAM,oBAAoB,GAAG,qBAAqB,CAChD,0BAA0B,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CACpF,CAAC;IAEF,IAAM,aAAa,GAAG,CAAC;QACrB,IAAI,QAAQ,IAAI,CAAC,eAAe,IAAI,CAAC,sBAAsB,IAAI,CAAC,oBAAoB,EAAE;YACpF,OAAO,SAAS,CAAC;SAClB;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,CACL,6BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,iBAAiB,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAChG,GAAG,EAAE,OAAO;QAEZ,6BAAK,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,kBAAkB;YAChE,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,cAAc,IAAI,WAAW,CAAC,IAAI,CAC7D,oBAAC,aAAa,IACZ,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,EAC1E,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,cAAM,OAAA,kBAAkB,CAAC,IAAI,CAAC,EAAxB,CAAwB,EAChD,WAAW,EAAE,cAAM,OAAA,aAAa,CAAC,IAAI,CAAC,EAAnB,CAAmB,EACtC,WAAW,EAAE,YAAY,IAExB,WAAW,CACE,CACjB;YACD,6BAAK,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACjF,CAAC,cAAc,IAAI,CAClB,oBAAC,eAAe,IACd,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,UAAU,EACtB,qBAAqB,EAAE,qBAAqB,EAC5C,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,EACjD,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,cAAc,EAC1B,eAAe,EAAE,eAAe,GAChC,CACH;gBACD,8BACE,GAAG,EAAE,mBAAmB,EACxB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;wBACnC,GAAC,MAAM,CAAC,wBAAwB,CAAC,IAAG,iBAAiB;wBACrD,GAAC,cAAc,CAAC,0BAA0B,CAAC,IAAG,iBAAiB;wBAC/D,GAAC,MAAM,CAAC,WAAW,IAAG,QAAQ,IAAI,YAAY;4BAC9C;oBAEF,6BACE,KAAK,EAAE;4BACL,YAAY,EAAE,sBAAsB;4BACpC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,iBAAU,aAAa,MAAG,CAAC,CAAC,CAAC,SAAS;yBAClE;wBAEA,aAAa,IAAI,CAChB,oBAAC,UAAU,eACL,kBAAkB,IACtB,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAC/C,MAAM,EAAE,CAAC,QAAQ,IAAI,2BAA2B,IAAI,mBAAmB;4BAEvE,oBAAC,aAAa,IACZ,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,aAAa,CAAC,EAC5E,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,CAAC,QAAQ,IAAI,mBAAmB,EACxC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,mBAAmB,CAAC,iBAAiB,EACxD,YAAY,EAAE,mBAAmB,CAAC,YAAY,EAC9C,kBAAkB,EAAE,kBAAkB,IAErC,aAAa,CACA,CACL,CACd;wBACA,CAAC,CAAC,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,aAAa,CAAC,IAAI,CAChD,oBAAC,UAAU,eAAK,kBAAkB;4BAChC,oBAAC,cAAc,eAAK,mBAAmB,IAAE,kBAAkB,EAAE,kBAAkB;gCAC5E,CAAC,QAAQ,IAAI,WAAW,IAAI,CAC3B,6BACE,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,WAAW,EAClB,cAAc,CAAC,WAAW,EAC1B,MAAM,CAAC,qBAAqB,CAAC,EAC7B,2BAA2B,IAAI,MAAM,CAAC,mCAAmC,CAAC,CAC3E,IAEA,WAAW,CACR,CACP;gCACA,aAAa,IAAI,CAChB,6BACE,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,wBAAwB,CAAC,EAChC,CAAC,wBAAwB;wCACvB,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC;wCAC1B,MAAM,CAAC,2BAA2B,CAAC,EACrC,CAAC,wBAAwB,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,oCAAoC,CAAC,EACzF,CAAC,2BAA2B,IAAI,MAAM,CAAC,mCAAmC,CAAC,CAC5E,IAEA,aAAa,CACV,CACP,CACc,CACN,CACd;wBACD,oBAAC,cAAc,eACT,mBAAmB,IACvB,GAAG,EAAE,cAAc,EACnB,eAAe,EAAE,sBAAsB;4BACvC,wDAAwD;4BACxD,SAAS,EAAE,IAAI,CACb,CAAC,sBAAsB,IAAI,MAAM,CAAC,iBAAiB,CAAC,EACpD,CAAC,sBAAsB;gCACrB,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC;gCAC1B,CAAC,aAAa;gCACd,MAAM,CAAC,2BAA2B,CAAC,EACrC,CAAC,wBAAwB;gCACvB,CAAC,WAAW;gCACZ,CAAC,QAAQ;gCACT,CAAC,aAAa;gCACd,MAAM,CAAC,6BAA6B,CAAC,CACxC;4BAED,6BACE,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,OAAO,EACd,cAAc,CAAC,OAAO,EACtB,CAAC,2BAA2B,IAAI,aAAa,IAAI,MAAM,CAAC,oBAAoB,CAAC,CAC9E,EACD,KAAK,EAAE,kBAAkB;gCAEzB,oBAAC,gBAAgB,CAAC,QAAQ,IACxB,KAAK,EAAE;wCACL,eAAe,EACb,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;4CACtC,CAAC,yBAAyB,KAAK,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;wCACtE,kBAAkB,EAAE,YAAY,GAAG,CAAC,sBAAsB,IAAI,CAAC,CAAC;qCACjE,IAEA,OAAO,CACkB,CACxB,CACS,CACb;oBACL,sBAAsB,KAAK,QAAQ,IAAI,CACtC,oBAAC,iBAAiB,IAAC,OAAO,EAAE,iBAAiB,IAAG,UAAU,CAAqB,CAChF,CACI;gBAEP,oBAAC,kBAAkB,IACjB,UAAU,EAAE,sBAAsB,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EACtE,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,kBAAkB,EAAE,kBAAkB,EACtC,sBAAsB,EAAE,sBAAsB,EAC9C,WAAW,EAAE,gBAAgB,EAC7B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,mBAAmB,EAC7B,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,uBAAuB,EACvC,sBAAsB,EAAE,sBAAsB,EAC9C,UAAU,EAAE,SAAS,EACrB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAC7B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,GACtB,CACE,CACF,CACF,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACzC,eAAe,SAAS,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport { useControllable } from '../internal/hooks/use-controllable';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { applyDefaults } from './defaults';\nimport { AppLayoutProps } from './interfaces';\nimport { Notifications } from './notifications';\nimport { MobileToolbar } from './mobile-toolbar';\nimport { SplitPanelWrapper } from './split-panel-wrapper';\nimport { useFocusControl } from './utils/use-focus-control';\nimport useWindowWidth from './utils/use-window-width';\nimport useContentHeight from './utils/use-content-height';\nimport styles from './styles.css.js';\nimport testutilStyles from './test-classes/styles.css.js';\nimport { findUpUntil } from '../internal/utils/dom';\nimport { AppLayoutContext } from '../internal/context/app-layout-context';\nimport { useContainerQuery } from '../internal/hooks/container-queries';\nimport { useStableEventHandler } from '../internal/hooks/use-stable-event-handler';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { SplitPanelContextProps, SplitPanelLastInteraction } from '../internal/context/split-panel-context';\nimport {\n CONSTRAINED_MAIN_PANEL_MIN_HEIGHT,\n CONSTRAINED_PAGE_HEIGHT,\n getSplitPanelDefaultSize,\n MAIN_PANEL_MIN_HEIGHT,\n} from '../split-panel/utils/size-utils';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport ContentWrapper, { ContentWrapperProps } from './content-wrapper';\nimport { DarkHeader, DarkHeaderProps } from './dark-header';\nimport { isMotionDisabled } from '../internal/motion';\nimport { useEffectOnUpdate } from '../internal/hooks/use-effect-on-update';\nimport { NavigationPanel } from './navigation-panel';\nimport { ToolsAndSplitPanel } from './tools-and-split-panel';\nimport { usePreviousFrameValue } from '../internal/hooks/use-previous-frame';\nimport useAppLayoutOffsets from './utils/use-content-width';\nimport { isDevelopment } from '../internal/is-development';\nimport { warnOnce } from '../internal/logging';\n\nimport RefreshedAppLayout from './visual-refresh';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\n\nexport { AppLayoutProps };\n\nconst AppLayout = React.forwardRef(\n (\n { contentType = 'default', headerSelector = '#b #h', footerSelector = '#b #f', ...rest }: AppLayoutProps,\n ref: React.Ref<AppLayoutProps.Ref>\n ) => {\n const { __internalRootRef } = useBaseComponent<HTMLDivElement>('AppLayout');\n const isRefresh = useVisualRefresh(__internalRootRef);\n\n // This re-builds the props including the default values\n const props = { contentType, headerSelector, footerSelector, ...rest };\n\n const baseProps = getBaseProps(rest);\n\n return (\n <div ref={__internalRootRef} {...baseProps}>\n {isRefresh ? <RefreshedAppLayout {...props} ref={ref} /> : <OldAppLayout {...props} ref={ref} />}\n </div>\n );\n }\n);\n\nconst OldAppLayout = React.forwardRef(\n (\n {\n navigation,\n navigationWidth = 280,\n navigationHide,\n navigationOpen: controlledNavigationOpen,\n tools,\n toolsWidth = 290,\n toolsHide,\n toolsOpen: controlledToolsOpen,\n breadcrumbs,\n notifications,\n stickyNotifications,\n contentHeader,\n disableContentHeaderOverlap,\n content,\n contentType = 'default',\n disableContentPaddings,\n disableBodyScroll,\n maxContentWidth,\n minContentWidth,\n headerSelector = '#b #h',\n footerSelector = '#b #f',\n ariaLabels,\n splitPanel,\n splitPanelSize: controlledSplitPanelSize,\n splitPanelOpen: controlledSplitPanelOpen,\n splitPanelPreferences: controlledSplitPanelPreferences,\n onSplitPanelPreferencesChange,\n onSplitPanelResize,\n onSplitPanelToggle,\n onNavigationChange,\n onToolsChange,\n }: AppLayoutProps,\n ref: React.Ref<AppLayoutProps.Ref>\n ) => {\n if (isDevelopment) {\n if (controlledToolsOpen && toolsHide) {\n warnOnce(\n 'AppLayout',\n `You have enabled both the \\`toolsOpen\\` prop and the \\`toolsHide\\` prop. This is not supported. Set \\`toolsOpen\\` to \\`false\\` when you set \\`toolsHide\\` to \\`true\\`.`\n );\n }\n }\n const rootRef = useRef<HTMLDivElement>(null);\n const isMobile = useMobile();\n const isMotionEnabled = rootRef.current ? !isMotionDisabled(rootRef.current) : false;\n\n const defaults = applyDefaults(contentType, { maxContentWidth, minContentWidth }, false);\n const darkStickyHeaderContentType = ['cards', 'table'].indexOf(contentType) > -1;\n const [navigationOpen = false, setNavigationOpen] = useControllable(\n controlledNavigationOpen,\n onNavigationChange,\n isMobile ? false : defaults.navigationOpen,\n { componentName: 'AppLayout', controlledProp: 'navigationOpen', changeHandler: 'onNavigationChange' }\n );\n\n const [toolsOpen = false, setToolsOpen] = useControllable(\n controlledToolsOpen,\n onToolsChange,\n isMobile ? false : defaults.toolsOpen,\n { componentName: 'AppLayout', controlledProp: 'toolsOpen', changeHandler: 'onToolsChange' }\n );\n\n const onNavigationToggle = useCallback(\n (open: boolean) => {\n setNavigationOpen(open);\n fireNonCancelableEvent(onNavigationChange, { open });\n },\n [setNavigationOpen, onNavigationChange]\n );\n const onToolsToggle = useCallback(\n (open: boolean) => {\n setToolsOpen(open);\n fireNonCancelableEvent(onToolsChange, { open });\n },\n [setToolsOpen, onToolsChange]\n );\n const onNavigationClick = (event: React.MouseEvent) => {\n const hasLink = findUpUntil(\n event.target as HTMLElement,\n node => node.tagName === 'A' && !!(node as HTMLAnchorElement).href\n );\n if (hasLink) {\n onNavigationToggle(false);\n }\n };\n\n const navigationVisible = !navigationHide && navigationOpen;\n const toolsVisible = !toolsHide && toolsOpen;\n\n const { contentHeightStyle, headerHeight, footerHeight, panelHeightStyle } = useContentHeight(\n headerSelector,\n footerSelector,\n disableBodyScroll\n );\n const [notificationsHeight, notificationsRef] = useContainerQuery(rect => rect.height);\n const [splitPanelHeight, splitPanelRef] = useContainerQuery(rect => (splitPanel ? rect.height : 0), [splitPanel]);\n const [splitPanelHeaderHeight, splitPanelHeaderMeasureRef] = useContainerQuery(\n rect => (splitPanel ? rect.height : 0),\n [splitPanel]\n );\n const splitPanelHeaderRefObject = useRef(null);\n const splitPanelHeaderRef = useMergeRefs(splitPanelHeaderMeasureRef, splitPanelHeaderRefObject);\n const anyPanelOpen = navigationVisible || toolsVisible;\n const hasRenderedNotifications = notificationsHeight ? notificationsHeight > 0 : false;\n const stickyNotificationsHeight = stickyNotifications ? notificationsHeight : null;\n\n const [splitPanelPreferences, setSplitPanelPreferences] = useControllable(\n controlledSplitPanelPreferences,\n onSplitPanelPreferencesChange,\n undefined,\n {\n componentName: 'AppLayout',\n controlledProp: 'splitPanelPreferences',\n changeHandler: 'onSplitPanelPreferencesChange',\n }\n );\n const splitPanelPosition = splitPanelPreferences?.position || 'bottom';\n\n const closedDrawerWidth = 40;\n const effectiveNavigationWidth = navigationHide ? 0 : navigationOpen ? navigationWidth : closedDrawerWidth;\n const effectiveToolsWidth =\n toolsHide && (!splitPanel || splitPanelPreferences?.position !== 'side')\n ? 0\n : toolsOpen\n ? toolsWidth\n : closedDrawerWidth;\n\n const defaultSplitPanelSize = getSplitPanelDefaultSize(splitPanelPosition);\n const [splitPanelSize = defaultSplitPanelSize, setSplitPanelSize] = useControllable(\n controlledSplitPanelSize,\n onSplitPanelResize,\n defaultSplitPanelSize,\n {\n componentName: 'AppLayout',\n controlledProp: 'splitPanelSize',\n changeHandler: 'onSplitPanelResize',\n }\n );\n\n const [splitPanelOpen = false, setSplitPanelOpen] = useControllable(\n controlledSplitPanelOpen,\n onSplitPanelToggle,\n false,\n {\n componentName: 'AppLayout',\n controlledProp: 'splitPanelOpen',\n changeHandler: 'onSplitPanelToggle',\n }\n );\n\n const mainContentRef = useRef<HTMLDivElement>(null);\n const legacyScrollRootRef = useRef<HTMLElement>(null);\n\n const onSplitPanelPreferencesSet = useCallback(\n (detail: { position: 'side' | 'bottom' }) => {\n setSplitPanelPreferences(detail);\n fireNonCancelableEvent(onSplitPanelPreferencesChange, detail);\n },\n [setSplitPanelPreferences, onSplitPanelPreferencesChange]\n );\n const onSplitPanelSizeSet = useCallback(\n (detail: { size: number }) => {\n setSplitPanelSize(detail.size);\n fireNonCancelableEvent(onSplitPanelResize, detail);\n },\n [setSplitPanelSize, onSplitPanelResize]\n );\n const onToggle = useCallback(() => {\n setSplitPanelOpen(!splitPanelOpen);\n fireNonCancelableEvent(onSplitPanelToggle, { open: !splitPanelOpen });\n }, [setSplitPanelOpen, splitPanelOpen, onSplitPanelToggle]);\n\n const getSplitPanelMaxWidth = useStableEventHandler(() => {\n if (!mainContentRef.current || !defaults.minContentWidth) {\n return NaN;\n }\n\n const width = parseInt(getComputedStyle(mainContentRef.current).width);\n // when disableContentPaddings is true there is less available space,\n // so we subtract space-scaled-2x-xxxl * 2 for left and right padding\n const contentPadding = disableContentPaddings ? 80 : 0;\n const spaceAvailable = width - defaults.minContentWidth - contentPadding;\n const spaceTaken = finalSplitPanePosition === 'side' ? splitPanelSize : 0;\n return Math.max(0, spaceTaken + spaceAvailable);\n });\n\n const getSplitPanelMaxHeight = useStableEventHandler(() => {\n if (typeof document === 'undefined') {\n return 0; // render the split panel in its minimum possible size\n } else if (disableBodyScroll && legacyScrollRootRef.current) {\n const availableHeight = legacyScrollRootRef.current.clientHeight;\n return availableHeight < CONSTRAINED_PAGE_HEIGHT ? availableHeight : availableHeight - MAIN_PANEL_MIN_HEIGHT;\n } else {\n const availableHeight = document.documentElement.clientHeight - headerHeight - footerHeight;\n return availableHeight < CONSTRAINED_PAGE_HEIGHT\n ? availableHeight - CONSTRAINED_MAIN_PANEL_MIN_HEIGHT\n : availableHeight - MAIN_PANEL_MIN_HEIGHT;\n }\n });\n\n const [isForcedPosition, setIsForcedPosition] = useState(false);\n const finalSplitPanePosition = isForcedPosition ? 'bottom' : splitPanelPosition;\n\n const splitPaneAvailableOnTheSide = Boolean(splitPanel) && finalSplitPanePosition === 'side';\n const splitPanelOpenOnTheSide = splitPaneAvailableOnTheSide && splitPanelOpen;\n\n const toggleButtonsBarWidth = 0;\n\n const windowWidth = useWindowWidth();\n const { left: leftOffset, right: rightOffset } = useAppLayoutOffsets(rootRef.current);\n const contentWidthWithSplitPanel =\n windowWidth -\n leftOffset -\n rightOffset -\n effectiveToolsWidth -\n effectiveNavigationWidth -\n (disableContentPaddings ? 0 : toggleButtonsBarWidth);\n\n useEffect(() => {\n const contentWidth = contentWidthWithSplitPanel - splitPanelSize;\n setIsForcedPosition(isMobile || (defaults.minContentWidth || 0) > contentWidth);\n // This is a workaround to avoid a forced position due to splitPanelSize, which is\n // user controlled variable.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [contentWidthWithSplitPanel, defaults.minContentWidth, isMobile]);\n\n const navigationClosedWidth = navigationHide || isMobile ? 0 : closedDrawerWidth;\n const toolsClosedWidth = toolsHide || isMobile ? 0 : closedDrawerWidth;\n\n const [splitPanelLastInteraction, setSplitPanelLastInteraction] = useState<undefined | SplitPanelLastInteraction>();\n useEffectOnUpdate(\n () => setSplitPanelLastInteraction(splitPanelOpen ? { type: 'open' } : { type: 'close' }),\n [splitPanelOpen]\n );\n useEffectOnUpdate(() => setSplitPanelLastInteraction({ type: 'position' }), [splitPanelPosition]);\n\n const contentMaxWidthStyle = !isMobile ? { maxWidth: defaults.maxContentWidth } : undefined;\n\n const [splitPanelReportedSize, setSplitPanelReportedSize] = useState(0);\n\n const splitPanelContext: SplitPanelContextProps = {\n topOffset: headerHeight + (finalSplitPanePosition === 'bottom' ? stickyNotificationsHeight || 0 : 0),\n bottomOffset: footerHeight,\n leftOffset:\n leftOffset + (isMobile ? 0 : !navigationHide && navigationOpen ? navigationWidth : navigationClosedWidth),\n rightOffset: rightOffset + (isMobile ? 0 : !toolsHide && toolsOpen ? toolsWidth : toolsClosedWidth),\n position: finalSplitPanePosition,\n size: splitPanelSize,\n getMaxWidth: getSplitPanelMaxWidth,\n getMaxHeight: getSplitPanelMaxHeight,\n getHeader: () => splitPanelHeaderRefObject.current,\n disableContentPaddings,\n contentWidthStyles: contentMaxWidthStyle,\n isOpen: splitPanelOpen,\n isMobile,\n isRefresh: false,\n isForcedPosition,\n lastInteraction: splitPanelLastInteraction,\n splitPanelRef,\n splitPanelHeaderRef,\n onResize: onSplitPanelSizeSet,\n onToggle,\n onPreferencesChange: onSplitPanelPreferencesSet,\n reportSize: setSplitPanelReportedSize,\n };\n\n const contentWrapperProps: ContentWrapperProps = {\n navigationPadding: navigationHide || !!navigationOpen,\n toolsPadding:\n // tools padding is displayed in one of the three cases\n // 1. Nothing on the that screen edge (no tools panel and no split panel)\n (toolsHide && (!splitPanel || finalSplitPanePosition !== 'side')) ||\n // 2. Tools panel is present and open\n toolsVisible ||\n // 3. Split panel is open in side position\n splitPanelOpenOnTheSide,\n isMobile,\n };\n\n const navigationRefs = useFocusControl(navigationOpen);\n const toolsRefs = useFocusControl(toolsOpen);\n\n useImperativeHandle(\n ref,\n () => ({\n openTools: () => onToolsToggle(true),\n closeNavigationIfNecessary: () => {\n if (isMobile) {\n onNavigationToggle(false);\n }\n },\n }),\n [isMobile, onNavigationToggle, onToolsToggle]\n );\n\n const splitPanelBottomOffset =\n (!splitPanel || finalSplitPanePosition !== 'bottom'\n ? undefined\n : splitPanelOpen\n ? splitPanelHeight\n : splitPanelHeaderHeight) ?? undefined;\n\n const contentWidthStyles = !isMobile\n ? { minWidth: defaults.minContentWidth, maxWidth: defaults.maxContentWidth }\n : undefined;\n\n const isToolsDrawerHidden = disableContentPaddings;\n\n const toolsDrawerWidth = (() => {\n if (isMobile) {\n return 0;\n }\n\n const toolsPanelWidth = toolsHide ? 0 : toolsOpen ? toolsWidth : closedDrawerWidth;\n const splitPanelWidth =\n !splitPanel || finalSplitPanePosition !== 'side'\n ? 0\n : splitPanelOpen\n ? splitPanelReportedSize\n : closedDrawerWidth;\n\n return toolsPanelWidth + splitPanelWidth;\n })();\n\n const navigationDrawerWidth = (() => {\n if (isMobile) {\n return 0;\n }\n\n return effectiveNavigationWidth;\n })();\n\n const contentHeaderProps: DarkHeaderProps = {\n isMobile,\n navigationWidth: effectiveNavigationWidth,\n toolsWidth: disableContentPaddings\n ? 0\n : toolsDrawerWidth\n ? toolsDrawerWidth\n : isToolsDrawerHidden\n ? toggleButtonsBarWidth\n : 0,\n };\n\n const previousContentWidth = usePreviousFrameValue(\n contentWidthWithSplitPanel - (splitPanelOpenOnTheSide ? splitPanelReportedSize : 0)\n );\n\n const contentScaleX = (() => {\n if (isMobile || !isMotionEnabled || !disableContentPaddings || !previousContentWidth) {\n return undefined;\n }\n })();\n\n return (\n <div\n className={clsx(styles.root, testutilStyles.root, disableBodyScroll && styles['root-no-scroll'])}\n ref={rootRef}\n >\n <div className={styles['layout-wrapper']} style={contentHeightStyle}>\n {isMobile && (!toolsHide || !navigationHide || breadcrumbs) && (\n <MobileToolbar\n anyPanelOpen={anyPanelOpen}\n toggleRefs={{ navigation: navigationRefs.toggle, tools: toolsRefs.toggle }}\n topOffset={headerHeight}\n ariaLabels={ariaLabels}\n navigationHide={navigationHide}\n toolsHide={toolsHide}\n onNavigationOpen={() => onNavigationToggle(true)}\n onToolsOpen={() => onToolsToggle(true)}\n unfocusable={anyPanelOpen}\n >\n {breadcrumbs}\n </MobileToolbar>\n )}\n <div className={clsx(styles.layout, disableBodyScroll && styles['layout-no-scroll'])}>\n {!navigationHide && (\n <NavigationPanel\n ariaLabels={ariaLabels}\n footerHeight={footerHeight}\n headerHeight={headerHeight}\n isHidden={disableContentPaddings}\n isMobile={isMobile}\n isMotionEnabled={isMotionEnabled}\n navigation={navigation}\n navigationDrawerWidth={navigationDrawerWidth}\n navigationOpen={navigationOpen}\n onClick={isMobile ? onNavigationClick : undefined}\n onNavigationToggle={onNavigationToggle}\n panelHeightStyle={panelHeightStyle}\n toggleRefs={navigationRefs}\n navigationWidth={navigationWidth}\n />\n )}\n <main\n ref={legacyScrollRootRef}\n className={clsx(styles['layout-main'], {\n [styles['layout-main-scrollable']]: disableBodyScroll,\n [testutilStyles['disable-body-scroll-root']]: disableBodyScroll,\n [styles.unfocusable]: isMobile && anyPanelOpen,\n })}\n >\n <div\n style={{\n marginBottom: splitPanelBottomOffset,\n transform: contentScaleX ? `scaleX(${contentScaleX})` : undefined,\n }}\n >\n {notifications && (\n <DarkHeader\n {...contentHeaderProps}\n topOffset={disableBodyScroll ? 0 : headerHeight}\n sticky={!isMobile && darkStickyHeaderContentType && stickyNotifications}\n >\n <Notifications\n testUtilsClassName={clsx(styles.notifications, testutilStyles.notifications)}\n labels={ariaLabels}\n topOffset={headerHeight}\n sticky={!isMobile && stickyNotifications}\n ref={notificationsRef}\n isMobile={isMobile}\n navigationPadding={contentWrapperProps.navigationPadding}\n toolsPadding={contentWrapperProps.toolsPadding}\n contentWidthStyles={contentWidthStyles}\n >\n {notifications}\n </Notifications>\n </DarkHeader>\n )}\n {((!isMobile && breadcrumbs) || contentHeader) && (\n <DarkHeader {...contentHeaderProps}>\n <ContentWrapper {...contentWrapperProps} contentWidthStyles={contentWidthStyles}>\n {!isMobile && breadcrumbs && (\n <div\n className={clsx(\n styles.breadcrumbs,\n testutilStyles.breadcrumbs,\n styles['breadcrumbs-desktop'],\n darkStickyHeaderContentType && styles['breadcrumbs-desktop-sticky-header']\n )}\n >\n {breadcrumbs}\n </div>\n )}\n {contentHeader && (\n <div\n className={clsx(\n styles['content-header-wrapper'],\n !hasRenderedNotifications &&\n (isMobile || !breadcrumbs) &&\n styles['content-extra-top-padding'],\n !hasRenderedNotifications && !breadcrumbs && styles['content-header-wrapper-first-child'],\n !disableContentHeaderOverlap && styles['content-header-wrapper-overlapped']\n )}\n >\n {contentHeader}\n </div>\n )}\n </ContentWrapper>\n </DarkHeader>\n )}\n <ContentWrapper\n {...contentWrapperProps}\n ref={mainContentRef}\n disablePaddings={disableContentPaddings}\n // eslint-disable-next-line react/forbid-component-props\n className={clsx(\n !disableContentPaddings && styles['content-wrapper'],\n !disableContentPaddings &&\n (isMobile || !breadcrumbs) &&\n !contentHeader &&\n styles['content-extra-top-padding'],\n !hasRenderedNotifications &&\n !breadcrumbs &&\n !isMobile &&\n !contentHeader &&\n styles['content-wrapper-first-child']\n )}\n >\n <div\n className={clsx(\n styles.content,\n testutilStyles.content,\n !disableContentHeaderOverlap && contentHeader && styles['content-overlapped']\n )}\n style={contentWidthStyles}\n >\n <AppLayoutContext.Provider\n value={{\n stickyOffsetTop:\n (disableBodyScroll ? 0 : headerHeight) +\n (stickyNotificationsHeight !== null ? stickyNotificationsHeight : 0),\n stickyOffsetBottom: footerHeight + (splitPanelBottomOffset || 0),\n }}\n >\n {content}\n </AppLayoutContext.Provider>\n </div>\n </ContentWrapper>\n </div>\n {finalSplitPanePosition === 'bottom' && (\n <SplitPanelWrapper context={splitPanelContext}>{splitPanel}</SplitPanelWrapper>\n )}\n </main>\n\n <ToolsAndSplitPanel\n splitPanel={finalSplitPanePosition === 'side' ? splitPanel : undefined}\n ariaLabels={ariaLabels}\n closedDrawerWidth={closedDrawerWidth}\n contentHeightStyle={contentHeightStyle}\n disableContentPaddings={disableContentPaddings}\n drawerWidth={toolsDrawerWidth}\n footerHeight={footerHeight}\n headerHeight={headerHeight}\n isHidden={isToolsDrawerHidden}\n isMobile={isMobile}\n isMotionEnabled={isMotionEnabled}\n onToolsToggle={onToolsToggle}\n panelHeightStyle={panelHeightStyle}\n splitPanelContext={splitPanelContext}\n splitPanelOpen={splitPanelOpenOnTheSide}\n splitPanelReportedSize={splitPanelReportedSize}\n toggleRefs={toolsRefs}\n tools={tools}\n toolsHide={Boolean(toolsHide)}\n toolsOpen={toolsOpen}\n toolsWidth={toolsWidth}\n />\n </div>\n </div>\n </div>\n );\n }\n);\n\napplyDisplayName(AppLayout, 'AppLayout');\nexport default AppLayout;\n"]}
@@ -1,17 +1,18 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "root": "awsui_root_1fj9k_19hjm_5",
5
- "navigation": "awsui_navigation_1fj9k_19hjm_9",
6
- "navigation-toggle": "awsui_navigation-toggle_1fj9k_19hjm_13",
7
- "navigation-close": "awsui_navigation-close_1fj9k_19hjm_17",
8
- "content": "awsui_content_1fj9k_19hjm_21",
9
- "notifications": "awsui_notifications_1fj9k_19hjm_25",
10
- "breadcrumbs": "awsui_breadcrumbs_1fj9k_19hjm_29",
11
- "tools": "awsui_tools_1fj9k_19hjm_33",
12
- "tools-close": "awsui_tools-close_1fj9k_19hjm_37",
13
- "tools-toggle": "awsui_tools-toggle_1fj9k_19hjm_41",
14
- "drawer-closed": "awsui_drawer-closed_1fj9k_19hjm_45",
15
- "mobile-bar": "awsui_mobile-bar_1fj9k_19hjm_49"
4
+ "root": "awsui_root_1fj9k_avnjw_5",
5
+ "navigation": "awsui_navigation_1fj9k_avnjw_9",
6
+ "navigation-toggle": "awsui_navigation-toggle_1fj9k_avnjw_13",
7
+ "navigation-close": "awsui_navigation-close_1fj9k_avnjw_17",
8
+ "content": "awsui_content_1fj9k_avnjw_21",
9
+ "notifications": "awsui_notifications_1fj9k_avnjw_25",
10
+ "breadcrumbs": "awsui_breadcrumbs_1fj9k_avnjw_29",
11
+ "tools": "awsui_tools_1fj9k_avnjw_33",
12
+ "tools-close": "awsui_tools-close_1fj9k_avnjw_37",
13
+ "tools-toggle": "awsui_tools-toggle_1fj9k_avnjw_41",
14
+ "drawer-closed": "awsui_drawer-closed_1fj9k_avnjw_45",
15
+ "mobile-bar": "awsui_mobile-bar_1fj9k_avnjw_49",
16
+ "disable-body-scroll-root": "awsui_disable-body-scroll-root_1fj9k_avnjw_53"
16
17
  };
17
18
 
@@ -2,50 +2,54 @@
2
2
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- .awsui_root_1fj9k_19hjm_5:not(#\9) {
5
+ .awsui_root_1fj9k_avnjw_5:not(#\9) {
6
6
  /* used in test-utils */
7
7
  }
8
8
 
9
- .awsui_navigation_1fj9k_19hjm_9:not(#\9) {
9
+ .awsui_navigation_1fj9k_avnjw_9:not(#\9) {
10
10
  /* used in test-utils */
11
11
  }
12
12
 
13
- .awsui_navigation-toggle_1fj9k_19hjm_13:not(#\9) {
13
+ .awsui_navigation-toggle_1fj9k_avnjw_13:not(#\9) {
14
14
  /* used in test-utils */
15
15
  }
16
16
 
17
- .awsui_navigation-close_1fj9k_19hjm_17:not(#\9) {
17
+ .awsui_navigation-close_1fj9k_avnjw_17:not(#\9) {
18
18
  /* used in test-utils */
19
19
  }
20
20
 
21
- .awsui_content_1fj9k_19hjm_21:not(#\9) {
21
+ .awsui_content_1fj9k_avnjw_21:not(#\9) {
22
22
  /* used in test-utils */
23
23
  }
24
24
 
25
- .awsui_notifications_1fj9k_19hjm_25:not(#\9) {
25
+ .awsui_notifications_1fj9k_avnjw_25:not(#\9) {
26
26
  /* used in test-utils */
27
27
  }
28
28
 
29
- .awsui_breadcrumbs_1fj9k_19hjm_29:not(#\9) {
29
+ .awsui_breadcrumbs_1fj9k_avnjw_29:not(#\9) {
30
30
  /* used in test-utils */
31
31
  }
32
32
 
33
- .awsui_tools_1fj9k_19hjm_33:not(#\9) {
33
+ .awsui_tools_1fj9k_avnjw_33:not(#\9) {
34
34
  /* used in test-utils */
35
35
  }
36
36
 
37
- .awsui_tools-close_1fj9k_19hjm_37:not(#\9) {
37
+ .awsui_tools-close_1fj9k_avnjw_37:not(#\9) {
38
38
  /* used in test-utils */
39
39
  }
40
40
 
41
- .awsui_tools-toggle_1fj9k_19hjm_41:not(#\9) {
41
+ .awsui_tools-toggle_1fj9k_avnjw_41:not(#\9) {
42
42
  /* used in test-utils */
43
43
  }
44
44
 
45
- .awsui_drawer-closed_1fj9k_19hjm_45:not(#\9) {
45
+ .awsui_drawer-closed_1fj9k_avnjw_45:not(#\9) {
46
46
  /* used in test-utils */
47
47
  }
48
48
 
49
- .awsui_mobile-bar_1fj9k_19hjm_49:not(#\9) {
50
- /* used in test-utils */
49
+ .awsui_mobile-bar_1fj9k_avnjw_49:not(#\9) {
50
+ /* used in tests */
51
+ }
52
+
53
+ .awsui_disable-body-scroll-root_1fj9k_avnjw_53:not(#\9) {
54
+ /* used in tests */
51
55
  }
@@ -2,17 +2,18 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "root": "awsui_root_1fj9k_19hjm_5",
6
- "navigation": "awsui_navigation_1fj9k_19hjm_9",
7
- "navigation-toggle": "awsui_navigation-toggle_1fj9k_19hjm_13",
8
- "navigation-close": "awsui_navigation-close_1fj9k_19hjm_17",
9
- "content": "awsui_content_1fj9k_19hjm_21",
10
- "notifications": "awsui_notifications_1fj9k_19hjm_25",
11
- "breadcrumbs": "awsui_breadcrumbs_1fj9k_19hjm_29",
12
- "tools": "awsui_tools_1fj9k_19hjm_33",
13
- "tools-close": "awsui_tools-close_1fj9k_19hjm_37",
14
- "tools-toggle": "awsui_tools-toggle_1fj9k_19hjm_41",
15
- "drawer-closed": "awsui_drawer-closed_1fj9k_19hjm_45",
16
- "mobile-bar": "awsui_mobile-bar_1fj9k_19hjm_49"
5
+ "root": "awsui_root_1fj9k_avnjw_5",
6
+ "navigation": "awsui_navigation_1fj9k_avnjw_9",
7
+ "navigation-toggle": "awsui_navigation-toggle_1fj9k_avnjw_13",
8
+ "navigation-close": "awsui_navigation-close_1fj9k_avnjw_17",
9
+ "content": "awsui_content_1fj9k_avnjw_21",
10
+ "notifications": "awsui_notifications_1fj9k_avnjw_25",
11
+ "breadcrumbs": "awsui_breadcrumbs_1fj9k_avnjw_29",
12
+ "tools": "awsui_tools_1fj9k_avnjw_33",
13
+ "tools-close": "awsui_tools-close_1fj9k_avnjw_37",
14
+ "tools-toggle": "awsui_tools-toggle_1fj9k_avnjw_41",
15
+ "drawer-closed": "awsui_drawer-closed_1fj9k_avnjw_45",
16
+ "mobile-bar": "awsui_mobile-bar_1fj9k_avnjw_49",
17
+ "disable-body-scroll-root": "awsui_disable-body-scroll-root_1fj9k_avnjw_53"
17
18
  };
18
19
 
@@ -34,12 +34,12 @@ export declare const AppLayoutContext: React.Context<{
34
34
  setIsToolsOpen: (value: boolean) => void;
35
35
  setOffsetBottom: (value: number) => void;
36
36
  setSplitPanelReportedSize: (value: number) => void;
37
+ headerHeight: number;
38
+ footerHeight: number;
37
39
  splitPanelMaxWidth: number;
38
40
  splitPanelMinWidth: number;
39
41
  splitPanelPosition: AppLayoutProps.SplitPanelPosition;
40
42
  splitPanelReportedSize: number;
41
- headerSelector: string;
42
- footerSelector: string;
43
43
  contentType?: AppLayoutProps.ContentType | undefined;
44
44
  disableContentPaddings?: boolean | undefined;
45
45
  disableBodyScroll?: boolean | undefined;
@@ -52,6 +52,8 @@ export declare const AppLayoutContext: React.Context<{
52
52
  maxContentWidth?: number | undefined;
53
53
  minContentWidth?: number | undefined;
54
54
  stickyNotifications?: boolean | undefined;
55
+ headerSelector?: string | undefined;
56
+ footerSelector?: string | undefined;
55
57
  ariaLabels?: AppLayoutProps.Labels | undefined;
56
58
  navigation?: React.ReactNode;
57
59
  contentHeader?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/app-layout/visual-refresh/context.tsx"],"names":[],"mappings":"AAEA,OAAO,KASN,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA2G/C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;0BAnGL,MAAM;2BACL,MAAM,IAAI;oCACD,OAAO,KAAK,IAAI;gDACJ,eAAe,qBAAqB,KAAK,IAAI;qCACxD;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI;8BAChC,OAAO,KAAK,IAAI;0BACpB,OAAO;6BACJ,OAAO;oBAChB,OAAO;cACb,OAAO;sBACC,OAAO;gCACG,OAAO;;;mBAGpB,MAAM,GAAG,CAAC,WAAW,CAAC;iBACxB,MAAM;iBACN,MAAM,GAAG,CAAC,cAAc,CAAC;oBACtB,MAAM;0BACA,MAAM,GAAG,CAAC,cAAc,CAAC;yBAC1B,MAAM;kBACb,MAAM;qCACa,MAAM,KAAK,IAAI;iCACnB,OAAO,KAAK,IAAI;4BACrB,OAAO,KAAK,IAAI;6BACf,MAAM,KAAK,IAAI;uCACL,MAAM,KAAK,IAAI;wBAC9B,MAAM;wBACN,MAAM;wBACN,eAAe,kBAAkB;4BAC7B,MAAM;oBAEd,MAAM;oBACN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmEsC,CAAC;AAM/D,eAAO,MAAM,iBAAiB;cAHlB,MAAM,SAAS;4CA0Z1B,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/app-layout/visual-refresh/context.tsx"],"names":[],"mappings":"AAEA,OAAO,KASN,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA0G/C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;0BAlGL,MAAM;2BACL,MAAM,IAAI;oCACD,OAAO,KAAK,IAAI;gDACJ,eAAe,qBAAqB,KAAK,IAAI;qCACxD;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI;8BAChC,OAAO,KAAK,IAAI;0BACpB,OAAO;6BACJ,OAAO;oBAChB,OAAO;cACb,OAAO;sBACC,OAAO;gCACG,OAAO;;;mBAGpB,MAAM,GAAG,CAAC,WAAW,CAAC;iBACxB,MAAM;iBACN,MAAM,GAAG,CAAC,cAAc,CAAC;oBACtB,MAAM;0BACA,MAAM,GAAG,CAAC,cAAc,CAAC;yBAC1B,MAAM;kBACb,MAAM;qCACa,MAAM,KAAK,IAAI;iCACnB,OAAO,KAAK,IAAI;4BACrB,OAAO,KAAK,IAAI;6BACf,MAAM,KAAK,IAAI;uCACL,MAAM,KAAK,IAAI;kBACpC,MAAM;kBACN,MAAM;wBACA,MAAM;wBACN,MAAM;wBACN,eAAe,kBAAkB;4BAC7B,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmE8B,CAAC;AAM/D,eAAO,MAAM,iBAAiB;cAHlB,MAAM,SAAS;4CA0a1B,CAAC"}