@cloudscape-design/components 3.0.1382 → 3.0.1384

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 (290) hide show
  1. package/app-layout/visual-refresh-toolbar/contexts.d.ts +5 -3
  2. package/app-layout/visual-refresh-toolbar/contexts.d.ts.map +1 -1
  3. package/app-layout/visual-refresh-toolbar/contexts.js.map +1 -1
  4. package/app-layout/visual-refresh-toolbar/interfaces.d.ts +3 -0
  5. package/app-layout/visual-refresh-toolbar/interfaces.d.ts.map +1 -1
  6. package/app-layout/visual-refresh-toolbar/interfaces.js.map +1 -1
  7. package/app-layout/visual-refresh-toolbar/skeleton/slots.d.ts +4 -1
  8. package/app-layout/visual-refresh-toolbar/skeleton/slots.d.ts.map +1 -1
  9. package/app-layout/visual-refresh-toolbar/skeleton/slots.js +8 -5
  10. package/app-layout/visual-refresh-toolbar/skeleton/slots.js.map +1 -1
  11. package/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.d.ts +5 -0
  12. package/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.d.ts.map +1 -1
  13. package/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.js +3 -3
  14. package/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.js.map +1 -1
  15. package/app-layout/visual-refresh-toolbar/state/use-app-layout.d.ts.map +1 -1
  16. package/app-layout/visual-refresh-toolbar/state/use-app-layout.js +27 -3
  17. package/app-layout/visual-refresh-toolbar/state/use-app-layout.js.map +1 -1
  18. package/app-layout/visual-refresh-toolbar/state/use-own-breadcrumbs-props.d.ts +6 -0
  19. package/app-layout/visual-refresh-toolbar/state/use-own-breadcrumbs-props.d.ts.map +1 -0
  20. package/app-layout/visual-refresh-toolbar/state/use-own-breadcrumbs-props.js +16 -0
  21. package/app-layout/visual-refresh-toolbar/state/use-own-breadcrumbs-props.js.map +1 -0
  22. package/app-layout/visual-refresh-toolbar/toolbar/index.d.ts +5 -1
  23. package/app-layout/visual-refresh-toolbar/toolbar/index.d.ts.map +1 -1
  24. package/app-layout/visual-refresh-toolbar/toolbar/index.js +2 -2
  25. package/app-layout/visual-refresh-toolbar/toolbar/index.js.map +1 -1
  26. package/app-layout/visual-refresh-toolbar/toolbar/styles.css.js +15 -14
  27. package/app-layout/visual-refresh-toolbar/toolbar/styles.scoped.css +35 -31
  28. package/app-layout/visual-refresh-toolbar/toolbar/styles.selectors.js +15 -14
  29. package/app-layout/visual-refresh-toolbar/widget-areas/before-main-slot.d.ts.map +1 -1
  30. package/app-layout/visual-refresh-toolbar/widget-areas/before-main-slot.js +2 -2
  31. package/app-layout/visual-refresh-toolbar/widget-areas/before-main-slot.js.map +1 -1
  32. package/breadcrumb-group/implementation.d.ts.map +1 -1
  33. package/breadcrumb-group/implementation.js +30 -1
  34. package/breadcrumb-group/implementation.js.map +1 -1
  35. package/button-dropdown/interfaces.d.ts +5 -0
  36. package/button-dropdown/interfaces.d.ts.map +1 -1
  37. package/button-dropdown/interfaces.js.map +1 -1
  38. package/button-dropdown/internal-interfaces.d.ts +1 -1
  39. package/button-dropdown/internal-interfaces.d.ts.map +1 -1
  40. package/button-dropdown/internal-interfaces.js.map +1 -1
  41. package/button-dropdown/internal.js +2 -2
  42. package/button-dropdown/internal.js.map +1 -1
  43. package/button-dropdown/items-list.d.ts +1 -1
  44. package/button-dropdown/items-list.d.ts.map +1 -1
  45. package/button-dropdown/items-list.js +2 -2
  46. package/button-dropdown/items-list.js.map +1 -1
  47. package/button-dropdown/utils/move-highlight.d.ts +4 -2
  48. package/button-dropdown/utils/move-highlight.d.ts.map +1 -1
  49. package/button-dropdown/utils/move-highlight.js +13 -21
  50. package/button-dropdown/utils/move-highlight.js.map +1 -1
  51. package/button-dropdown/utils/use-button-dropdown.d.ts +1 -1
  52. package/button-dropdown/utils/use-button-dropdown.d.ts.map +1 -1
  53. package/button-dropdown/utils/use-button-dropdown.js +8 -6
  54. package/button-dropdown/utils/use-button-dropdown.js.map +1 -1
  55. package/button-dropdown/utils/use-highlighted-menu.d.ts +2 -2
  56. package/button-dropdown/utils/use-highlighted-menu.d.ts.map +1 -1
  57. package/button-dropdown/utils/use-highlighted-menu.js +14 -4
  58. package/button-dropdown/utils/use-highlighted-menu.js.map +1 -1
  59. package/button-dropdown/utils/utils.d.ts +1 -0
  60. package/button-dropdown/utils/utils.d.ts.map +1 -1
  61. package/button-dropdown/utils/utils.js +1 -0
  62. package/button-dropdown/utils/utils.js.map +1 -1
  63. package/calendar/interfaces.d.ts +2 -1
  64. package/calendar/interfaces.d.ts.map +1 -1
  65. package/calendar/interfaces.js.map +1 -1
  66. package/calendar/internal.d.ts.map +1 -1
  67. package/calendar/internal.js +3 -1
  68. package/calendar/internal.js.map +1 -1
  69. package/checkbox/internal.d.ts +6 -0
  70. package/checkbox/internal.d.ts.map +1 -1
  71. package/checkbox/internal.js +2 -2
  72. package/checkbox/internal.js.map +1 -1
  73. package/checkbox/styles.css.js +7 -3
  74. package/checkbox/styles.scoped.css +72 -16
  75. package/checkbox/styles.selectors.js +7 -3
  76. package/container/index.d.ts +3 -7
  77. package/container/index.d.ts.map +1 -1
  78. package/container/index.js +4 -3
  79. package/container/index.js.map +1 -1
  80. package/container/interfaces.d.ts +7 -0
  81. package/container/interfaces.d.ts.map +1 -1
  82. package/container/interfaces.js.map +1 -1
  83. package/container/internal.d.ts +3 -26
  84. package/container/internal.d.ts.map +1 -1
  85. package/container/internal.js +37 -8
  86. package/container/internal.js.map +1 -1
  87. package/container/styles.css.js +34 -33
  88. package/container/styles.scoped.css +77 -56
  89. package/container/styles.selectors.js +34 -33
  90. package/copy-to-clipboard/internal.d.ts.map +1 -1
  91. package/copy-to-clipboard/internal.js +3 -1
  92. package/copy-to-clipboard/internal.js.map +1 -1
  93. package/date-range-picker/index.d.ts.map +1 -1
  94. package/date-range-picker/index.js +3 -2
  95. package/date-range-picker/index.js.map +1 -1
  96. package/date-range-picker/interfaces.d.ts +2 -1
  97. package/date-range-picker/interfaces.d.ts.map +1 -1
  98. package/date-range-picker/interfaces.js.map +1 -1
  99. package/dialog/index.d.ts +3 -0
  100. package/dialog/index.d.ts.map +1 -0
  101. package/dialog/index.js +21 -0
  102. package/dialog/index.js.map +1 -0
  103. package/dialog/interfaces.d.ts +40 -0
  104. package/dialog/interfaces.d.ts.map +1 -0
  105. package/dialog/interfaces.js +2 -0
  106. package/dialog/interfaces.js.map +1 -0
  107. package/dialog/internal.d.ts +13 -0
  108. package/dialog/internal.d.ts.map +1 -0
  109. package/dialog/internal.js +39 -0
  110. package/dialog/internal.js.map +1 -0
  111. package/dialog/styles.css.js +13 -0
  112. package/dialog/styles.scoped.css +126 -0
  113. package/dialog/styles.selectors.js +14 -0
  114. package/dialog/test-classes/styles.css.js +11 -0
  115. package/dialog/test-classes/styles.scoped.css +12 -0
  116. package/dialog/test-classes/styles.selectors.js +12 -0
  117. package/dialog/use-focus-restore.d.ts +5 -0
  118. package/dialog/use-focus-restore.d.ts.map +1 -0
  119. package/dialog/use-focus-restore.js +34 -0
  120. package/dialog/use-focus-restore.js.map +1 -0
  121. package/expandable-section/expandable-section-header.d.ts.map +1 -1
  122. package/expandable-section/expandable-section-header.js +9 -2
  123. package/expandable-section/expandable-section-header.js.map +1 -1
  124. package/expandable-section/styles.css.js +44 -43
  125. package/expandable-section/styles.scoped.css +92 -88
  126. package/expandable-section/styles.selectors.js +44 -43
  127. package/flashbar/styles.css.js +50 -50
  128. package/flashbar/styles.scoped.css +160 -200
  129. package/flashbar/styles.selectors.js +50 -50
  130. package/i18n/messages/all.all.js +1 -1
  131. package/i18n/messages/all.all.json +1 -1
  132. package/i18n/messages/all.de.js +1 -1
  133. package/i18n/messages/all.de.json +1 -1
  134. package/i18n/messages/all.en-GB.js +1 -1
  135. package/i18n/messages/all.en-GB.json +1 -1
  136. package/i18n/messages/all.en.js +1 -1
  137. package/i18n/messages/all.en.json +1 -1
  138. package/i18n/messages/all.es.js +1 -1
  139. package/i18n/messages/all.es.json +1 -1
  140. package/i18n/messages/all.fr.js +1 -1
  141. package/i18n/messages/all.fr.json +1 -1
  142. package/i18n/messages/all.id.js +1 -1
  143. package/i18n/messages/all.id.json +1 -1
  144. package/i18n/messages/all.it.js +1 -1
  145. package/i18n/messages/all.it.json +1 -1
  146. package/i18n/messages/all.ja.js +1 -1
  147. package/i18n/messages/all.ja.json +1 -1
  148. package/i18n/messages/all.ko.js +1 -1
  149. package/i18n/messages/all.ko.json +1 -1
  150. package/i18n/messages/all.pt-BR.js +1 -1
  151. package/i18n/messages/all.pt-BR.json +1 -1
  152. package/i18n/messages/all.tr.js +1 -1
  153. package/i18n/messages/all.tr.json +1 -1
  154. package/i18n/messages/all.zh-CN.js +1 -1
  155. package/i18n/messages/all.zh-CN.json +1 -1
  156. package/i18n/messages/all.zh-TW.js +1 -1
  157. package/i18n/messages/all.zh-TW.json +1 -1
  158. package/i18n/messages-types.d.ts +3 -0
  159. package/i18n/messages-types.d.ts.map +1 -1
  160. package/i18n/messages-types.js.map +1 -1
  161. package/icon/generated/icons.d.ts +1 -0
  162. package/icon/generated/icons.d.ts.map +1 -1
  163. package/icon/generated/icons.js +3 -0
  164. package/icon/generated/icons.js.map +1 -1
  165. package/icon/internal.d.ts +3 -0
  166. package/icon/internal.d.ts.map +1 -1
  167. package/icon/internal.js +10 -2
  168. package/icon/internal.js.map +1 -1
  169. package/icon/styles.css.js +43 -42
  170. package/icon/styles.scoped.css +126 -98
  171. package/icon/styles.selectors.js +43 -42
  172. package/icon-provider/context.d.ts +3 -1
  173. package/icon-provider/context.d.ts.map +1 -1
  174. package/icon-provider/context.js +2 -0
  175. package/icon-provider/context.js.map +1 -1
  176. package/icon-provider/interfaces.d.ts +40 -2
  177. package/icon-provider/interfaces.d.ts.map +1 -1
  178. package/icon-provider/interfaces.js.map +1 -1
  179. package/icon-provider/internal.d.ts +2 -1
  180. package/icon-provider/internal.d.ts.map +1 -1
  181. package/icon-provider/internal.js +17 -3
  182. package/icon-provider/internal.js.map +1 -1
  183. package/icon-provider/use-component-icons.d.ts +3 -0
  184. package/icon-provider/use-component-icons.d.ts.map +1 -0
  185. package/icon-provider/use-component-icons.js +9 -0
  186. package/icon-provider/use-component-icons.js.map +1 -0
  187. package/index.d.ts +1 -0
  188. package/index.d.ts.map +1 -1
  189. package/index.js +1 -0
  190. package/index.js.map +1 -1
  191. package/internal/base-component/styles.scoped.css +1 -1
  192. package/internal/base-theme/styles.scoped.css +27 -0
  193. package/internal/components/abstract-switch/index.d.ts +4 -0
  194. package/internal/components/abstract-switch/index.d.ts.map +1 -1
  195. package/internal/components/abstract-switch/index.js +5 -3
  196. package/internal/components/abstract-switch/index.js.map +1 -1
  197. package/internal/components/checkbox-icon/styles.css.js +9 -9
  198. package/internal/components/checkbox-icon/styles.scoped.css +18 -18
  199. package/internal/components/checkbox-icon/styles.selectors.js +9 -9
  200. package/internal/components/customizable-icon/index.d.ts +22 -0
  201. package/internal/components/customizable-icon/index.d.ts.map +1 -0
  202. package/internal/components/customizable-icon/index.js +12 -0
  203. package/internal/components/customizable-icon/index.js.map +1 -0
  204. package/internal/components/expand-toggle-button/index.d.ts +4 -0
  205. package/internal/components/expand-toggle-button/index.d.ts.map +1 -1
  206. package/internal/components/expand-toggle-button/index.js +6 -3
  207. package/internal/components/expand-toggle-button/index.js.map +1 -1
  208. package/internal/environment.js +2 -2
  209. package/internal/environment.json +2 -2
  210. package/internal/generated/styles/tokens.d.ts +14 -0
  211. package/internal/generated/styles/tokens.js +14 -0
  212. package/internal/generated/theming/index.cjs +222 -1
  213. package/internal/generated/theming/{index.cjs.d.ts → index.d.cts} +113 -13
  214. package/internal/generated/theming/index.d.ts +99 -0
  215. package/internal/generated/theming/index.js +222 -1
  216. package/internal/manifest.json +1 -1
  217. package/internal/plugins/widget/index.d.ts +5 -1
  218. package/internal/plugins/widget/index.d.ts.map +1 -1
  219. package/internal/plugins/widget/index.js +26 -1
  220. package/internal/plugins/widget/index.js.map +1 -1
  221. package/internal/plugins/widget/interfaces.d.ts +12 -2
  222. package/internal/plugins/widget/interfaces.d.ts.map +1 -1
  223. package/internal/plugins/widget/interfaces.js.map +1 -1
  224. package/internal/plugins/widget.d.ts +1 -1
  225. package/internal/plugins/widget.d.ts.map +1 -1
  226. package/internal/plugins/widget.js +1 -1
  227. package/internal/plugins/widget.js.map +1 -1
  228. package/internal/utils/locale/normalize-locale.js +8 -5
  229. package/internal/utils/locale/normalize-locale.js.map +1 -1
  230. package/manifest.json +2 -2
  231. package/package.json +4 -1
  232. package/plugins/index.d.ts +2 -1
  233. package/plugins/index.d.ts.map +1 -1
  234. package/plugins/index.js +2 -1
  235. package/plugins/index.js.map +1 -1
  236. package/split-panel/bottom.d.ts +2 -1
  237. package/split-panel/bottom.d.ts.map +1 -1
  238. package/split-panel/bottom.js.map +1 -1
  239. package/split-panel/content-props.d.ts +16 -0
  240. package/split-panel/content-props.d.ts.map +1 -0
  241. package/split-panel/content-props.js +2 -0
  242. package/split-panel/content-props.js.map +1 -0
  243. package/split-panel/interfaces.d.ts +0 -13
  244. package/split-panel/interfaces.d.ts.map +1 -1
  245. package/split-panel/interfaces.js.map +1 -1
  246. package/split-panel/side.d.ts +2 -1
  247. package/split-panel/side.d.ts.map +1 -1
  248. package/split-panel/side.js.map +1 -1
  249. package/table/body-cell/td-element.d.ts.map +1 -1
  250. package/table/body-cell/td-element.js +3 -1
  251. package/table/body-cell/td-element.js.map +1 -1
  252. package/table/header-cell/index.d.ts.map +1 -1
  253. package/table/header-cell/index.js +8 -2
  254. package/table/header-cell/index.js.map +1 -1
  255. package/table/header-cell/styles.css.js +38 -38
  256. package/table/header-cell/styles.scoped.css +80 -81
  257. package/table/header-cell/styles.selectors.js +38 -38
  258. package/table/internal.js +1 -1
  259. package/table/internal.js.map +1 -1
  260. package/table/sticky-columns/interfaces.d.ts +2 -0
  261. package/table/sticky-columns/interfaces.d.ts.map +1 -1
  262. package/table/sticky-columns/interfaces.js.map +1 -1
  263. package/table/sticky-columns/use-sticky-columns.d.ts.map +1 -1
  264. package/table/sticky-columns/use-sticky-columns.js +11 -5
  265. package/table/sticky-columns/use-sticky-columns.js.map +1 -1
  266. package/table/sticky-columns/utils.d.ts.map +1 -1
  267. package/table/sticky-columns/utils.js +2 -0
  268. package/table/sticky-columns/utils.js.map +1 -1
  269. package/table/utils.d.ts +1 -3
  270. package/table/utils.d.ts.map +1 -1
  271. package/table/utils.js +12 -5
  272. package/table/utils.js.map +1 -1
  273. package/test-utils/dom/dialog/index.d.ts +25 -0
  274. package/test-utils/dom/dialog/index.js +43 -0
  275. package/test-utils/dom/dialog/index.js.map +1 -0
  276. package/test-utils/dom/index.d.ts +28 -0
  277. package/test-utils/dom/index.js +21 -2
  278. package/test-utils/dom/index.js.map +1 -1
  279. package/test-utils/selectors/dialog/index.d.ts +25 -0
  280. package/test-utils/selectors/dialog/index.js +43 -0
  281. package/test-utils/selectors/dialog/index.js.map +1 -0
  282. package/test-utils/selectors/index.d.ts +18 -0
  283. package/test-utils/selectors/index.js +16 -2
  284. package/test-utils/selectors/index.js.map +1 -1
  285. package/tree-view/interfaces.d.ts +3 -0
  286. package/tree-view/interfaces.d.ts.map +1 -1
  287. package/tree-view/interfaces.js.map +1 -1
  288. package/tree-view/tree-item/index.d.ts.map +1 -1
  289. package/tree-view/tree-item/index.js +3 -1
  290. package/tree-view/tree-item/index.js.map +1 -1
@@ -1,8 +1,10 @@
1
1
  import React from 'react';
2
- interface BreadcrumbsSlotContextType {
2
+ import { BreadcrumbGroupProps } from '../../breadcrumb-group/interfaces';
3
+ import { BreadcrumbsGlobalRegistration } from '../../internal/plugins/controllers/breadcrumbs';
4
+ export interface BreadcrumbsSlotContextType {
3
5
  isInToolbar: boolean;
6
+ reportOwnBreadcrumbsProps?: (props: BreadcrumbGroupProps) => BreadcrumbsGlobalRegistration<BreadcrumbGroupProps>;
4
7
  }
5
8
  export declare const BreadcrumbsSlotContext: React.Context<BreadcrumbsSlotContextType | undefined>;
6
9
  export declare const AppLayoutVisibilityContext: React.Context<boolean | undefined>;
7
- export declare const AppLayoutToolbarPublicContext: React.Context<boolean | undefined>;
8
- export {};
10
+ export declare const AppLayoutToolbarPublicContext: React.Context<boolean | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"contexts.d.ts","sourceRoot":"","sources":["../../../../src/app-layout/visual-refresh-toolbar/contexts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,0BAA0B;IAClC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,sBAAsB,uDACkF,CAAC;AAEtH,eAAO,MAAM,0BAA0B,oCAGtC,CAAC;AAEF,eAAO,MAAM,6BAA6B,oCAGzC,CAAC"}
1
+ {"version":3,"file":"contexts.d.ts","sourceRoot":"","sources":["../../../../src/app-layout/visual-refresh-toolbar/contexts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAE/F,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,yBAAyB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,6BAA6B,CAAC,oBAAoB,CAAC,CAAC;CAClH;AAED,eAAO,MAAM,sBAAsB,uDACkF,CAAC;AAEtH,eAAO,MAAM,0BAA0B,oCAGtC,CAAC;AAEF,eAAO,MAAM,6BAA6B,oCAGzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../../../src/app-layout/visual-refresh-toolbar/contexts.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAMlE,MAAM,CAAC,MAAM,sBAAsB,GACjC,oBAAoB,CAAC,mBAAmB,CAAC,aAAa,CAA6B,KAAK,EAAE,wBAAwB,CAAC,CAAC;AAEtH,MAAM,CAAC,MAAM,0BAA0B,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,aAAa,CAC9F,KAAK,EACL,4BAA4B,CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,aAAa,CACjG,KAAK,EACL,+BAA+B,CAChC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { awsuiPluginsInternal } from '../../internal/plugins/api';\n\ninterface BreadcrumbsSlotContextType {\n isInToolbar: boolean;\n}\n\nexport const BreadcrumbsSlotContext =\n awsuiPluginsInternal.sharedReactContexts.createContext<BreadcrumbsSlotContextType>(React, 'BreadcrumbsSlotContext');\n\nexport const AppLayoutVisibilityContext = awsuiPluginsInternal.sharedReactContexts.createContext<boolean>(\n React,\n 'AppLayoutVisibilityContext'\n);\n\nexport const AppLayoutToolbarPublicContext = awsuiPluginsInternal.sharedReactContexts.createContext<boolean>(\n React,\n 'AppLayoutToolbarPublicContext'\n);\n"]}
1
+ {"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../../../src/app-layout/visual-refresh-toolbar/contexts.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAQlE,MAAM,CAAC,MAAM,sBAAsB,GACjC,oBAAoB,CAAC,mBAAmB,CAAC,aAAa,CAA6B,KAAK,EAAE,wBAAwB,CAAC,CAAC;AAEtH,MAAM,CAAC,MAAM,0BAA0B,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,aAAa,CAC9F,KAAK,EACL,4BAA4B,CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,aAAa,CACjG,KAAK,EACL,+BAA+B,CAChC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { BreadcrumbGroupProps } from '../../breadcrumb-group/interfaces';\nimport { awsuiPluginsInternal } from '../../internal/plugins/api';\nimport { BreadcrumbsGlobalRegistration } from '../../internal/plugins/controllers/breadcrumbs';\n\nexport interface BreadcrumbsSlotContextType {\n isInToolbar: boolean;\n reportOwnBreadcrumbsProps?: (props: BreadcrumbGroupProps) => BreadcrumbsGlobalRegistration<BreadcrumbGroupProps>;\n}\n\nexport const BreadcrumbsSlotContext =\n awsuiPluginsInternal.sharedReactContexts.createContext<BreadcrumbsSlotContextType>(React, 'BreadcrumbsSlotContext');\n\nexport const AppLayoutVisibilityContext = awsuiPluginsInternal.sharedReactContexts.createContext<boolean>(\n React,\n 'AppLayoutVisibilityContext'\n);\n\nexport const AppLayoutToolbarPublicContext = awsuiPluginsInternal.sharedReactContexts.createContext<boolean>(\n React,\n 'AppLayoutToolbarPublicContext'\n);\n"]}
@@ -10,6 +10,7 @@ import { OnChangeParams } from '../utils/use-drawers';
10
10
  import { FocusControlMultipleStates, FocusControlState } from '../utils/use-focus-control';
11
11
  import { SplitPanelFocusControlState } from '../utils/use-split-panel-focus-control';
12
12
  import { VerticalLayoutOutput } from './compute-layout';
13
+ import { BreadcrumbsSlotContextType } from './contexts';
13
14
  import { FeatureNotificationsProps } from './state/use-feature-notifications';
14
15
  export interface AppLayoutInternalProps extends AppLayoutPropsWithDefaults {
15
16
  navigationTriggerHide?: boolean;
@@ -87,6 +88,8 @@ export interface AppLayoutInternals {
87
88
  onActiveAiDrawerResize: (size: number) => void;
88
89
  }
89
90
  export interface AppLayoutWidgetizedState extends AppLayoutInternals {
91
+ breadcrumbsExternallyOwned?: boolean;
92
+ reportOwnBreadcrumbsProps?: BreadcrumbsSlotContextType['reportOwnBreadcrumbsProps'];
90
93
  isNested: boolean;
91
94
  verticalOffsets: VerticalLayoutOutput;
92
95
  navigationAnimationDisabled: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/app-layout/visual-refresh-toolbar/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/app-layout/visual-refresh-toolbar/interfaces.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/app-layout/visual-refresh-toolbar/interfaces.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React from 'react';\n\nimport { BreadcrumbGroupProps } from '../../breadcrumb-group/interfaces';\nimport { ButtonGroupProps } from '../../button-group/interfaces';\nimport { SplitPanelSideToggleProps } from '../../internal/context/split-panel-context';\nimport { SomeOptional } from '../../internal/types';\nimport { NonCancelableEventHandler } from '../../types/events';\nimport { AppLayoutProps, AppLayoutPropsWithDefaults } from '../interfaces';\nimport { SplitPanelProviderProps } from '../split-panel';\nimport { OnChangeParams } from '../utils/use-drawers';\nimport { FocusControlMultipleStates, FocusControlState } from '../utils/use-focus-control';\nimport { SplitPanelFocusControlState } from '../utils/use-split-panel-focus-control';\nimport { VerticalLayoutOutput } from './compute-layout';\nimport { FeatureNotificationsProps } from './state/use-feature-notifications';\n\nexport interface AppLayoutInternalProps extends AppLayoutPropsWithDefaults {\n navigationTriggerHide?: boolean;\n}\n\nexport type InternalDrawer = AppLayoutProps.Drawer & {\n defaultActive?: boolean;\n isExpandable?: boolean;\n ariaLabels: AppLayoutProps.Drawer['ariaLabels'] & { expandedModeButton?: string; exitExpandedModeButton?: string };\n header?: React.ReactNode;\n headerActions?: ReadonlyArray<ButtonGroupProps.Item>;\n onHeaderActionClick?: NonCancelableEventHandler<ButtonGroupProps.ItemClickDetails>;\n position?: 'side' | 'bottom';\n onToggleFocusMode?: NonCancelableEventHandler<{ isExpanded: boolean }>;\n};\n\n// Widgetization notice: structures in this file are shared multiple app layout instances, possibly different minor versions.\n// Treat these structures as an API and do not make incompatible changes.\n// Legacy widget interface\nexport interface AppLayoutInternals {\n ariaLabels: AppLayoutPropsWithDefaults['ariaLabels'];\n headerVariant: AppLayoutPropsWithDefaults['headerVariant'];\n placement: AppLayoutPropsWithDefaults['placement'];\n navigationOpen: AppLayoutPropsWithDefaults['navigationOpen'];\n navigationFocusControl: FocusControlState;\n navigation: React.ReactNode;\n splitPanelPosition: AppLayoutProps.SplitPanelPreferences['position'];\n splitPanelOpen: boolean;\n splitPanelControlId: string;\n splitPanelFocusControl: SplitPanelFocusControlState;\n splitPanelToggleConfig: SplitPanelSideToggleProps;\n isMobile: boolean;\n activeDrawer: InternalDrawer | undefined;\n activeDrawerSize: number;\n minDrawerSize: number;\n maxDrawerSize: number;\n minGlobalDrawersSizes: Record<string, number>;\n maxGlobalDrawersSizes: Record<string, number>;\n drawers: ReadonlyArray<InternalDrawer>;\n drawersFocusControl: FocusControlState;\n globalDrawersFocusControl: FocusControlMultipleStates;\n activeGlobalDrawersIds: ReadonlyArray<string>;\n activeGlobalDrawers: ReadonlyArray<InternalDrawer>;\n globalDrawers: ReadonlyArray<InternalDrawer>;\n activeGlobalDrawersSizes: Record<string, number>;\n stickyNotifications: AppLayoutPropsWithDefaults['stickyNotifications'];\n breadcrumbs: React.ReactNode;\n discoveredBreadcrumbs: BreadcrumbGroupProps | null;\n toolbarState: 'show' | 'hide';\n setToolbarState: (state: 'show' | 'hide') => void;\n verticalOffsets: VerticalLayoutOutput;\n drawersOpenQueue: ReadonlyArray<string>;\n setNotificationsHeight: (height: number) => void;\n setToolbarHeight: (height: number) => void;\n onSplitPanelToggle: () => void;\n onNavigationToggle: (open: boolean) => void;\n onActiveDrawerChange: (newDrawerId: string | null, params: OnChangeParams) => void;\n onActiveDrawerResize: (detail: { id: string; size: number }) => void;\n onActiveGlobalDrawersChange: (newDrawerId: string, params: OnChangeParams) => void;\n drawerAnimationDisabled?: boolean;\n splitPanelAnimationDisabled?: boolean;\n expandedDrawerId: string | null;\n setExpandedDrawerId: (value: string | null) => void;\n aiDrawer?: InternalDrawer | null;\n onActiveAiDrawerChange?: (newDrawerId: string | null, params?: OnChangeParams) => void;\n activeAiDrawer?: InternalDrawer | null;\n activeAiDrawerId: string | null;\n activeAiDrawerSize?: number;\n minAiDrawerSize?: number;\n maxAiDrawerSize?: number;\n aiDrawerFocusControl?: FocusControlState;\n onActiveAiDrawerResize: (size: number) => void;\n}\n\nexport interface AppLayoutWidgetizedState extends AppLayoutInternals {\n isNested: boolean;\n verticalOffsets: VerticalLayoutOutput;\n navigationAnimationDisabled: boolean;\n aiDrawerExpandedMode: boolean;\n splitPanelOffsets: {\n stickyVerticalBottomOffset: number;\n mainContentPaddingBlockEnd: number | undefined;\n };\n activeGlobalBottomDrawerId: string | null;\n onActiveGlobalBottomDrawerChange: (value: string | null, params: OnChangeParams) => void;\n activeGlobalBottomDrawerSize: number;\n minGlobalBottomDrawerSize: number;\n bottomDrawerReportedSize: number;\n getMaxGlobalBottomDrawerHeight: () => number;\n reportBottomDrawerSize: (size: number) => void;\n bottomDrawersFocusControl: FocusControlState;\n onActiveBottomDrawerResize: ({ id, size }: { id: string; size: number }) => void;\n bottomDrawers: ReadonlyArray<InternalDrawer>;\n featureNotificationsProps?: FeatureNotificationsProps;\n navigationCollapsible: boolean;\n navigationCollapsedWidth: number;\n}\n\n// New widget interface\nexport interface AppLayoutState {\n rootRef: React.Ref<HTMLElement>;\n isIntersecting: boolean;\n // new state management\n widgetizedState: AppLayoutWidgetizedState;\n // the old object shape for backward compatibility\n appLayoutInternals: AppLayoutInternals;\n splitPanelInternals: SplitPanelProviderProps;\n}\n\nexport type AppLayoutPendingState = SomeOptional<\n AppLayoutState,\n 'appLayoutInternals' | 'splitPanelInternals' | 'widgetizedState' | 'rootRef'\n>;\n"]}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/app-layout/visual-refresh-toolbar/interfaces.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React from 'react';\n\nimport { BreadcrumbGroupProps } from '../../breadcrumb-group/interfaces';\nimport { ButtonGroupProps } from '../../button-group/interfaces';\nimport { SplitPanelSideToggleProps } from '../../internal/context/split-panel-context';\nimport { SomeOptional } from '../../internal/types';\nimport { NonCancelableEventHandler } from '../../types/events';\nimport { AppLayoutProps, AppLayoutPropsWithDefaults } from '../interfaces';\nimport { SplitPanelProviderProps } from '../split-panel';\nimport { OnChangeParams } from '../utils/use-drawers';\nimport { FocusControlMultipleStates, FocusControlState } from '../utils/use-focus-control';\nimport { SplitPanelFocusControlState } from '../utils/use-split-panel-focus-control';\nimport { VerticalLayoutOutput } from './compute-layout';\nimport { BreadcrumbsSlotContextType } from './contexts';\nimport { FeatureNotificationsProps } from './state/use-feature-notifications';\n\nexport interface AppLayoutInternalProps extends AppLayoutPropsWithDefaults {\n navigationTriggerHide?: boolean;\n}\n\nexport type InternalDrawer = AppLayoutProps.Drawer & {\n defaultActive?: boolean;\n isExpandable?: boolean;\n ariaLabels: AppLayoutProps.Drawer['ariaLabels'] & { expandedModeButton?: string; exitExpandedModeButton?: string };\n header?: React.ReactNode;\n headerActions?: ReadonlyArray<ButtonGroupProps.Item>;\n onHeaderActionClick?: NonCancelableEventHandler<ButtonGroupProps.ItemClickDetails>;\n position?: 'side' | 'bottom';\n onToggleFocusMode?: NonCancelableEventHandler<{ isExpanded: boolean }>;\n};\n\n// Widgetization notice: structures in this file are shared multiple app layout instances, possibly different minor versions.\n// Treat these structures as an API and do not make incompatible changes.\n// Legacy widget interface\nexport interface AppLayoutInternals {\n ariaLabels: AppLayoutPropsWithDefaults['ariaLabels'];\n headerVariant: AppLayoutPropsWithDefaults['headerVariant'];\n placement: AppLayoutPropsWithDefaults['placement'];\n navigationOpen: AppLayoutPropsWithDefaults['navigationOpen'];\n navigationFocusControl: FocusControlState;\n navigation: React.ReactNode;\n splitPanelPosition: AppLayoutProps.SplitPanelPreferences['position'];\n splitPanelOpen: boolean;\n splitPanelControlId: string;\n splitPanelFocusControl: SplitPanelFocusControlState;\n splitPanelToggleConfig: SplitPanelSideToggleProps;\n isMobile: boolean;\n activeDrawer: InternalDrawer | undefined;\n activeDrawerSize: number;\n minDrawerSize: number;\n maxDrawerSize: number;\n minGlobalDrawersSizes: Record<string, number>;\n maxGlobalDrawersSizes: Record<string, number>;\n drawers: ReadonlyArray<InternalDrawer>;\n drawersFocusControl: FocusControlState;\n globalDrawersFocusControl: FocusControlMultipleStates;\n activeGlobalDrawersIds: ReadonlyArray<string>;\n activeGlobalDrawers: ReadonlyArray<InternalDrawer>;\n globalDrawers: ReadonlyArray<InternalDrawer>;\n activeGlobalDrawersSizes: Record<string, number>;\n stickyNotifications: AppLayoutPropsWithDefaults['stickyNotifications'];\n breadcrumbs: React.ReactNode;\n discoveredBreadcrumbs: BreadcrumbGroupProps | null;\n toolbarState: 'show' | 'hide';\n setToolbarState: (state: 'show' | 'hide') => void;\n verticalOffsets: VerticalLayoutOutput;\n drawersOpenQueue: ReadonlyArray<string>;\n setNotificationsHeight: (height: number) => void;\n setToolbarHeight: (height: number) => void;\n onSplitPanelToggle: () => void;\n onNavigationToggle: (open: boolean) => void;\n onActiveDrawerChange: (newDrawerId: string | null, params: OnChangeParams) => void;\n onActiveDrawerResize: (detail: { id: string; size: number }) => void;\n onActiveGlobalDrawersChange: (newDrawerId: string, params: OnChangeParams) => void;\n drawerAnimationDisabled?: boolean;\n splitPanelAnimationDisabled?: boolean;\n expandedDrawerId: string | null;\n setExpandedDrawerId: (value: string | null) => void;\n aiDrawer?: InternalDrawer | null;\n onActiveAiDrawerChange?: (newDrawerId: string | null, params?: OnChangeParams) => void;\n activeAiDrawer?: InternalDrawer | null;\n activeAiDrawerId: string | null;\n activeAiDrawerSize?: number;\n minAiDrawerSize?: number;\n maxAiDrawerSize?: number;\n aiDrawerFocusControl?: FocusControlState;\n onActiveAiDrawerResize: (size: number) => void;\n}\n\nexport interface AppLayoutWidgetizedState extends AppLayoutInternals {\n breadcrumbsExternallyOwned?: boolean;\n reportOwnBreadcrumbsProps?: BreadcrumbsSlotContextType['reportOwnBreadcrumbsProps'];\n isNested: boolean;\n verticalOffsets: VerticalLayoutOutput;\n navigationAnimationDisabled: boolean;\n aiDrawerExpandedMode: boolean;\n splitPanelOffsets: {\n stickyVerticalBottomOffset: number;\n mainContentPaddingBlockEnd: number | undefined;\n };\n activeGlobalBottomDrawerId: string | null;\n onActiveGlobalBottomDrawerChange: (value: string | null, params: OnChangeParams) => void;\n activeGlobalBottomDrawerSize: number;\n minGlobalBottomDrawerSize: number;\n bottomDrawerReportedSize: number;\n getMaxGlobalBottomDrawerHeight: () => number;\n reportBottomDrawerSize: (size: number) => void;\n bottomDrawersFocusControl: FocusControlState;\n onActiveBottomDrawerResize: ({ id, size }: { id: string; size: number }) => void;\n bottomDrawers: ReadonlyArray<InternalDrawer>;\n featureNotificationsProps?: FeatureNotificationsProps;\n navigationCollapsible: boolean;\n navigationCollapsedWidth: number;\n}\n\n// New widget interface\nexport interface AppLayoutState {\n rootRef: React.Ref<HTMLElement>;\n isIntersecting: boolean;\n // new state management\n widgetizedState: AppLayoutWidgetizedState;\n // the old object shape for backward compatibility\n appLayoutInternals: AppLayoutInternals;\n splitPanelInternals: SplitPanelProviderProps;\n}\n\nexport type AppLayoutPendingState = SomeOptional<\n AppLayoutState,\n 'appLayoutInternals' | 'splitPanelInternals' | 'widgetizedState' | 'rootRef'\n>;\n"]}
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { BreadcrumbGroupProps } from '../../../breadcrumb-group/interfaces';
3
+ import { BreadcrumbsSlotContextType } from '../contexts';
3
4
  interface ToolbarSlotProps {
4
5
  className?: string;
5
6
  style?: React.CSSProperties;
@@ -15,9 +16,11 @@ export declare const NotificationsSlot: React.ForwardRefExoticComponent<Notifica
15
16
  interface BreadcrumbsSlotProps {
16
17
  ownBreadcrumbs: React.ReactNode;
17
18
  discoveredBreadcrumbs?: BreadcrumbGroupProps | null;
19
+ reportOwnBreadcrumbsProps?: BreadcrumbsSlotContextType['reportOwnBreadcrumbsProps'];
18
20
  }
19
21
  export declare function BreadcrumbsSlot({
20
22
  ownBreadcrumbs,
21
- discoveredBreadcrumbs
23
+ discoveredBreadcrumbs,
24
+ reportOwnBreadcrumbsProps
22
25
  }: BreadcrumbsSlotProps): JSX.Element;
23
26
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/slots.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAO5E,UAAU,gBAAgB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,eAAO,MAAM,WAAW,sFAWtB,CAAC;AAEH,UAAU,sBAAsB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,eAAO,MAAM,iBAAiB,4FAM7B,CAAC;AAEF,UAAU,oBAAoB;IAC5B,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,qBAAqB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACrD;AAID,wBAAgB,eAAe,CAAC,EAAE,cAAc,EAAE,qBAAqB,EAAE,EAAE,oBAAoB,eAiB9F"}
1
+ {"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/slots.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAA0B,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAMjF,UAAU,gBAAgB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,eAAO,MAAM,WAAW,sFAWtB,CAAC;AAEH,UAAU,sBAAsB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,eAAO,MAAM,iBAAiB,4FAM7B,CAAC;AAEF,UAAU,oBAAoB;IAC5B,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,qBAAqB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpD,yBAAyB,CAAC,EAAE,0BAA0B,CAAC,2BAA2B,CAAC,CAAC;CACrF;AAID,wBAAgB,eAAe,CAAC,EAC9B,cAAc,EACd,qBAAqB,EACrB,yBAAyB,GAC1B,EAAE,oBAAoB,eAyBtB"}
@@ -16,11 +16,14 @@ export const ToolbarSlot = React.forwardRef(({ className, style, children }, ref
16
16
  });
17
17
  export const NotificationsSlot = React.forwardRef(({ className, style, children }, ref) => (React.createElement("div", { ref: ref, className: clsx(styles['notifications-container'], className), style: style }, children)));
18
18
  const breadcrumbsSlotContextValue = { isInToolbar: true };
19
- export function BreadcrumbsSlot({ ownBreadcrumbs, discoveredBreadcrumbs }) {
19
+ export function BreadcrumbsSlot({ ownBreadcrumbs, discoveredBreadcrumbs, reportOwnBreadcrumbsProps, }) {
20
20
  const isSSR = typeof window === 'undefined';
21
- return (React.createElement(BreadcrumbsSlotContext.Provider, { value: breadcrumbsSlotContextValue },
22
- React.createElement("div", { className: styles['breadcrumbs-own'] }, ownBreadcrumbs),
23
- discoveredBreadcrumbs && !isSSR && (React.createElement("div", { className: styles['breadcrumbs-discovered'] },
24
- React.createElement(BreadcrumbGroupImplementation, { ...discoveredBreadcrumbs, "data-awsui-discovered-breadcrumbs": true, __injectAnalyticsComponentMetadata: true })))));
21
+ const ownBreadcrumbsSlotContextValue = React.useMemo(() => ({ isInToolbar: true, reportOwnBreadcrumbsProps }), [reportOwnBreadcrumbsProps]);
22
+ return (React.createElement(React.Fragment, null,
23
+ React.createElement(BreadcrumbsSlotContext.Provider, { value: ownBreadcrumbsSlotContextValue },
24
+ React.createElement("div", { className: styles['breadcrumbs-own'] }, ownBreadcrumbs)),
25
+ discoveredBreadcrumbs && !isSSR && (React.createElement(BreadcrumbsSlotContext.Provider, { value: breadcrumbsSlotContextValue },
26
+ React.createElement("div", { className: styles['breadcrumbs-discovered'] },
27
+ React.createElement(BreadcrumbGroupImplementation, { ...discoveredBreadcrumbs, "data-awsui-discovered-breadcrumbs": true, __injectAnalyticsComponentMetadata: true }))))));
25
28
  }
26
29
  //# sourceMappingURL=slots.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slots.js","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/slots.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AAEzF,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,aAAa,MAAM,0BAA0B,CAAC;AACrD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAQrC,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAgC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;;IAAC,OAAA,CAClH,iCACE,GAAG,EAAE,GAAqB,EAC1B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,EACnH,KAAK,EAAE;YACL,eAAe,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,eAAe,mCAAI,CAAC;YAC5C,GAAG,KAAK;SACT,IAEA,QAAQ,CACD,CACX,CAAA;CAAA,CAAC,CAAC;AAQH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAC/C,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACvC,6BAAK,GAAG,EAAE,GAAqB,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,IACzG,QAAQ,CACL,CACP,CACF,CAAC;AAOF,MAAM,2BAA2B,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAE1D,MAAM,UAAU,eAAe,CAAC,EAAE,cAAc,EAAE,qBAAqB,EAAwB;IAC7F,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;IAE5C,OAAO,CACL,oBAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,2BAA2B;QACjE,6BAAK,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,IAAG,cAAc,CAAO;QAChE,qBAAqB,IAAI,CAAC,KAAK,IAAI,CAClC,6BAAK,SAAS,EAAE,MAAM,CAAC,wBAAwB,CAAC;YAC9C,oBAAC,6BAA6B,OACxB,qBAAqB,uCACU,IAAI,EACvC,kCAAkC,EAAE,IAAI,GACxC,CACE,CACP,CAC+B,CACnC,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { BreadcrumbGroupImplementation } from '../../../breadcrumb-group/implementation';\nimport { BreadcrumbGroupProps } from '../../../breadcrumb-group/interfaces';\nimport { BreadcrumbsSlotContext } from '../contexts';\n\nimport testutilStyles from '../../test-classes/styles.css.js';\nimport toolbarStyles from '../toolbar/styles.css.js';\nimport styles from './styles.css.js';\n\ninterface ToolbarSlotProps {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n}\n\nexport const ToolbarSlot = React.forwardRef<HTMLElement, ToolbarSlotProps>(({ className, style, children }, ref) => (\n <section\n ref={ref as React.Ref<any>}\n className={clsx(styles['toolbar-container'], toolbarStyles['universal-toolbar'], testutilStyles.toolbar, className)}\n style={{\n insetBlockStart: style?.insetBlockStart ?? 0,\n ...style,\n }}\n >\n {children}\n </section>\n));\n\ninterface NotificationsSlotProps {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n}\n\nexport const NotificationsSlot = React.forwardRef<HTMLElement, NotificationsSlotProps>(\n ({ className, style, children }, ref) => (\n <div ref={ref as React.Ref<any>} className={clsx(styles['notifications-container'], className)} style={style}>\n {children}\n </div>\n )\n);\n\ninterface BreadcrumbsSlotProps {\n ownBreadcrumbs: React.ReactNode;\n discoveredBreadcrumbs?: BreadcrumbGroupProps | null;\n}\n\nconst breadcrumbsSlotContextValue = { isInToolbar: true };\n\nexport function BreadcrumbsSlot({ ownBreadcrumbs, discoveredBreadcrumbs }: BreadcrumbsSlotProps) {\n const isSSR = typeof window === 'undefined';\n\n return (\n <BreadcrumbsSlotContext.Provider value={breadcrumbsSlotContextValue}>\n <div className={styles['breadcrumbs-own']}>{ownBreadcrumbs}</div>\n {discoveredBreadcrumbs && !isSSR && (\n <div className={styles['breadcrumbs-discovered']}>\n <BreadcrumbGroupImplementation\n {...discoveredBreadcrumbs}\n data-awsui-discovered-breadcrumbs={true}\n __injectAnalyticsComponentMetadata={true}\n />\n </div>\n )}\n </BreadcrumbsSlotContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"slots.js","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/slots.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AAEzF,OAAO,EAAE,sBAAsB,EAA8B,MAAM,aAAa,CAAC;AAEjF,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,aAAa,MAAM,0BAA0B,CAAC;AACrD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAQrC,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAgC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;;IAAC,OAAA,CAClH,iCACE,GAAG,EAAE,GAAqB,EAC1B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,EACnH,KAAK,EAAE;YACL,eAAe,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,eAAe,mCAAI,CAAC;YAC5C,GAAG,KAAK;SACT,IAEA,QAAQ,CACD,CACX,CAAA;CAAA,CAAC,CAAC;AAQH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAC/C,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACvC,6BAAK,GAAG,EAAE,GAAqB,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,IACzG,QAAQ,CACL,CACP,CACF,CAAC;AAQF,MAAM,2BAA2B,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAE1D,MAAM,UAAU,eAAe,CAAC,EAC9B,cAAc,EACd,qBAAqB,EACrB,yBAAyB,GACJ;IACrB,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;IAC5C,MAAM,8BAA8B,GAAG,KAAK,CAAC,OAAO,CAClD,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,EACxD,CAAC,yBAAyB,CAAC,CAC5B,CAAC;IAEF,OAAO,CACL;QACE,oBAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,8BAA8B;YACpE,6BAAK,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,IAAG,cAAc,CAAO,CACjC;QACjC,qBAAqB,IAAI,CAAC,KAAK,IAAI,CAClC,oBAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,2BAA2B;YACjE,6BAAK,SAAS,EAAE,MAAM,CAAC,wBAAwB,CAAC;gBAC9C,oBAAC,6BAA6B,OACxB,qBAAqB,uCACU,IAAI,EACvC,kCAAkC,EAAE,IAAI,GACxC,CACE,CAC0B,CACnC,CACA,CACJ,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { BreadcrumbGroupImplementation } from '../../../breadcrumb-group/implementation';\nimport { BreadcrumbGroupProps } from '../../../breadcrumb-group/interfaces';\nimport { BreadcrumbsSlotContext, BreadcrumbsSlotContextType } from '../contexts';\n\nimport testutilStyles from '../../test-classes/styles.css.js';\nimport toolbarStyles from '../toolbar/styles.css.js';\nimport styles from './styles.css.js';\n\ninterface ToolbarSlotProps {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n}\n\nexport const ToolbarSlot = React.forwardRef<HTMLElement, ToolbarSlotProps>(({ className, style, children }, ref) => (\n <section\n ref={ref as React.Ref<any>}\n className={clsx(styles['toolbar-container'], toolbarStyles['universal-toolbar'], testutilStyles.toolbar, className)}\n style={{\n insetBlockStart: style?.insetBlockStart ?? 0,\n ...style,\n }}\n >\n {children}\n </section>\n));\n\ninterface NotificationsSlotProps {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n}\n\nexport const NotificationsSlot = React.forwardRef<HTMLElement, NotificationsSlotProps>(\n ({ className, style, children }, ref) => (\n <div ref={ref as React.Ref<any>} className={clsx(styles['notifications-container'], className)} style={style}>\n {children}\n </div>\n )\n);\n\ninterface BreadcrumbsSlotProps {\n ownBreadcrumbs: React.ReactNode;\n discoveredBreadcrumbs?: BreadcrumbGroupProps | null;\n reportOwnBreadcrumbsProps?: BreadcrumbsSlotContextType['reportOwnBreadcrumbsProps'];\n}\n\nconst breadcrumbsSlotContextValue = { isInToolbar: true };\n\nexport function BreadcrumbsSlot({\n ownBreadcrumbs,\n discoveredBreadcrumbs,\n reportOwnBreadcrumbsProps,\n}: BreadcrumbsSlotProps) {\n const isSSR = typeof window === 'undefined';\n const ownBreadcrumbsSlotContextValue = React.useMemo(\n () => ({ isInToolbar: true, reportOwnBreadcrumbsProps }),\n [reportOwnBreadcrumbsProps]\n );\n\n return (\n <>\n <BreadcrumbsSlotContext.Provider value={ownBreadcrumbsSlotContextValue}>\n <div className={styles['breadcrumbs-own']}>{ownBreadcrumbs}</div>\n </BreadcrumbsSlotContext.Provider>\n {discoveredBreadcrumbs && !isSSR && (\n <BreadcrumbsSlotContext.Provider value={breadcrumbsSlotContextValue}>\n <div className={styles['breadcrumbs-discovered']}>\n <BreadcrumbGroupImplementation\n {...discoveredBreadcrumbs}\n data-awsui-discovered-breadcrumbs={true}\n __injectAnalyticsComponentMetadata={true}\n />\n </div>\n </BreadcrumbsSlotContext.Provider>\n )}\n </>\n );\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { AppLayoutProps } from '../../../app-layout/interfaces';
3
3
  import { BreadcrumbGroupProps } from '../../../breadcrumb-group/interfaces';
4
+ import { BreadcrumbsSlotContextType } from '../contexts';
4
5
  interface ToolbarContainerProps {
5
6
  children: React.ReactNode;
6
7
  hasAiDrawer?: boolean;
@@ -12,11 +13,15 @@ export declare function ToolbarContainer({
12
13
  interface ToolbarBreadcrumbsSectionProps {
13
14
  ownBreadcrumbs: React.ReactNode;
14
15
  discoveredBreadcrumbs?: BreadcrumbGroupProps | null;
16
+ breadcrumbsExternallyOwned?: boolean;
17
+ reportOwnBreadcrumbsProps?: BreadcrumbsSlotContextType['reportOwnBreadcrumbsProps'];
15
18
  includeTestUtils?: boolean;
16
19
  }
17
20
  export declare function ToolbarBreadcrumbsSection({
18
21
  ownBreadcrumbs,
19
22
  discoveredBreadcrumbs,
23
+ breadcrumbsExternallyOwned,
24
+ reportOwnBreadcrumbsProps,
20
25
  includeTestUtils
21
26
  }: ToolbarBreadcrumbsSectionProps): JSX.Element;
22
27
  interface ToolbarSkeletonStructureProps {
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-container.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAO5E,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,qBAAqB,eAMhF;AAED,UAAU,8BAA8B;IACtC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,qBAAqB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,yBAAyB,CAAC,EACxC,cAAc,EACd,qBAAqB,EACrB,gBAAwB,GACzB,EAAE,8BAA8B,eAQhC;AAED,UAAU,6BAA6B;IACrC,UAAU,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,qBAAqB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACrD;AAED,eAAO,MAAM,wBAAwB,mGA8BpC,CAAC"}
1
+ {"version":3,"file":"toolbar-container.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAOzD,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,qBAAqB,eAMhF;AAED,UAAU,8BAA8B;IACtC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,qBAAqB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpD,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,yBAAyB,CAAC,EAAE,0BAA0B,CAAC,2BAA2B,CAAC,CAAC;IACpF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,yBAAyB,CAAC,EACxC,cAAc,EACd,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,gBAAwB,GACzB,EAAE,8BAA8B,eAiBhC;AAED,UAAU,6BAA6B;IACrC,UAAU,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,qBAAqB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACrD;AAED,eAAO,MAAM,wBAAwB,mGA8BpC,CAAC"}
@@ -9,9 +9,9 @@ import toolbarStyles from '../toolbar/styles.css.js';
9
9
  export function ToolbarContainer({ children, hasAiDrawer }) {
10
10
  return (React.createElement("div", { className: clsx(toolbarStyles['toolbar-container'], hasAiDrawer && toolbarStyles['with-ai-drawer']) }, children));
11
11
  }
12
- export function ToolbarBreadcrumbsSection({ ownBreadcrumbs, discoveredBreadcrumbs, includeTestUtils = false, }) {
13
- return (React.createElement("div", { className: clsx(toolbarStyles['universal-toolbar-breadcrumbs'], includeTestUtils && testutilStyles.breadcrumbs) },
14
- React.createElement(BreadcrumbsSlot, { ownBreadcrumbs: ownBreadcrumbs, discoveredBreadcrumbs: discoveredBreadcrumbs })));
12
+ export function ToolbarBreadcrumbsSection({ ownBreadcrumbs, discoveredBreadcrumbs, breadcrumbsExternallyOwned, reportOwnBreadcrumbsProps, includeTestUtils = false, }) {
13
+ return (React.createElement("div", { className: clsx(toolbarStyles['universal-toolbar-breadcrumbs'], breadcrumbsExternallyOwned && toolbarStyles['external-breadcrumbs'], includeTestUtils && testutilStyles.breadcrumbs), "data-awsui-external-breadcrumbs": breadcrumbsExternallyOwned || undefined },
14
+ React.createElement(BreadcrumbsSlot, { ownBreadcrumbs: ownBreadcrumbs, discoveredBreadcrumbs: discoveredBreadcrumbs, reportOwnBreadcrumbsProps: reportOwnBreadcrumbsProps })));
15
15
  }
16
16
  export const ToolbarSkeletonStructure = React.forwardRef(({ ariaLabels, expandedDrawerId, hasNavigation, navigationOpen, ownBreadcrumbs, discoveredBreadcrumbs }, ref) => {
17
17
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-container.js","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,aAAa,MAAM,0BAA0B,CAAC;AAOrD,MAAM,UAAU,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAyB;IAC/E,OAAO,CACL,6BAAK,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,WAAW,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC,IACrG,QAAQ,CACL,CACP,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,yBAAyB,CAAC,EACxC,cAAc,EACd,qBAAqB,EACrB,gBAAgB,GAAG,KAAK,GACO;IAC/B,OAAO,CACL,6BACE,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,+BAA+B,CAAC,EAAE,gBAAgB,IAAI,cAAc,CAAC,WAAW,CAAC;QAE/G,oBAAC,eAAe,IAAC,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,qBAAqB,GAAI,CAC7F,CACP,CAAC;AACJ,CAAC;AAWD,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC,UAAU,CACtD,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,EAAE,GAAG,EAAE,EAAE;;IAC9G,MAAM,kBAAkB,GAAG,CAAC,CAAC,gBAAgB,CAAC;IAC9C,mDAAmD;IACnD,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACtB,OAAO,CACL,oBAAC,WAAW,IAAC,GAAG,EAAE,GAAG;QACnB,oBAAC,gBAAgB;YACd,aAAa,IAAI,CAChB,6BAAK,SAAS,EAAE,aAAa,CAAC,uBAAuB,CAAC;gBACpD,oBAAC,aAAa,IACZ,SAAS,EAAE,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,gBAAgB,mCAAI,SAAS,EACpD,YAAY,EAAE,CAAC,kBAAkB,IAAI,cAAc,EACnD,QAAQ,EAAC,MAAM,EACf,SAAS,EAAE,cAAc,CAAC,mBAAmB,CAAC,EAC9C,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,CAAC,kBAAkB,IAAI,cAAc,GAC/C,CACE,CACP;YACD,oBAAC,yBAAyB,IACxB,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,gBAAgB,EAAE,IAAI,GACtB;YACF,6BAAK,SAAS,EAAE,aAAa,CAAC,2BAA2B,CAAC,GAAI,CAC7C,CACP,CACf,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { AppLayoutProps } from '../../../app-layout/interfaces';\nimport { BreadcrumbGroupProps } from '../../../breadcrumb-group/interfaces';\nimport TriggerButton from '../toolbar/trigger-button';\nimport { BreadcrumbsSlot, ToolbarSlot } from './slots';\n\nimport testutilStyles from '../../test-classes/styles.css.js';\nimport toolbarStyles from '../toolbar/styles.css.js';\n\ninterface ToolbarContainerProps {\n children: React.ReactNode;\n hasAiDrawer?: boolean;\n}\n\nexport function ToolbarContainer({ children, hasAiDrawer }: ToolbarContainerProps) {\n return (\n <div className={clsx(toolbarStyles['toolbar-container'], hasAiDrawer && toolbarStyles['with-ai-drawer'])}>\n {children}\n </div>\n );\n}\n\ninterface ToolbarBreadcrumbsSectionProps {\n ownBreadcrumbs: React.ReactNode;\n discoveredBreadcrumbs?: BreadcrumbGroupProps | null;\n includeTestUtils?: boolean;\n}\n\nexport function ToolbarBreadcrumbsSection({\n ownBreadcrumbs,\n discoveredBreadcrumbs,\n includeTestUtils = false,\n}: ToolbarBreadcrumbsSectionProps) {\n return (\n <div\n className={clsx(toolbarStyles['universal-toolbar-breadcrumbs'], includeTestUtils && testutilStyles.breadcrumbs)}\n >\n <BreadcrumbsSlot ownBreadcrumbs={ownBreadcrumbs} discoveredBreadcrumbs={discoveredBreadcrumbs} />\n </div>\n );\n}\n\ninterface ToolbarSkeletonStructureProps {\n ariaLabels?: AppLayoutProps.Labels;\n expandedDrawerId?: string | null;\n hasNavigation?: boolean;\n navigationOpen?: boolean;\n ownBreadcrumbs: React.ReactNode;\n discoveredBreadcrumbs?: BreadcrumbGroupProps | null;\n}\n\nexport const ToolbarSkeletonStructure = React.forwardRef<HTMLElement, ToolbarSkeletonStructureProps>(\n ({ ariaLabels, expandedDrawerId, hasNavigation, navigationOpen, ownBreadcrumbs, discoveredBreadcrumbs }, ref) => {\n const drawerExpandedMode = !!expandedDrawerId;\n // istanbul ignore next: not interactive during SSR\n const noop = () => {};\n return (\n <ToolbarSlot ref={ref}>\n <ToolbarContainer>\n {hasNavigation && (\n <nav className={toolbarStyles['universal-toolbar-nav']}>\n <TriggerButton\n ariaLabel={ariaLabels?.navigationToggle ?? undefined}\n ariaExpanded={!drawerExpandedMode && navigationOpen}\n iconName=\"menu\"\n className={testutilStyles['navigation-toggle']}\n onClick={noop}\n selected={!drawerExpandedMode && navigationOpen}\n />\n </nav>\n )}\n <ToolbarBreadcrumbsSection\n ownBreadcrumbs={ownBreadcrumbs}\n discoveredBreadcrumbs={discoveredBreadcrumbs}\n includeTestUtils={true}\n />\n <div className={toolbarStyles['universal-toolbar-drawers']} />\n </ToolbarContainer>\n </ToolbarSlot>\n );\n }\n);\n"]}
1
+ {"version":3,"file":"toolbar-container.js","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAKxB,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,aAAa,MAAM,0BAA0B,CAAC;AAOrD,MAAM,UAAU,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAyB;IAC/E,OAAO,CACL,6BAAK,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,WAAW,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC,IACrG,QAAQ,CACL,CACP,CAAC;AACJ,CAAC;AAUD,MAAM,UAAU,yBAAyB,CAAC,EACxC,cAAc,EACd,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,gBAAgB,GAAG,KAAK,GACO;IAC/B,OAAO,CACL,6BACE,SAAS,EAAE,IAAI,CACb,aAAa,CAAC,+BAA+B,CAAC,EAC9C,0BAA0B,IAAI,aAAa,CAAC,sBAAsB,CAAC,EACnE,gBAAgB,IAAI,cAAc,CAAC,WAAW,CAC/C,qCACgC,0BAA0B,IAAI,SAAS;QAExE,oBAAC,eAAe,IACd,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,yBAAyB,EAAE,yBAAyB,GACpD,CACE,CACP,CAAC;AACJ,CAAC;AAWD,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC,UAAU,CACtD,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,EAAE,GAAG,EAAE,EAAE;;IAC9G,MAAM,kBAAkB,GAAG,CAAC,CAAC,gBAAgB,CAAC;IAC9C,mDAAmD;IACnD,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACtB,OAAO,CACL,oBAAC,WAAW,IAAC,GAAG,EAAE,GAAG;QACnB,oBAAC,gBAAgB;YACd,aAAa,IAAI,CAChB,6BAAK,SAAS,EAAE,aAAa,CAAC,uBAAuB,CAAC;gBACpD,oBAAC,aAAa,IACZ,SAAS,EAAE,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,gBAAgB,mCAAI,SAAS,EACpD,YAAY,EAAE,CAAC,kBAAkB,IAAI,cAAc,EACnD,QAAQ,EAAC,MAAM,EACf,SAAS,EAAE,cAAc,CAAC,mBAAmB,CAAC,EAC9C,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,CAAC,kBAAkB,IAAI,cAAc,GAC/C,CACE,CACP;YACD,oBAAC,yBAAyB,IACxB,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,gBAAgB,EAAE,IAAI,GACtB;YACF,6BAAK,SAAS,EAAE,aAAa,CAAC,2BAA2B,CAAC,GAAI,CAC7C,CACP,CACf,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { AppLayoutProps } from '../../../app-layout/interfaces';\nimport { BreadcrumbGroupProps } from '../../../breadcrumb-group/interfaces';\nimport { BreadcrumbsSlotContextType } from '../contexts';\nimport TriggerButton from '../toolbar/trigger-button';\nimport { BreadcrumbsSlot, ToolbarSlot } from './slots';\n\nimport testutilStyles from '../../test-classes/styles.css.js';\nimport toolbarStyles from '../toolbar/styles.css.js';\n\ninterface ToolbarContainerProps {\n children: React.ReactNode;\n hasAiDrawer?: boolean;\n}\n\nexport function ToolbarContainer({ children, hasAiDrawer }: ToolbarContainerProps) {\n return (\n <div className={clsx(toolbarStyles['toolbar-container'], hasAiDrawer && toolbarStyles['with-ai-drawer'])}>\n {children}\n </div>\n );\n}\n\ninterface ToolbarBreadcrumbsSectionProps {\n ownBreadcrumbs: React.ReactNode;\n discoveredBreadcrumbs?: BreadcrumbGroupProps | null;\n breadcrumbsExternallyOwned?: boolean;\n reportOwnBreadcrumbsProps?: BreadcrumbsSlotContextType['reportOwnBreadcrumbsProps'];\n includeTestUtils?: boolean;\n}\n\nexport function ToolbarBreadcrumbsSection({\n ownBreadcrumbs,\n discoveredBreadcrumbs,\n breadcrumbsExternallyOwned,\n reportOwnBreadcrumbsProps,\n includeTestUtils = false,\n}: ToolbarBreadcrumbsSectionProps) {\n return (\n <div\n className={clsx(\n toolbarStyles['universal-toolbar-breadcrumbs'],\n breadcrumbsExternallyOwned && toolbarStyles['external-breadcrumbs'],\n includeTestUtils && testutilStyles.breadcrumbs\n )}\n data-awsui-external-breadcrumbs={breadcrumbsExternallyOwned || undefined}\n >\n <BreadcrumbsSlot\n ownBreadcrumbs={ownBreadcrumbs}\n discoveredBreadcrumbs={discoveredBreadcrumbs}\n reportOwnBreadcrumbsProps={reportOwnBreadcrumbsProps}\n />\n </div>\n );\n}\n\ninterface ToolbarSkeletonStructureProps {\n ariaLabels?: AppLayoutProps.Labels;\n expandedDrawerId?: string | null;\n hasNavigation?: boolean;\n navigationOpen?: boolean;\n ownBreadcrumbs: React.ReactNode;\n discoveredBreadcrumbs?: BreadcrumbGroupProps | null;\n}\n\nexport const ToolbarSkeletonStructure = React.forwardRef<HTMLElement, ToolbarSkeletonStructureProps>(\n ({ ariaLabels, expandedDrawerId, hasNavigation, navigationOpen, ownBreadcrumbs, discoveredBreadcrumbs }, ref) => {\n const drawerExpandedMode = !!expandedDrawerId;\n // istanbul ignore next: not interactive during SSR\n const noop = () => {};\n return (\n <ToolbarSlot ref={ref}>\n <ToolbarContainer>\n {hasNavigation && (\n <nav className={toolbarStyles['universal-toolbar-nav']}>\n <TriggerButton\n ariaLabel={ariaLabels?.navigationToggle ?? undefined}\n ariaExpanded={!drawerExpandedMode && navigationOpen}\n iconName=\"menu\"\n className={testutilStyles['navigation-toggle']}\n onClick={noop}\n selected={!drawerExpandedMode && navigationOpen}\n />\n </nav>\n )}\n <ToolbarBreadcrumbsSection\n ownBreadcrumbs={ownBreadcrumbs}\n discoveredBreadcrumbs={discoveredBreadcrumbs}\n includeTestUtils={true}\n />\n <div className={toolbarStyles['universal-toolbar-drawers']} />\n </ToolbarContainer>\n </ToolbarSlot>\n );\n }\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-app-layout.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/state/use-app-layout.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,YAAY,EAAiE,MAAM,OAAO,CAAC;AAc3G,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAYlD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAsB,MAAM,eAAe,CAAC;AAM3E,eAAO,MAAM,YAAY,GACvB,YAAY,OAAO,EACnB,6iBA4BG,sBAAsB,EACzB,YAAY,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,KAC3C,cA0mBF,CAAC"}
1
+ {"version":3,"file":"use-app-layout.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/state/use-app-layout.tsx"],"names":[],"mappings":"AAEA,OAAc,EACZ,YAAY,EAOb,MAAM,OAAO,CAAC;AAcf,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAYlD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAsB,MAAM,eAAe,CAAC;AAO3E,eAAO,MAAM,YAAY,GACvB,YAAY,OAAO,EACnB,6iBA4BG,sBAAsB,EACzB,YAAY,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,KAC3C,cAmoBF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';
3
+ import React, { useCallback, useEffect, useImperativeHandle, useLayoutEffect, useRef, useState, } from 'react';
4
4
  import { useMergeRefs, useStableCallback, useUniqueId, warnOnce } from '@cloudscape-design/component-toolkit/internal';
5
5
  import { fireNonCancelableEvent } from '../../../internal/events';
6
6
  import { useControllable } from '../../../internal/hooks/use-controllable';
@@ -18,6 +18,7 @@ import { computeHorizontalLayout, computeSplitPanelOffsets, computeVerticalLayou
18
18
  import { useAiDrawer } from './use-ai-drawer';
19
19
  import { useBottomDrawers } from './use-bottom-drawers';
20
20
  import { useFeatureNotifications } from './use-feature-notifications';
21
+ import { useOwnBreadcrumbsProps } from './use-own-breadcrumbs-props';
21
22
  import { useWidgetMessages } from './use-widget-messages';
22
23
  export const useAppLayout = (hasToolbar, { ariaLabels, navigationOpen, navigationWidth, navigationCloseBehavior, navigationCollapsedWidth, navigation, navigationHide, onNavigationChange, tools, toolsOpen: controlledToolsOpen, onToolsChange, toolsHide, toolsWidth, headerVariant, breadcrumbs, stickyNotifications, splitPanelPreferences: controlledSplitPanelPreferences, splitPanelOpen: controlledSplitPanelOpen, splitPanel, splitPanelSize: controlledSplitPanelSize, onSplitPanelToggle, onSplitPanelResize, onSplitPanelPreferencesChange, minContentWidth, placement, navigationTriggerHide, ...rest }, forwardRef) => {
23
24
  var _a, _b, _c;
@@ -43,6 +44,10 @@ export const useAppLayout = (hasToolbar, { ariaLabels, navigationOpen, navigatio
43
44
  setIsNested(getIsNestedInAppLayout(node));
44
45
  }, []);
45
46
  const { __forceEnableRuntimeMessages: forceEnableRuntimeMessages } = rest;
47
+ const discoveredBreadcrumbsProps = useGetGlobalBreadcrumbs(hasToolbar && !breadcrumbs);
48
+ const { breadcrumbs: ownBreadcrumbsProps, reportOwnBreadcrumbsProps } = useOwnBreadcrumbsProps();
49
+ const breadcrumbsConsumerRef = useRef(null);
50
+ const [hasBreadcrumbsConsumer, setHasBreadcrumbsExternalConsumer] = useState(false);
46
51
  const [toolsOpen = false, setToolsOpen] = useControllable(controlledToolsOpen, onToolsChange, false, {
47
52
  componentName: 'AppLayout',
48
53
  controlledProp: 'toolsOpen',
@@ -154,6 +159,16 @@ export const useAppLayout = (hasToolbar, { ariaLabels, navigationOpen, navigatio
154
159
  };
155
160
  useWidgetMessages(hasToolbar || forceEnableRuntimeMessages, message => {
156
161
  var _a, _b;
162
+ if (message.type === 'registerBreadcrumbsExternalConsumer') {
163
+ breadcrumbsConsumerRef.current = message.payload;
164
+ setHasBreadcrumbsExternalConsumer(true);
165
+ return;
166
+ }
167
+ if (message.type === 'unregisterBreadcrumbsExternalConsumer') {
168
+ breadcrumbsConsumerRef.current = null;
169
+ setHasBreadcrumbsExternalConsumer(false);
170
+ return;
171
+ }
157
172
  if (message.type === 'expandDrawer' || message.type === 'exitExpandedMode') {
158
173
  drawerGenericMessageHandler(message);
159
174
  return;
@@ -278,7 +293,14 @@ export const useAppLayout = (hasToolbar, { ariaLabels, navigationOpen, navigatio
278
293
  });
279
294
  const { ref: intersectionObserverRef, isIntersecting } = useIntersectionObserver({ initialState: true });
280
295
  const rootRef = useMergeRefs(rootRefInternal, intersectionObserverRef, onMountRootRef);
281
- const discoveredBreadcrumbs = useGetGlobalBreadcrumbs(hasToolbar && !breadcrumbs);
296
+ const currentBreadcrumbs = breadcrumbs ? ownBreadcrumbsProps : discoveredBreadcrumbsProps;
297
+ useLayoutEffect(() => {
298
+ var _a;
299
+ if (!isIntersecting) {
300
+ return;
301
+ }
302
+ (_a = breadcrumbsConsumerRef.current) === null || _a === void 0 ? void 0 : _a.onBreadcrumbsChange(currentBreadcrumbs || null);
303
+ }, [hasBreadcrumbsConsumer, currentBreadcrumbs, isIntersecting]);
282
304
  useGlobalScrollPadding((_c = verticalOffsets.header) !== null && _c !== void 0 ? _c : 0);
283
305
  const getMaxGlobalBottomDrawerHeight = useCallback(() => {
284
306
  const splitPanelSize = splitPanelOpen && splitPanelPosition === 'bottom' ? splitPanelReportedSize : 0;
@@ -295,7 +317,7 @@ export const useAppLayout = (hasToolbar, { ariaLabels, navigationOpen, navigatio
295
317
  headerVariant,
296
318
  isMobile,
297
319
  breadcrumbs,
298
- discoveredBreadcrumbs,
320
+ discoveredBreadcrumbs: discoveredBreadcrumbsProps,
299
321
  stickyNotifications: resolvedStickyNotifications,
300
322
  navigationOpen: resolvedNavigationOpen,
301
323
  navigation: resolvedNavigation,
@@ -484,6 +506,8 @@ export const useAppLayout = (hasToolbar, { ariaLabels, navigationOpen, navigatio
484
506
  splitPanelInternals,
485
507
  widgetizedState: {
486
508
  ...appLayoutInternals,
509
+ breadcrumbsExternallyOwned: hasBreadcrumbsConsumer,
510
+ reportOwnBreadcrumbsProps,
487
511
  aiDrawerExpandedMode: expandedDrawerId === (activeAiDrawer === null || activeAiDrawer === void 0 ? void 0 : activeAiDrawer.id),
488
512
  isNested,
489
513
  navigationAnimationDisabled,
@@ -1 +1 @@
1
- {"version":3,"file":"use-app-layout.js","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/state/use-app-layout.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { ForwardedRef, useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';\n\nimport { useMergeRefs, useStableCallback, useUniqueId, warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport { SplitPanelSideToggleProps } from '../../../internal/context/split-panel-context';\nimport { fireNonCancelableEvent } from '../../../internal/events';\nimport { useControllable } from '../../../internal/hooks/use-controllable';\nimport { useIntersectionObserver } from '../../../internal/hooks/use-intersection-observer';\nimport { useMobile } from '../../../internal/hooks/use-mobile';\nimport { metrics } from '../../../internal/metrics';\nimport { useGetGlobalBreadcrumbs } from '../../../internal/plugins/helpers/use-global-breadcrumbs';\nimport { WidgetMessage } from '../../../internal/plugins/widget/interfaces';\nimport globalVars from '../../../internal/styles/global-vars';\nimport { getSplitPanelDefaultSize } from '../../../split-panel/utils/size-utils';\nimport { AppLayoutProps } from '../../interfaces';\nimport { SplitPanelProviderProps } from '../../split-panel';\nimport { MIN_DRAWER_SIZE, OnChangeParams, useDrawers } from '../../utils/use-drawers';\nimport { useAsyncFocusControl, useMultipleFocusControl } from '../../utils/use-focus-control';\nimport { useGlobalScrollPadding } from '../../utils/use-global-scroll-padding';\nimport { useSplitPanelFocusControl } from '../../utils/use-split-panel-focus-control';\nimport {\n computeHorizontalLayout,\n computeSplitPanelOffsets,\n computeVerticalLayout,\n CONTENT_PADDING,\n} from '../compute-layout';\nimport { AppLayoutState } from '../interfaces';\nimport { AppLayoutInternalProps, AppLayoutInternals } from '../interfaces';\nimport { useAiDrawer } from './use-ai-drawer';\nimport { useBottomDrawers } from './use-bottom-drawers';\nimport { useFeatureNotifications } from './use-feature-notifications';\nimport { useWidgetMessages } from './use-widget-messages';\n\nexport const useAppLayout = (\n hasToolbar: boolean,\n {\n ariaLabels,\n navigationOpen,\n navigationWidth,\n navigationCloseBehavior,\n navigationCollapsedWidth,\n navigation,\n navigationHide,\n onNavigationChange,\n tools,\n toolsOpen: controlledToolsOpen,\n onToolsChange,\n toolsHide,\n toolsWidth,\n headerVariant,\n breadcrumbs,\n stickyNotifications,\n splitPanelPreferences: controlledSplitPanelPreferences,\n splitPanelOpen: controlledSplitPanelOpen,\n splitPanel,\n splitPanelSize: controlledSplitPanelSize,\n onSplitPanelToggle,\n onSplitPanelResize,\n onSplitPanelPreferencesChange,\n minContentWidth,\n placement,\n navigationTriggerHide,\n ...rest\n }: AppLayoutInternalProps,\n forwardRef: ForwardedRef<AppLayoutProps.Ref>\n): AppLayoutState => {\n const isMobile = useMobile();\n const navigationCollapsible = navigationCloseBehavior === 'collapse';\n\n if (navigationCollapsible && navigationCollapsedWidth !== undefined && navigationCollapsedWidth >= navigationWidth) {\n warnOnce(\n 'AppLayout',\n '`navigationCollapsedWidth` should be smaller than `navigationWidth`. ' +\n 'When collapsed width equals or exceeds the expanded width, the ARIA expanded/collapsed semantics become inverted.'\n );\n }\n\n const splitPanelControlId = useUniqueId('split-panel');\n const [toolbarState, setToolbarState] = useState<'show' | 'hide'>('show');\n const [toolbarHeight, setToolbarHeight] = useState(0);\n const [notificationsHeight, setNotificationsHeight] = useState(0);\n const [navigationAnimationDisabled, setNavigationAnimationDisabled] = useState(true);\n const [splitPanelAnimationDisabled, setSplitPanelAnimationDisabled] = useState(true);\n const [drawerAnimationDisabled, setDrawerAnimationDisabled] = useState(true);\n const [isNested, setIsNested] = useState(false);\n const [expandedDrawerId, setInternalExpandedDrawerId] = useState<string | null>(null);\n const rootRefInternal = useRef<HTMLDivElement>(null);\n // This workaround ensures the ref is defined before checking if the app layout is nested.\n // On initial render, the ref might be undefined because this component loads asynchronously via the widget API.\n const onMountRootRef = useCallback(node => {\n setIsNested(getIsNestedInAppLayout(node));\n }, []);\n const { __forceEnableRuntimeMessages: forceEnableRuntimeMessages } = rest as any;\n\n const [toolsOpen = false, setToolsOpen] = useControllable(controlledToolsOpen, onToolsChange, false, {\n componentName: 'AppLayout',\n controlledProp: 'toolsOpen',\n changeHandler: 'onToolsChange',\n });\n const onToolsToggle = (open: boolean) => {\n setDrawerAnimationDisabled(false);\n setToolsOpen(open);\n drawersFocusControl.setFocus();\n fireNonCancelableEvent(onToolsChange, { open });\n };\n\n const setExpandedDrawerId = (value: string | null) => {\n setInternalExpandedDrawerId(value);\n\n if (aiDrawer?.onToggleFocusMode && (value === aiDrawer?.id || value === null)) {\n fireNonCancelableEvent(aiDrawer.onToggleFocusMode, {\n isExpanded: !!value,\n });\n }\n };\n\n const onGlobalDrawerFocus = (drawerId: string, open: boolean) => {\n globalDrawersFocusControl.setFocus({ force: true, drawerId, open });\n };\n\n const onAddNewActiveDrawer = (drawerId: string) => {\n // If either a local drawer or a bottom drawer is already open, and we attempt to open a new one,\n // it will replace the existing one instead of opening an additional drawer,\n // since only one local drawer is supported. Therefore, layout calculations are not necessary.\n if ((activeDrawer && drawers?.find(drawer => drawer.id === drawerId)) || activeGlobalBottomDrawerId === drawerId) {\n return;\n }\n // get the size of drawerId. it could be either local or global drawer\n const combinedDrawers = [...(drawers || []), ...globalDrawers];\n const newDrawer = combinedDrawers.find(drawer => drawer.id === drawerId);\n if (!newDrawer) {\n return;\n }\n const newDrawerSize = Math.min(newDrawer.defaultSize ?? drawerSizes[drawerId] ?? MIN_DRAWER_SIZE, MIN_DRAWER_SIZE);\n // check if the active drawers could be resized to fit the new drawers\n // to do this, we need to take all active drawers, sum up their min sizes, truncate it from resizableSpaceAvailable\n // and compare a given number with the new drawer id min size\n\n // the total size of all global drawers resized to their min size\n const availableSpaceForNewDrawer = resizableSpaceAvailable - totalActiveDrawersMinSize;\n if (availableSpaceForNewDrawer >= newDrawerSize) {\n return;\n }\n\n // now we made sure we cannot accommodate the new drawer with existing ones\n closeFirstDrawer();\n };\n\n const onGlobalBottomDrawerFocus = () => {\n bottomDrawersFocusControl.setFocus();\n };\n\n const { featureNotificationsProps, onOpenFeatureNotificationsDrawer, featureNotificationsMessageHandler } =\n useFeatureNotifications();\n\n const {\n drawers,\n activeDrawer,\n minDrawerSize,\n minGlobalDrawersSizes,\n activeDrawerSize,\n ariaLabelsWithDrawers,\n globalDrawers,\n activeGlobalDrawers,\n activeGlobalDrawersIds,\n activeGlobalDrawersSizes,\n drawerSizes,\n drawersOpenQueue,\n onActiveDrawerChange,\n onActiveDrawerResize,\n onActiveGlobalDrawersChange,\n } = useDrawers(\n {\n ...rest,\n externalLocalRuntimeDrawers: featureNotificationsProps?.drawer && [featureNotificationsProps?.drawer],\n onGlobalDrawerFocus,\n onAddNewActiveDrawer,\n expandedDrawerId,\n setExpandedDrawerId,\n },\n ariaLabels,\n {\n ariaLabels,\n toolsHide,\n toolsOpen,\n tools,\n toolsWidth,\n onToolsToggle,\n }\n );\n const {\n aiDrawer,\n aiDrawerMessageHandler,\n onActiveAiDrawerChange,\n activeAiDrawer,\n activeAiDrawerId,\n activeAiDrawerSize,\n minAiDrawerSize,\n onActiveAiDrawerResize,\n } = useAiDrawer({\n getMaxAiDrawerSize: () => maxAiDrawerSize,\n onAiDrawerFocus: () => aiDrawerFocusControl.setFocus(),\n expandedDrawerId,\n setExpandedDrawerId,\n });\n const aiDrawerFocusControl = useAsyncFocusControl(!!activeAiDrawer?.id, true, activeAiDrawer?.id);\n\n const {\n bottomDrawers,\n activeBottomDrawer,\n onActiveBottomDrawerChange: onActiveGlobalBottomDrawerChange,\n activeBottomDrawerSize: activeGlobalBottomDrawerSize,\n minBottomDrawerSize: minGlobalBottomDrawerSize,\n onActiveBottomDrawerResize,\n bottomDrawersMessageHandler,\n } = useBottomDrawers({\n onBottomDrawerFocus: onGlobalBottomDrawerFocus,\n expandedDrawerId,\n setExpandedDrawerId,\n drawersOpenQueue,\n });\n const activeGlobalBottomDrawerId = activeBottomDrawer?.id ?? null;\n\n const checkAIDrawerIdExists = (id: string) => {\n return aiDrawer?.id === id;\n };\n\n const checkBottomDrawerIdExists = (id: string) => {\n return !!bottomDrawers.find(drawer => drawer.id === id);\n };\n\n const checkDrawerIdExists = (id: string) => {\n return checkAIDrawerIdExists(id) || checkBottomDrawerIdExists(id);\n };\n\n const drawerGenericMessageHandler = (message: WidgetMessage) => {\n switch (message.type) {\n case 'expandDrawer':\n if (!checkDrawerIdExists(message.payload.id)) {\n metrics.sendOpsMetricObject('awsui-widget-drawer-incorrect-id', {\n id: message.payload.id,\n type: message.type,\n bottomDrawers: bottomDrawers.map(drawer => drawer.id).join(','),\n aiDrawer: aiDrawer?.id ?? '',\n });\n }\n setExpandedDrawerId(message.payload.id);\n break;\n case 'exitExpandedMode':\n setExpandedDrawerId(null);\n break;\n }\n };\n\n useWidgetMessages(hasToolbar || forceEnableRuntimeMessages, message => {\n if (message.type === 'expandDrawer' || message.type === 'exitExpandedMode') {\n drawerGenericMessageHandler(message);\n return;\n }\n\n if (\n ['registerFeatureNotifications', 'showFeaturePromptIfPossible', 'clearFeatureNotifications'].includes(\n message.type\n )\n ) {\n featureNotificationsMessageHandler(message);\n return;\n }\n\n // eslint-disable-next-line no-restricted-syntax -- postMessage validation: runtime data shape check\n if (!('payload' in message && 'id' in message.payload)) {\n metrics.sendOpsMetricObject('awsui-widget-drawer-incorrect-payload', {\n type: message.type,\n bottomDrawers: bottomDrawers.map(drawer => drawer.id).join(','),\n aiDrawer: aiDrawer?.id ?? '',\n });\n return;\n }\n\n const { id } = message.payload;\n\n if (checkAIDrawerIdExists(id) || message.type === 'registerLeftDrawer') {\n aiDrawerMessageHandler(message);\n return;\n }\n\n if (checkBottomDrawerIdExists(id) || message.type === 'registerBottomDrawer') {\n bottomDrawersMessageHandler(message);\n return;\n }\n\n metrics.sendOpsMetricObject('awsui-widget-drawer-incorrect-id', {\n id,\n type: message.type,\n bottomDrawers: bottomDrawers.map(drawer => drawer.id).join(','),\n aiDrawer: aiDrawer?.id ?? '',\n });\n });\n\n const onActiveDrawerChangeHandler = (\n drawerId: string | null,\n params: OnChangeParams = { initiatedByUserAction: true }\n ) => {\n if (params.initiatedByUserAction) {\n setDrawerAnimationDisabled(false);\n }\n onActiveDrawerChange(drawerId, params);\n drawersFocusControl.setFocus();\n if (featureNotificationsProps?.drawer?.id && featureNotificationsProps?.drawer?.id === drawerId) {\n onOpenFeatureNotificationsDrawer();\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 onSplitPanelToggleHandler = () => {\n setSplitPanelAnimationDisabled(false);\n setSplitPanelOpen(!splitPanelOpen);\n splitPanelFocusControl.setLastInteraction({ type: splitPanelOpen ? 'close' : 'open' });\n fireNonCancelableEvent(onSplitPanelToggle, { open: !splitPanelOpen });\n };\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\n const onSplitPanelPreferencesChangeHandler = (detail: AppLayoutProps.SplitPanelPreferences) => {\n setSplitPanelPreferences(detail);\n splitPanelFocusControl.setLastInteraction({ type: 'position' });\n fireNonCancelableEvent(onSplitPanelPreferencesChange, detail);\n };\n\n const [splitPanelSize = 0, setSplitPanelSize] = useControllable(\n controlledSplitPanelSize,\n onSplitPanelResize,\n getSplitPanelDefaultSize(splitPanelPreferences?.position ?? 'bottom'),\n { componentName: 'AppLayout', controlledProp: 'splitPanelSize', changeHandler: 'onSplitPanelResize' }\n );\n\n const [splitPanelReportedSize, setSplitPanelReportedSize] = useState(0);\n const [splitPanelHeaderBlockSize, setSplitPanelHeaderBlockSize] = useState(0);\n\n const onSplitPanelResizeHandler = (size: number) => {\n setSplitPanelSize(size);\n fireNonCancelableEvent(onSplitPanelResize, { size });\n };\n\n const [splitPanelToggleConfig, setSplitPanelToggleConfig] = useState<SplitPanelSideToggleProps>({\n ariaLabel: undefined,\n displayed: false,\n });\n\n const [bottomDrawerReportedSize, setBottomDrawerReportedSize] = useState(0);\n\n const globalDrawersFocusControl = useMultipleFocusControl(true, activeGlobalDrawersIds);\n const drawersFocusControl = useAsyncFocusControl(!!activeDrawer?.id, true, activeDrawer?.id);\n const bottomDrawersFocusControl = useAsyncFocusControl(\n !!activeGlobalBottomDrawerId,\n true,\n activeGlobalBottomDrawerId\n );\n const navigationFocusControl = useAsyncFocusControl(navigationOpen, navigationTriggerHide);\n const splitPanelFocusControl = useSplitPanelFocusControl([splitPanelPreferences, splitPanelOpen]);\n\n const onNavigationToggle = useStableCallback(({ isOpen, autoFocus }: { isOpen: boolean; autoFocus: boolean }) => {\n setNavigationAnimationDisabled(false);\n navigationFocusControl.setFocus({ force: false, autoFocus });\n fireNonCancelableEvent(onNavigationChange, { open: isOpen });\n });\n\n useImperativeHandle(forwardRef, () => ({\n closeNavigationIfNecessary: () => isMobile && onNavigationToggle({ isOpen: false, autoFocus: true }),\n openTools: () => onToolsToggle(true),\n focusToolsClose: () => drawersFocusControl.setFocus({ force: true }),\n focusActiveDrawer: () => drawersFocusControl.setFocus({ force: true }),\n focusSplitPanel: () => splitPanelFocusControl.setLastInteraction({ type: 'open' }),\n focusNavigation: () => navigationFocusControl.setFocus({ force: true }),\n }));\n\n const resolvedStickyNotifications = !!stickyNotifications && !isMobile;\n //navigation must be null if hidden so toolbar knows to hide the toggle button\n const resolvedNavigation = navigationHide ? null : navigation || <></>;\n //navigation must not be open if navigationHide is true\n const resolvedNavigationOpen = !!resolvedNavigation && navigationOpen;\n const {\n maxDrawerSize,\n maxSplitPanelSize,\n splitPanelForcedPosition,\n splitPanelPosition,\n maxGlobalDrawersSizes,\n resizableSpaceAvailable,\n maxAiDrawerSize,\n } = computeHorizontalLayout({\n activeDrawerSize: activeDrawer ? activeDrawerSize : 0,\n splitPanelSize,\n minContentWidth,\n navigationOpen: resolvedNavigationOpen,\n navigationWidth,\n navigationCollapsible,\n navigationCollapsedWidth,\n placement,\n splitPanelOpen,\n splitPanelPosition: splitPanelPreferences?.position,\n isMobile,\n activeGlobalDrawersSizes,\n activeAiDrawerSize,\n });\n\n const verticalOffsets = computeVerticalLayout({\n topOffset: placement.insetBlockStart,\n hasVisibleToolbar: hasToolbar && toolbarState !== 'hide',\n notificationsHeight: notificationsHeight ?? 0,\n toolbarHeight: toolbarHeight ?? 0,\n stickyNotifications: resolvedStickyNotifications,\n });\n\n const { ref: intersectionObserverRef, isIntersecting } = useIntersectionObserver({ initialState: true });\n\n const rootRef = useMergeRefs(rootRefInternal, intersectionObserverRef, onMountRootRef);\n\n const discoveredBreadcrumbs = useGetGlobalBreadcrumbs(hasToolbar && !breadcrumbs);\n\n useGlobalScrollPadding(verticalOffsets.header ?? 0);\n\n const getMaxGlobalBottomDrawerHeight = useCallback(() => {\n const splitPanelSize = splitPanelOpen && splitPanelPosition === 'bottom' ? splitPanelReportedSize : 0;\n const availableHeight =\n document.documentElement.clientHeight - placement.insetBlockStart - placement.insetBlockEnd - splitPanelSize;\n\n // skip reading sizes in JSDOM\n if (availableHeight === 0) {\n return Infinity;\n }\n\n // If the page is likely zoomed in at 200%, allow the split panel to fill the content area.\n return availableHeight < 400 ? availableHeight - 40 : availableHeight - 250;\n }, [splitPanelOpen, splitPanelPosition, splitPanelReportedSize, placement.insetBlockStart, placement.insetBlockEnd]);\n\n const appLayoutInternals: AppLayoutInternals = {\n ariaLabels: ariaLabelsWithDrawers,\n headerVariant,\n isMobile,\n breadcrumbs,\n discoveredBreadcrumbs,\n stickyNotifications: resolvedStickyNotifications,\n navigationOpen: resolvedNavigationOpen,\n navigation: resolvedNavigation,\n navigationFocusControl,\n activeDrawer,\n activeDrawerSize,\n minDrawerSize,\n maxDrawerSize,\n minGlobalDrawersSizes,\n maxGlobalDrawersSizes,\n drawers: drawers!,\n globalDrawers,\n activeGlobalDrawers,\n activeGlobalDrawersIds,\n activeGlobalDrawersSizes,\n onActiveGlobalDrawersChange: (drawerId: string, params: OnChangeParams) => {\n if (params.initiatedByUserAction) {\n setDrawerAnimationDisabled(false);\n }\n onActiveGlobalDrawersChange(drawerId, params);\n },\n drawersFocusControl,\n globalDrawersFocusControl,\n splitPanelPosition,\n splitPanelToggleConfig,\n splitPanelOpen,\n splitPanelControlId,\n splitPanelFocusControl,\n placement,\n toolbarState,\n setToolbarState,\n verticalOffsets,\n drawersOpenQueue: drawersOpenQueue.current,\n setToolbarHeight,\n setNotificationsHeight,\n onSplitPanelToggle: onSplitPanelToggleHandler,\n onNavigationToggle: isOpen => onNavigationToggle({ isOpen, autoFocus: true }),\n onActiveDrawerChange: onActiveDrawerChangeHandler,\n onActiveDrawerResize,\n splitPanelAnimationDisabled,\n drawerAnimationDisabled,\n expandedDrawerId,\n setExpandedDrawerId,\n aiDrawer,\n onActiveAiDrawerChange,\n activeAiDrawer,\n activeAiDrawerId,\n activeAiDrawerSize,\n minAiDrawerSize,\n maxAiDrawerSize,\n aiDrawerFocusControl,\n onActiveAiDrawerResize,\n };\n\n const splitPanelInternals: SplitPanelProviderProps = {\n bottomOffset: 0,\n getMaxHeight: useCallback(() => {\n const bottomDrawerHeight = activeGlobalBottomDrawerId ? bottomDrawerReportedSize : 0;\n const availableHeight =\n document.documentElement.clientHeight -\n placement.insetBlockStart -\n placement.insetBlockEnd -\n bottomDrawerHeight;\n // If the page is likely zoomed in at 200%, allow the split panel to fill the content area.\n return availableHeight < 400 ? availableHeight - 40 : availableHeight - 250;\n }, [activeGlobalBottomDrawerId, bottomDrawerReportedSize, placement.insetBlockEnd, placement.insetBlockStart]),\n maxWidth: maxSplitPanelSize,\n isForcedPosition: splitPanelForcedPosition,\n isOpen: splitPanelOpen,\n leftOffset: 0,\n onPreferencesChange: onSplitPanelPreferencesChangeHandler,\n onResize: onSplitPanelResizeHandler,\n onToggle: onSplitPanelToggleHandler,\n position: splitPanelPosition,\n reportSize: useStableCallback(size => setSplitPanelReportedSize(size)),\n reportHeaderHeight: useStableCallback(size => setSplitPanelHeaderBlockSize(size)),\n headerHeight: splitPanelHeaderBlockSize,\n rightOffset: 0,\n size: splitPanelSize,\n topOffset: 0,\n setSplitPanelToggle: setSplitPanelToggleConfig,\n refs: splitPanelFocusControl.refs,\n };\n\n const closeFirstDrawer = useStableCallback(() => {\n let drawerToClose = drawersOpenQueue.current[drawersOpenQueue.current.length - 1];\n if (drawerToClose === activeBottomDrawer?.id) {\n drawerToClose = drawersOpenQueue.current[drawersOpenQueue.current.length - 2];\n }\n if (activeDrawer && activeDrawer?.id === drawerToClose) {\n onActiveDrawerChange(null, { initiatedByUserAction: true });\n } else if (activeGlobalDrawersIds.includes(drawerToClose)) {\n onActiveGlobalDrawersChange(drawerToClose, { initiatedByUserAction: true });\n }\n });\n\n useEffect(() => {\n // Close navigation drawer on mobile so that the main content is visible\n if (isMobile) {\n onNavigationToggle({ isOpen: false, autoFocus: false });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isMobile]);\n\n const getTotalActiveDrawersMinSize = () => {\n const combinedDrawers = [...(drawers || []), ...globalDrawers];\n let result = activeGlobalDrawersIds\n .map(activeDrawerId =>\n Math.min(\n combinedDrawers.find(drawer => drawer.id === activeDrawerId)?.defaultSize ?? MIN_DRAWER_SIZE,\n MIN_DRAWER_SIZE\n )\n )\n .reduce((acc, curr) => acc + curr, 0);\n if (activeDrawer) {\n result += Math.min(activeDrawer?.defaultSize ?? MIN_DRAWER_SIZE, MIN_DRAWER_SIZE);\n }\n if (activeAiDrawer) {\n result += Math.min(activeAiDrawer?.defaultSize ?? MIN_DRAWER_SIZE, MIN_DRAWER_SIZE);\n }\n\n return result;\n };\n\n const totalActiveDrawersMinSize = getTotalActiveDrawersMinSize();\n\n useEffect(() => {\n if (isMobile) {\n return;\n }\n\n function getActiveNavigationWidth() {\n if (navigationHide) {\n return 0;\n }\n if (navigationOpen) {\n return navigationWidth;\n }\n if (navigationCollapsible) {\n return navigationCollapsedWidth;\n }\n return 0;\n }\n\n const activeNavigationWidth = getActiveNavigationWidth();\n const scrollWidth = activeNavigationWidth + CONTENT_PADDING + totalActiveDrawersMinSize;\n const hasHorizontalScroll = scrollWidth > placement.inlineSize;\n if (hasHorizontalScroll) {\n if (!navigationHide && navigationOpen) {\n onNavigationToggle({ isOpen: false, autoFocus: false });\n return;\n }\n\n closeFirstDrawer();\n }\n }, [\n totalActiveDrawersMinSize,\n closeFirstDrawer,\n isMobile,\n navigationCollapsible,\n navigationCollapsedWidth,\n navigationHide,\n navigationOpen,\n navigationWidth,\n onNavigationToggle,\n placement.inlineSize,\n ]);\n\n /**\n * Returns true if the AppLayout is nested\n * Does not apply to iframe\n */\n const getIsNestedInAppLayout = (element: HTMLElement | null): boolean => {\n let currentElement: Element | null = element?.parentElement ?? null;\n\n // this traverse is needed only for JSDOM\n // in real browsers the globalVar will be propagated to all descendants and this loops exits after initial iteration\n while (currentElement) {\n if (getComputedStyle(currentElement).getPropertyValue(globalVars.stickyVerticalTopOffset)) {\n return true;\n }\n currentElement = currentElement.parentElement;\n }\n\n return false;\n };\n\n const splitPanelOffsets = computeSplitPanelOffsets({\n placement,\n hasSplitPanel: !!splitPanel,\n splitPanelOpen,\n splitPanelPosition,\n splitPanelFullHeight: splitPanelReportedSize,\n splitPanelHeaderHeight: splitPanelHeaderBlockSize,\n });\n\n return {\n rootRef,\n isIntersecting,\n appLayoutInternals,\n splitPanelInternals,\n widgetizedState: {\n ...appLayoutInternals,\n aiDrawerExpandedMode: expandedDrawerId === activeAiDrawer?.id,\n isNested,\n navigationAnimationDisabled,\n verticalOffsets,\n splitPanelOffsets,\n activeGlobalBottomDrawerId,\n onActiveGlobalBottomDrawerChange,\n activeGlobalBottomDrawerSize,\n bottomDrawerReportedSize,\n minGlobalBottomDrawerSize,\n getMaxGlobalBottomDrawerHeight,\n reportBottomDrawerSize: useStableCallback(size => setBottomDrawerReportedSize(size)),\n onActiveBottomDrawerResize,\n bottomDrawers,\n bottomDrawersFocusControl,\n featureNotificationsProps,\n navigationCollapsible,\n navigationCollapsedWidth,\n },\n };\n};\n"]}
1
+ {"version":3,"file":"use-app-layout.js","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/state/use-app-layout.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAEZ,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,eAAe,EACf,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,+CAA+C,CAAC;AAGvH,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0DAA0D,CAAC;AAEnG,OAAO,UAAU,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAGjF,OAAO,EAAE,eAAe,EAAkB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,UAAmB,EACnB,EACE,UAAU,EACV,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,KAAK,EACL,SAAS,EAAE,mBAAmB,EAC9B,aAAa,EACb,SAAS,EACT,UAAU,EACV,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EAAE,+BAA+B,EACtD,cAAc,EAAE,wBAAwB,EACxC,UAAU,EACV,cAAc,EAAE,wBAAwB,EACxC,kBAAkB,EAClB,kBAAkB,EAClB,6BAA6B,EAC7B,eAAe,EACf,SAAS,EACT,qBAAqB,EACrB,GAAG,IAAI,EACgB,EACzB,UAA4C,EAC5B,EAAE;;IAClB,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC7B,MAAM,qBAAqB,GAAG,uBAAuB,KAAK,UAAU,CAAC;IAErE,IAAI,qBAAqB,IAAI,wBAAwB,KAAK,SAAS,IAAI,wBAAwB,IAAI,eAAe,EAAE,CAAC;QACnH,QAAQ,CACN,WAAW,EACX,uEAAuE;YACrE,mHAAmH,CACtH,CAAC;IACJ,CAAC;IAED,MAAM,mBAAmB,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAkB,MAAM,CAAC,CAAC;IAC1E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,CAAC,2BAA2B,EAAE,8BAA8B,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrF,MAAM,CAAC,2BAA2B,EAAE,8BAA8B,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrF,MAAM,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACtF,MAAM,eAAe,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACrD,0FAA0F;IAC1F,gHAAgH;IAChH,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE;QACxC,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,GAAG,IAAW,CAAC;IACjF,MAAM,0BAA0B,GAAG,uBAAuB,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,CAAC;IACvF,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,GAAG,sBAAsB,EAAE,CAAC;IACjG,MAAM,sBAAsB,GAAG,MAAM,CAAoC,IAAI,CAAC,CAAC;IAC/E,MAAM,CAAC,sBAAsB,EAAE,iCAAiC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpF,MAAM,CAAC,SAAS,GAAG,KAAK,EAAE,YAAY,CAAC,GAAG,eAAe,CAAC,mBAAmB,EAAE,aAAa,EAAE,KAAK,EAAE;QACnG,aAAa,EAAE,WAAW;QAC1B,cAAc,EAAE,WAAW;QAC3B,aAAa,EAAE,eAAe;KAC/B,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,CAAC,IAAa,EAAE,EAAE;QACtC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAClC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,mBAAmB,CAAC,QAAQ,EAAE,CAAC;QAC/B,sBAAsB,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,KAAoB,EAAE,EAAE;QACnD,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAEnC,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,iBAAiB,KAAI,CAAC,KAAK,MAAK,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,CAAA,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;YAC9E,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE;gBACjD,UAAU,EAAE,CAAC,CAAC,KAAK;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,IAAa,EAAE,EAAE;QAC9D,yBAAyB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAAC,QAAgB,EAAE,EAAE;;QAChD,iGAAiG;QACjG,4EAA4E;QAC5E,8FAA8F;QAC9F,IAAI,CAAC,YAAY,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAA,CAAC,IAAI,0BAA0B,KAAK,QAAQ,EAAE,CAAC;YACjH,OAAO;QACT,CAAC;QACD,sEAAsE;QACtE,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAA,MAAA,SAAS,CAAC,WAAW,mCAAI,WAAW,CAAC,QAAQ,CAAC,mCAAI,eAAe,EAAE,eAAe,CAAC,CAAC;QACnH,wEAAwE;QACxE,qHAAqH;QACrH,+DAA+D;QAE/D,iEAAiE;QACjE,MAAM,0BAA0B,GAAG,uBAAuB,GAAG,yBAAyB,CAAC;QACvF,IAAI,0BAA0B,IAAI,aAAa,EAAE,CAAC;YAChD,OAAO;QACT,CAAC;QAED,2EAA2E;QAC3E,gBAAgB,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,yBAAyB,GAAG,GAAG,EAAE;QACrC,yBAAyB,CAAC,QAAQ,EAAE,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,kCAAkC,EAAE,GACvG,uBAAuB,EAAE,CAAC;IAE5B,MAAM,EACJ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,GAC5B,GAAG,UAAU,CACZ;QACE,GAAG,IAAI;QACP,2BAA2B,EAAE,CAAA,yBAAyB,aAAzB,yBAAyB,uBAAzB,yBAAyB,CAAE,MAAM,KAAI,CAAC,yBAAyB,aAAzB,yBAAyB,uBAAzB,yBAAyB,CAAE,MAAM,CAAC;QACrG,mBAAmB;QACnB,oBAAoB;QACpB,gBAAgB;QAChB,mBAAmB;KACpB,EACD,UAAU,EACV;QACE,UAAU;QACV,SAAS;QACT,SAAS;QACT,KAAK;QACL,UAAU;QACV,aAAa;KACd,CACF,CAAC;IACF,MAAM,EACJ,QAAQ,EACR,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,GACvB,GAAG,WAAW,CAAC;QACd,kBAAkB,EAAE,GAAG,EAAE,CAAC,eAAe;QACzC,eAAe,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,QAAQ,EAAE;QACtD,gBAAgB;QAChB,mBAAmB;KACpB,CAAC,CAAC;IACH,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,EAAE,CAAA,EAAE,IAAI,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,EAAE,CAAC,CAAC;IAElG,MAAM,EACJ,aAAa,EACb,kBAAkB,EAClB,0BAA0B,EAAE,gCAAgC,EAC5D,sBAAsB,EAAE,4BAA4B,EACpD,mBAAmB,EAAE,yBAAyB,EAC9C,0BAA0B,EAC1B,2BAA2B,GAC5B,GAAG,gBAAgB,CAAC;QACnB,mBAAmB,EAAE,yBAAyB;QAC9C,gBAAgB;QAChB,mBAAmB;QACnB,gBAAgB;KACjB,CAAC,CAAC;IACH,MAAM,0BAA0B,GAAG,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,EAAE,mCAAI,IAAI,CAAC;IAElE,MAAM,qBAAqB,GAAG,CAAC,EAAU,EAAE,EAAE;QAC3C,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,MAAK,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,yBAAyB,GAAG,CAAC,EAAU,EAAE,EAAE;QAC/C,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,EAAU,EAAE,EAAE;QACzC,OAAO,qBAAqB,CAAC,EAAE,CAAC,IAAI,yBAAyB,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC;IAEF,MAAM,2BAA2B,GAAG,CAAC,OAAsB,EAAE,EAAE;;QAC7D,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,cAAc;gBACjB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,mBAAmB,CAAC,kCAAkC,EAAE;wBAC9D,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;wBACtB,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;wBAC/D,QAAQ,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,mCAAI,EAAE;qBAC7B,CAAC,CAAC;gBACL,CAAC;gBACD,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxC,MAAM;YACR,KAAK,kBAAkB;gBACrB,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAC1B,MAAM;QACV,CAAC;IACH,CAAC,CAAC;IAEF,iBAAiB,CAAC,UAAU,IAAI,0BAA0B,EAAE,OAAO,CAAC,EAAE;;QACpE,IAAI,OAAO,CAAC,IAAI,KAAK,qCAAqC,EAAE,CAAC;YAC3D,sBAAsB,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YACjD,iCAAiC,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,uCAAuC,EAAE,CAAC;YAC7D,sBAAsB,CAAC,OAAO,GAAG,IAAI,CAAC;YACtC,iCAAiC,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC3E,2BAA2B,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,IACE,CAAC,8BAA8B,EAAE,6BAA6B,EAAE,2BAA2B,CAAC,CAAC,QAAQ,CACnG,OAAO,CAAC,IAAI,CACb,EACD,CAAC;YACD,kCAAkC,CAAC,OAAO,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,oGAAoG;QACpG,IAAI,CAAC,CAAC,SAAS,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,OAAO,CAAC,mBAAmB,CAAC,uCAAuC,EAAE;gBACnE,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC/D,QAAQ,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,mCAAI,EAAE;aAC7B,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QAE/B,IAAI,qBAAqB,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACvE,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QAED,IAAI,yBAAyB,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YAC7E,2BAA2B,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,mBAAmB,CAAC,kCAAkC,EAAE;YAC9D,EAAE;YACF,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/D,QAAQ,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,mCAAI,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,2BAA2B,GAAG,CAClC,QAAuB,EACvB,SAAyB,EAAE,qBAAqB,EAAE,IAAI,EAAE,EACxD,EAAE;;QACF,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QACD,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAA,MAAA,yBAAyB,aAAzB,yBAAyB,uBAAzB,yBAAyB,CAAE,MAAM,0CAAE,EAAE,KAAI,CAAA,MAAA,yBAAyB,aAAzB,yBAAyB,uBAAzB,yBAAyB,CAAE,MAAM,0CAAE,EAAE,MAAK,QAAQ,EAAE,CAAC;YAChG,gCAAgC,EAAE,CAAC;QACrC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,cAAc,GAAG,KAAK,EAAE,iBAAiB,CAAC,GAAG,eAAe,CACjE,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,EACL;QACE,aAAa,EAAE,WAAW;QAC1B,cAAc,EAAE,gBAAgB;QAChC,aAAa,EAAE,oBAAoB;KACpC,CACF,CAAC;IAEF,MAAM,yBAAyB,GAAG,GAAG,EAAE;QACrC,8BAA8B,CAAC,KAAK,CAAC,CAAC;QACtC,iBAAiB,CAAC,CAAC,cAAc,CAAC,CAAC;QACnC,sBAAsB,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,sBAAsB,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC;IAEF,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,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,CAAC;IAEF,MAAM,oCAAoC,GAAG,CAAC,MAA4C,EAAE,EAAE;QAC5F,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACjC,sBAAsB,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAChE,sBAAsB,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC,CAAC;IAEF,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,iBAAiB,CAAC,GAAG,eAAe,CAC7D,wBAAwB,EACxB,kBAAkB,EAClB,wBAAwB,CAAC,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,QAAQ,mCAAI,QAAQ,CAAC,EACrE,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,CACtG,CAAC;IAEF,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,CAAC,yBAAyB,EAAE,4BAA4B,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE9E,MAAM,yBAAyB,GAAG,CAAC,IAAY,EAAE,EAAE;QACjD,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,sBAAsB,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,QAAQ,CAA4B;QAC9F,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,KAAK;KACjB,CAAC,CAAC;IAEH,MAAM,CAAC,wBAAwB,EAAE,2BAA2B,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5E,MAAM,yBAAyB,GAAG,uBAAuB,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IACxF,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,EAAE,CAAA,EAAE,IAAI,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,EAAE,CAAC,CAAC;IAC7F,MAAM,yBAAyB,GAAG,oBAAoB,CACpD,CAAC,CAAC,0BAA0B,EAC5B,IAAI,EACJ,0BAA0B,CAC3B,CAAC;IACF,MAAM,sBAAsB,GAAG,oBAAoB,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;IAC3F,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC,CAAC;IAElG,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAA2C,EAAE,EAAE;QAC9G,8BAA8B,CAAC,KAAK,CAAC,CAAC;QACtC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7D,sBAAsB,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,mBAAmB,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QACrC,0BAA0B,EAAE,GAAG,EAAE,CAAC,QAAQ,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACpG,SAAS,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;QACpC,eAAe,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACpE,iBAAiB,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACtE,eAAe,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAClF,eAAe,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KACxE,CAAC,CAAC,CAAC;IAEJ,MAAM,2BAA2B,GAAG,CAAC,CAAC,mBAAmB,IAAI,CAAC,QAAQ,CAAC;IACvE,8EAA8E;IAC9E,MAAM,kBAAkB,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,yCAAK,CAAC;IACvE,uDAAuD;IACvD,MAAM,sBAAsB,GAAG,CAAC,CAAC,kBAAkB,IAAI,cAAc,CAAC;IACtE,MAAM,EACJ,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,GAChB,GAAG,uBAAuB,CAAC;QAC1B,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACrD,cAAc;QACd,eAAe;QACf,cAAc,EAAE,sBAAsB;QACtC,eAAe;QACf,qBAAqB;QACrB,wBAAwB;QACxB,SAAS;QACT,cAAc;QACd,kBAAkB,EAAE,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,QAAQ;QACnD,QAAQ;QACR,wBAAwB;QACxB,kBAAkB;KACnB,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,qBAAqB,CAAC;QAC5C,SAAS,EAAE,SAAS,CAAC,eAAe;QACpC,iBAAiB,EAAE,UAAU,IAAI,YAAY,KAAK,MAAM;QACxD,mBAAmB,EAAE,mBAAmB,aAAnB,mBAAmB,cAAnB,mBAAmB,GAAI,CAAC;QAC7C,aAAa,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,CAAC;QACjC,mBAAmB,EAAE,2BAA2B;KACjD,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,EAAE,uBAAuB,EAAE,cAAc,EAAE,GAAG,uBAAuB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzG,MAAM,OAAO,GAAG,YAAY,CAAC,eAAe,EAAE,uBAAuB,EAAE,cAAc,CAAC,CAAC;IAEvF,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,0BAA0B,CAAC;IAE1F,eAAe,CAAC,GAAG,EAAE;;QACnB,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,MAAA,sBAAsB,CAAC,OAAO,0CAAE,mBAAmB,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC;IAClF,CAAC,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAAC,CAAC;IAEjE,sBAAsB,CAAC,MAAA,eAAe,CAAC,MAAM,mCAAI,CAAC,CAAC,CAAC;IAEpD,MAAM,8BAA8B,GAAG,WAAW,CAAC,GAAG,EAAE;QACtD,MAAM,cAAc,GAAG,cAAc,IAAI,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;QACtG,MAAM,eAAe,GACnB,QAAQ,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,aAAa,GAAG,cAAc,CAAC;QAE/G,8BAA8B;QAC9B,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,2FAA2F;QAC3F,OAAO,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,GAAG,GAAG,CAAC;IAC9E,CAAC,EAAE,CAAC,cAAc,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IAErH,MAAM,kBAAkB,GAAuB;QAC7C,UAAU,EAAE,qBAAqB;QACjC,aAAa;QACb,QAAQ;QACR,WAAW;QACX,qBAAqB,EAAE,0BAA0B;QACjD,mBAAmB,EAAE,2BAA2B;QAChD,cAAc,EAAE,sBAAsB;QACtC,UAAU,EAAE,kBAAkB;QAC9B,sBAAsB;QACtB,YAAY;QACZ,gBAAgB;QAChB,aAAa;QACb,aAAa;QACb,qBAAqB;QACrB,qBAAqB;QACrB,OAAO,EAAE,OAAQ;QACjB,aAAa;QACb,mBAAmB;QACnB,sBAAsB;QACtB,wBAAwB;QACxB,2BAA2B,EAAE,CAAC,QAAgB,EAAE,MAAsB,EAAE,EAAE;YACxE,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;gBACjC,0BAA0B,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;YACD,2BAA2B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;QACD,mBAAmB;QACnB,yBAAyB;QACzB,kBAAkB;QAClB,sBAAsB;QACtB,cAAc;QACd,mBAAmB;QACnB,sBAAsB;QACtB,SAAS;QACT,YAAY;QACZ,eAAe;QACf,eAAe;QACf,gBAAgB,EAAE,gBAAgB,CAAC,OAAO;QAC1C,gBAAgB;QAChB,sBAAsB;QACtB,kBAAkB,EAAE,yBAAyB;QAC7C,kBAAkB,EAAE,MAAM,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7E,oBAAoB,EAAE,2BAA2B;QACjD,oBAAoB;QACpB,2BAA2B;QAC3B,uBAAuB;QACvB,gBAAgB;QAChB,mBAAmB;QACnB,QAAQ;QACR,sBAAsB;QACtB,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,eAAe;QACf,eAAe;QACf,oBAAoB;QACpB,sBAAsB;KACvB,CAAC;IAEF,MAAM,mBAAmB,GAA4B;QACnD,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,WAAW,CAAC,GAAG,EAAE;YAC7B,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;YACrF,MAAM,eAAe,GACnB,QAAQ,CAAC,eAAe,CAAC,YAAY;gBACrC,SAAS,CAAC,eAAe;gBACzB,SAAS,CAAC,aAAa;gBACvB,kBAAkB,CAAC;YACrB,2FAA2F;YAC3F,OAAO,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,GAAG,GAAG,CAAC;QAC9E,CAAC,EAAE,CAAC,0BAA0B,EAAE,wBAAwB,EAAE,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;QAC9G,QAAQ,EAAE,iBAAiB;QAC3B,gBAAgB,EAAE,wBAAwB;QAC1C,MAAM,EAAE,cAAc;QACtB,UAAU,EAAE,CAAC;QACb,mBAAmB,EAAE,oCAAoC;QACzD,QAAQ,EAAE,yBAAyB;QACnC,QAAQ,EAAE,yBAAyB;QACnC,QAAQ,EAAE,kBAAkB;QAC5B,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;QACtE,kBAAkB,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;QACjF,YAAY,EAAE,yBAAyB;QACvC,WAAW,EAAE,CAAC;QACd,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,CAAC;QACZ,mBAAmB,EAAE,yBAAyB;QAC9C,IAAI,EAAE,sBAAsB,CAAC,IAAI;KAClC,CAAC;IAEF,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,EAAE;QAC9C,IAAI,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClF,IAAI,aAAa,MAAK,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,EAAE,CAAA,EAAE,CAAC;YAC7C,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,YAAY,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,EAAE,MAAK,aAAa,EAAE,CAAC;YACvD,oBAAoB,CAAC,IAAI,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,sBAAsB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1D,2BAA2B,CAAC,aAAa,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,wEAAwE;QACxE,IAAI,QAAQ,EAAE,CAAC;YACb,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,uDAAuD;IACzD,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,4BAA4B,GAAG,GAAG,EAAE;;QACxC,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC;QAC/D,IAAI,MAAM,GAAG,sBAAsB;aAChC,GAAG,CAAC,cAAc,CAAC,EAAE;;YACpB,OAAA,IAAI,CAAC,GAAG,CACN,MAAA,MAAA,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,cAAc,CAAC,0CAAE,WAAW,mCAAI,eAAe,EAC5F,eAAe,CAChB,CAAA;SAAA,CACF;aACA,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,WAAW,mCAAI,eAAe,EAAE,eAAe,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,WAAW,mCAAI,eAAe,EAAE,eAAe,CAAC,CAAC;QACtF,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,yBAAyB,GAAG,4BAA4B,EAAE,CAAC;IAEjE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,SAAS,wBAAwB;YAC/B,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,eAAe,CAAC;YACzB,CAAC;YACD,IAAI,qBAAqB,EAAE,CAAC;gBAC1B,OAAO,wBAAwB,CAAC;YAClC,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,qBAAqB,GAAG,wBAAwB,EAAE,CAAC;QACzD,MAAM,WAAW,GAAG,qBAAqB,GAAG,eAAe,GAAG,yBAAyB,CAAC;QACxF,MAAM,mBAAmB,GAAG,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC;QAC/D,IAAI,mBAAmB,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,IAAI,cAAc,EAAE,CAAC;gBACtC,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;YAED,gBAAgB,EAAE,CAAC;QACrB,CAAC;IACH,CAAC,EAAE;QACD,yBAAyB;QACzB,gBAAgB;QAChB,QAAQ;QACR,qBAAqB;QACrB,wBAAwB;QACxB,cAAc;QACd,cAAc;QACd,eAAe;QACf,kBAAkB;QAClB,SAAS,CAAC,UAAU;KACrB,CAAC,CAAC;IAEH;;;OAGG;IACH,MAAM,sBAAsB,GAAG,CAAC,OAA2B,EAAW,EAAE;;QACtE,IAAI,cAAc,GAAmB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,mCAAI,IAAI,CAAC;QAEpE,yCAAyC;QACzC,oHAAoH;QACpH,OAAO,cAAc,EAAE,CAAC;YACtB,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC1F,OAAO,IAAI,CAAC;YACd,CAAC;YACD,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC;QAChD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;QACjD,SAAS;QACT,aAAa,EAAE,CAAC,CAAC,UAAU;QAC3B,cAAc;QACd,kBAAkB;QAClB,oBAAoB,EAAE,sBAAsB;QAC5C,sBAAsB,EAAE,yBAAyB;KAClD,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;QACP,cAAc;QACd,kBAAkB;QAClB,mBAAmB;QACnB,eAAe,EAAE;YACf,GAAG,kBAAkB;YACrB,0BAA0B,EAAE,sBAAsB;YAClD,yBAAyB;YACzB,oBAAoB,EAAE,gBAAgB,MAAK,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,EAAE,CAAA;YAC7D,QAAQ;YACR,2BAA2B;YAC3B,eAAe;YACf,iBAAiB;YACjB,0BAA0B;YAC1B,gCAAgC;YAChC,4BAA4B;YAC5B,wBAAwB;YACxB,yBAAyB;YACzB,8BAA8B;YAC9B,sBAAsB,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;YACpF,0BAA0B;YAC1B,aAAa;YACb,yBAAyB;YACzB,yBAAyB;YACzB,qBAAqB;YACrB,wBAAwB;SACzB;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, {\n ForwardedRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { useMergeRefs, useStableCallback, useUniqueId, warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport { SplitPanelSideToggleProps } from '../../../internal/context/split-panel-context';\nimport { fireNonCancelableEvent } from '../../../internal/events';\nimport { useControllable } from '../../../internal/hooks/use-controllable';\nimport { useIntersectionObserver } from '../../../internal/hooks/use-intersection-observer';\nimport { useMobile } from '../../../internal/hooks/use-mobile';\nimport { metrics } from '../../../internal/metrics';\nimport { useGetGlobalBreadcrumbs } from '../../../internal/plugins/helpers/use-global-breadcrumbs';\nimport { BreadcrumbsConsumerPayload, WidgetMessage } from '../../../internal/plugins/widget/interfaces';\nimport globalVars from '../../../internal/styles/global-vars';\nimport { getSplitPanelDefaultSize } from '../../../split-panel/utils/size-utils';\nimport { AppLayoutProps } from '../../interfaces';\nimport { SplitPanelProviderProps } from '../../split-panel';\nimport { MIN_DRAWER_SIZE, OnChangeParams, useDrawers } from '../../utils/use-drawers';\nimport { useAsyncFocusControl, useMultipleFocusControl } from '../../utils/use-focus-control';\nimport { useGlobalScrollPadding } from '../../utils/use-global-scroll-padding';\nimport { useSplitPanelFocusControl } from '../../utils/use-split-panel-focus-control';\nimport {\n computeHorizontalLayout,\n computeSplitPanelOffsets,\n computeVerticalLayout,\n CONTENT_PADDING,\n} from '../compute-layout';\nimport { AppLayoutState } from '../interfaces';\nimport { AppLayoutInternalProps, AppLayoutInternals } from '../interfaces';\nimport { useAiDrawer } from './use-ai-drawer';\nimport { useBottomDrawers } from './use-bottom-drawers';\nimport { useFeatureNotifications } from './use-feature-notifications';\nimport { useOwnBreadcrumbsProps } from './use-own-breadcrumbs-props';\nimport { useWidgetMessages } from './use-widget-messages';\n\nexport const useAppLayout = (\n hasToolbar: boolean,\n {\n ariaLabels,\n navigationOpen,\n navigationWidth,\n navigationCloseBehavior,\n navigationCollapsedWidth,\n navigation,\n navigationHide,\n onNavigationChange,\n tools,\n toolsOpen: controlledToolsOpen,\n onToolsChange,\n toolsHide,\n toolsWidth,\n headerVariant,\n breadcrumbs,\n stickyNotifications,\n splitPanelPreferences: controlledSplitPanelPreferences,\n splitPanelOpen: controlledSplitPanelOpen,\n splitPanel,\n splitPanelSize: controlledSplitPanelSize,\n onSplitPanelToggle,\n onSplitPanelResize,\n onSplitPanelPreferencesChange,\n minContentWidth,\n placement,\n navigationTriggerHide,\n ...rest\n }: AppLayoutInternalProps,\n forwardRef: ForwardedRef<AppLayoutProps.Ref>\n): AppLayoutState => {\n const isMobile = useMobile();\n const navigationCollapsible = navigationCloseBehavior === 'collapse';\n\n if (navigationCollapsible && navigationCollapsedWidth !== undefined && navigationCollapsedWidth >= navigationWidth) {\n warnOnce(\n 'AppLayout',\n '`navigationCollapsedWidth` should be smaller than `navigationWidth`. ' +\n 'When collapsed width equals or exceeds the expanded width, the ARIA expanded/collapsed semantics become inverted.'\n );\n }\n\n const splitPanelControlId = useUniqueId('split-panel');\n const [toolbarState, setToolbarState] = useState<'show' | 'hide'>('show');\n const [toolbarHeight, setToolbarHeight] = useState(0);\n const [notificationsHeight, setNotificationsHeight] = useState(0);\n const [navigationAnimationDisabled, setNavigationAnimationDisabled] = useState(true);\n const [splitPanelAnimationDisabled, setSplitPanelAnimationDisabled] = useState(true);\n const [drawerAnimationDisabled, setDrawerAnimationDisabled] = useState(true);\n const [isNested, setIsNested] = useState(false);\n const [expandedDrawerId, setInternalExpandedDrawerId] = useState<string | null>(null);\n const rootRefInternal = useRef<HTMLDivElement>(null);\n // This workaround ensures the ref is defined before checking if the app layout is nested.\n // On initial render, the ref might be undefined because this component loads asynchronously via the widget API.\n const onMountRootRef = useCallback(node => {\n setIsNested(getIsNestedInAppLayout(node));\n }, []);\n const { __forceEnableRuntimeMessages: forceEnableRuntimeMessages } = rest as any;\n const discoveredBreadcrumbsProps = useGetGlobalBreadcrumbs(hasToolbar && !breadcrumbs);\n const { breadcrumbs: ownBreadcrumbsProps, reportOwnBreadcrumbsProps } = useOwnBreadcrumbsProps();\n const breadcrumbsConsumerRef = useRef<BreadcrumbsConsumerPayload | null>(null);\n const [hasBreadcrumbsConsumer, setHasBreadcrumbsExternalConsumer] = useState(false);\n\n const [toolsOpen = false, setToolsOpen] = useControllable(controlledToolsOpen, onToolsChange, false, {\n componentName: 'AppLayout',\n controlledProp: 'toolsOpen',\n changeHandler: 'onToolsChange',\n });\n const onToolsToggle = (open: boolean) => {\n setDrawerAnimationDisabled(false);\n setToolsOpen(open);\n drawersFocusControl.setFocus();\n fireNonCancelableEvent(onToolsChange, { open });\n };\n\n const setExpandedDrawerId = (value: string | null) => {\n setInternalExpandedDrawerId(value);\n\n if (aiDrawer?.onToggleFocusMode && (value === aiDrawer?.id || value === null)) {\n fireNonCancelableEvent(aiDrawer.onToggleFocusMode, {\n isExpanded: !!value,\n });\n }\n };\n\n const onGlobalDrawerFocus = (drawerId: string, open: boolean) => {\n globalDrawersFocusControl.setFocus({ force: true, drawerId, open });\n };\n\n const onAddNewActiveDrawer = (drawerId: string) => {\n // If either a local drawer or a bottom drawer is already open, and we attempt to open a new one,\n // it will replace the existing one instead of opening an additional drawer,\n // since only one local drawer is supported. Therefore, layout calculations are not necessary.\n if ((activeDrawer && drawers?.find(drawer => drawer.id === drawerId)) || activeGlobalBottomDrawerId === drawerId) {\n return;\n }\n // get the size of drawerId. it could be either local or global drawer\n const combinedDrawers = [...(drawers || []), ...globalDrawers];\n const newDrawer = combinedDrawers.find(drawer => drawer.id === drawerId);\n if (!newDrawer) {\n return;\n }\n const newDrawerSize = Math.min(newDrawer.defaultSize ?? drawerSizes[drawerId] ?? MIN_DRAWER_SIZE, MIN_DRAWER_SIZE);\n // check if the active drawers could be resized to fit the new drawers\n // to do this, we need to take all active drawers, sum up their min sizes, truncate it from resizableSpaceAvailable\n // and compare a given number with the new drawer id min size\n\n // the total size of all global drawers resized to their min size\n const availableSpaceForNewDrawer = resizableSpaceAvailable - totalActiveDrawersMinSize;\n if (availableSpaceForNewDrawer >= newDrawerSize) {\n return;\n }\n\n // now we made sure we cannot accommodate the new drawer with existing ones\n closeFirstDrawer();\n };\n\n const onGlobalBottomDrawerFocus = () => {\n bottomDrawersFocusControl.setFocus();\n };\n\n const { featureNotificationsProps, onOpenFeatureNotificationsDrawer, featureNotificationsMessageHandler } =\n useFeatureNotifications();\n\n const {\n drawers,\n activeDrawer,\n minDrawerSize,\n minGlobalDrawersSizes,\n activeDrawerSize,\n ariaLabelsWithDrawers,\n globalDrawers,\n activeGlobalDrawers,\n activeGlobalDrawersIds,\n activeGlobalDrawersSizes,\n drawerSizes,\n drawersOpenQueue,\n onActiveDrawerChange,\n onActiveDrawerResize,\n onActiveGlobalDrawersChange,\n } = useDrawers(\n {\n ...rest,\n externalLocalRuntimeDrawers: featureNotificationsProps?.drawer && [featureNotificationsProps?.drawer],\n onGlobalDrawerFocus,\n onAddNewActiveDrawer,\n expandedDrawerId,\n setExpandedDrawerId,\n },\n ariaLabels,\n {\n ariaLabels,\n toolsHide,\n toolsOpen,\n tools,\n toolsWidth,\n onToolsToggle,\n }\n );\n const {\n aiDrawer,\n aiDrawerMessageHandler,\n onActiveAiDrawerChange,\n activeAiDrawer,\n activeAiDrawerId,\n activeAiDrawerSize,\n minAiDrawerSize,\n onActiveAiDrawerResize,\n } = useAiDrawer({\n getMaxAiDrawerSize: () => maxAiDrawerSize,\n onAiDrawerFocus: () => aiDrawerFocusControl.setFocus(),\n expandedDrawerId,\n setExpandedDrawerId,\n });\n const aiDrawerFocusControl = useAsyncFocusControl(!!activeAiDrawer?.id, true, activeAiDrawer?.id);\n\n const {\n bottomDrawers,\n activeBottomDrawer,\n onActiveBottomDrawerChange: onActiveGlobalBottomDrawerChange,\n activeBottomDrawerSize: activeGlobalBottomDrawerSize,\n minBottomDrawerSize: minGlobalBottomDrawerSize,\n onActiveBottomDrawerResize,\n bottomDrawersMessageHandler,\n } = useBottomDrawers({\n onBottomDrawerFocus: onGlobalBottomDrawerFocus,\n expandedDrawerId,\n setExpandedDrawerId,\n drawersOpenQueue,\n });\n const activeGlobalBottomDrawerId = activeBottomDrawer?.id ?? null;\n\n const checkAIDrawerIdExists = (id: string) => {\n return aiDrawer?.id === id;\n };\n\n const checkBottomDrawerIdExists = (id: string) => {\n return !!bottomDrawers.find(drawer => drawer.id === id);\n };\n\n const checkDrawerIdExists = (id: string) => {\n return checkAIDrawerIdExists(id) || checkBottomDrawerIdExists(id);\n };\n\n const drawerGenericMessageHandler = (message: WidgetMessage) => {\n switch (message.type) {\n case 'expandDrawer':\n if (!checkDrawerIdExists(message.payload.id)) {\n metrics.sendOpsMetricObject('awsui-widget-drawer-incorrect-id', {\n id: message.payload.id,\n type: message.type,\n bottomDrawers: bottomDrawers.map(drawer => drawer.id).join(','),\n aiDrawer: aiDrawer?.id ?? '',\n });\n }\n setExpandedDrawerId(message.payload.id);\n break;\n case 'exitExpandedMode':\n setExpandedDrawerId(null);\n break;\n }\n };\n\n useWidgetMessages(hasToolbar || forceEnableRuntimeMessages, message => {\n if (message.type === 'registerBreadcrumbsExternalConsumer') {\n breadcrumbsConsumerRef.current = message.payload;\n setHasBreadcrumbsExternalConsumer(true);\n return;\n }\n\n if (message.type === 'unregisterBreadcrumbsExternalConsumer') {\n breadcrumbsConsumerRef.current = null;\n setHasBreadcrumbsExternalConsumer(false);\n return;\n }\n\n if (message.type === 'expandDrawer' || message.type === 'exitExpandedMode') {\n drawerGenericMessageHandler(message);\n return;\n }\n\n if (\n ['registerFeatureNotifications', 'showFeaturePromptIfPossible', 'clearFeatureNotifications'].includes(\n message.type\n )\n ) {\n featureNotificationsMessageHandler(message);\n return;\n }\n\n // eslint-disable-next-line no-restricted-syntax -- postMessage validation: runtime data shape check\n if (!('payload' in message && 'id' in message.payload)) {\n metrics.sendOpsMetricObject('awsui-widget-drawer-incorrect-payload', {\n type: message.type,\n bottomDrawers: bottomDrawers.map(drawer => drawer.id).join(','),\n aiDrawer: aiDrawer?.id ?? '',\n });\n return;\n }\n\n const { id } = message.payload;\n\n if (checkAIDrawerIdExists(id) || message.type === 'registerLeftDrawer') {\n aiDrawerMessageHandler(message);\n return;\n }\n\n if (checkBottomDrawerIdExists(id) || message.type === 'registerBottomDrawer') {\n bottomDrawersMessageHandler(message);\n return;\n }\n\n metrics.sendOpsMetricObject('awsui-widget-drawer-incorrect-id', {\n id,\n type: message.type,\n bottomDrawers: bottomDrawers.map(drawer => drawer.id).join(','),\n aiDrawer: aiDrawer?.id ?? '',\n });\n });\n\n const onActiveDrawerChangeHandler = (\n drawerId: string | null,\n params: OnChangeParams = { initiatedByUserAction: true }\n ) => {\n if (params.initiatedByUserAction) {\n setDrawerAnimationDisabled(false);\n }\n onActiveDrawerChange(drawerId, params);\n drawersFocusControl.setFocus();\n if (featureNotificationsProps?.drawer?.id && featureNotificationsProps?.drawer?.id === drawerId) {\n onOpenFeatureNotificationsDrawer();\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 onSplitPanelToggleHandler = () => {\n setSplitPanelAnimationDisabled(false);\n setSplitPanelOpen(!splitPanelOpen);\n splitPanelFocusControl.setLastInteraction({ type: splitPanelOpen ? 'close' : 'open' });\n fireNonCancelableEvent(onSplitPanelToggle, { open: !splitPanelOpen });\n };\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\n const onSplitPanelPreferencesChangeHandler = (detail: AppLayoutProps.SplitPanelPreferences) => {\n setSplitPanelPreferences(detail);\n splitPanelFocusControl.setLastInteraction({ type: 'position' });\n fireNonCancelableEvent(onSplitPanelPreferencesChange, detail);\n };\n\n const [splitPanelSize = 0, setSplitPanelSize] = useControllable(\n controlledSplitPanelSize,\n onSplitPanelResize,\n getSplitPanelDefaultSize(splitPanelPreferences?.position ?? 'bottom'),\n { componentName: 'AppLayout', controlledProp: 'splitPanelSize', changeHandler: 'onSplitPanelResize' }\n );\n\n const [splitPanelReportedSize, setSplitPanelReportedSize] = useState(0);\n const [splitPanelHeaderBlockSize, setSplitPanelHeaderBlockSize] = useState(0);\n\n const onSplitPanelResizeHandler = (size: number) => {\n setSplitPanelSize(size);\n fireNonCancelableEvent(onSplitPanelResize, { size });\n };\n\n const [splitPanelToggleConfig, setSplitPanelToggleConfig] = useState<SplitPanelSideToggleProps>({\n ariaLabel: undefined,\n displayed: false,\n });\n\n const [bottomDrawerReportedSize, setBottomDrawerReportedSize] = useState(0);\n\n const globalDrawersFocusControl = useMultipleFocusControl(true, activeGlobalDrawersIds);\n const drawersFocusControl = useAsyncFocusControl(!!activeDrawer?.id, true, activeDrawer?.id);\n const bottomDrawersFocusControl = useAsyncFocusControl(\n !!activeGlobalBottomDrawerId,\n true,\n activeGlobalBottomDrawerId\n );\n const navigationFocusControl = useAsyncFocusControl(navigationOpen, navigationTriggerHide);\n const splitPanelFocusControl = useSplitPanelFocusControl([splitPanelPreferences, splitPanelOpen]);\n\n const onNavigationToggle = useStableCallback(({ isOpen, autoFocus }: { isOpen: boolean; autoFocus: boolean }) => {\n setNavigationAnimationDisabled(false);\n navigationFocusControl.setFocus({ force: false, autoFocus });\n fireNonCancelableEvent(onNavigationChange, { open: isOpen });\n });\n\n useImperativeHandle(forwardRef, () => ({\n closeNavigationIfNecessary: () => isMobile && onNavigationToggle({ isOpen: false, autoFocus: true }),\n openTools: () => onToolsToggle(true),\n focusToolsClose: () => drawersFocusControl.setFocus({ force: true }),\n focusActiveDrawer: () => drawersFocusControl.setFocus({ force: true }),\n focusSplitPanel: () => splitPanelFocusControl.setLastInteraction({ type: 'open' }),\n focusNavigation: () => navigationFocusControl.setFocus({ force: true }),\n }));\n\n const resolvedStickyNotifications = !!stickyNotifications && !isMobile;\n //navigation must be null if hidden so toolbar knows to hide the toggle button\n const resolvedNavigation = navigationHide ? null : navigation || <></>;\n //navigation must not be open if navigationHide is true\n const resolvedNavigationOpen = !!resolvedNavigation && navigationOpen;\n const {\n maxDrawerSize,\n maxSplitPanelSize,\n splitPanelForcedPosition,\n splitPanelPosition,\n maxGlobalDrawersSizes,\n resizableSpaceAvailable,\n maxAiDrawerSize,\n } = computeHorizontalLayout({\n activeDrawerSize: activeDrawer ? activeDrawerSize : 0,\n splitPanelSize,\n minContentWidth,\n navigationOpen: resolvedNavigationOpen,\n navigationWidth,\n navigationCollapsible,\n navigationCollapsedWidth,\n placement,\n splitPanelOpen,\n splitPanelPosition: splitPanelPreferences?.position,\n isMobile,\n activeGlobalDrawersSizes,\n activeAiDrawerSize,\n });\n\n const verticalOffsets = computeVerticalLayout({\n topOffset: placement.insetBlockStart,\n hasVisibleToolbar: hasToolbar && toolbarState !== 'hide',\n notificationsHeight: notificationsHeight ?? 0,\n toolbarHeight: toolbarHeight ?? 0,\n stickyNotifications: resolvedStickyNotifications,\n });\n\n const { ref: intersectionObserverRef, isIntersecting } = useIntersectionObserver({ initialState: true });\n\n const rootRef = useMergeRefs(rootRefInternal, intersectionObserverRef, onMountRootRef);\n\n const currentBreadcrumbs = breadcrumbs ? ownBreadcrumbsProps : discoveredBreadcrumbsProps;\n\n useLayoutEffect(() => {\n if (!isIntersecting) {\n return;\n }\n breadcrumbsConsumerRef.current?.onBreadcrumbsChange(currentBreadcrumbs || null);\n }, [hasBreadcrumbsConsumer, currentBreadcrumbs, isIntersecting]);\n\n useGlobalScrollPadding(verticalOffsets.header ?? 0);\n\n const getMaxGlobalBottomDrawerHeight = useCallback(() => {\n const splitPanelSize = splitPanelOpen && splitPanelPosition === 'bottom' ? splitPanelReportedSize : 0;\n const availableHeight =\n document.documentElement.clientHeight - placement.insetBlockStart - placement.insetBlockEnd - splitPanelSize;\n\n // skip reading sizes in JSDOM\n if (availableHeight === 0) {\n return Infinity;\n }\n\n // If the page is likely zoomed in at 200%, allow the split panel to fill the content area.\n return availableHeight < 400 ? availableHeight - 40 : availableHeight - 250;\n }, [splitPanelOpen, splitPanelPosition, splitPanelReportedSize, placement.insetBlockStart, placement.insetBlockEnd]);\n\n const appLayoutInternals: AppLayoutInternals = {\n ariaLabels: ariaLabelsWithDrawers,\n headerVariant,\n isMobile,\n breadcrumbs,\n discoveredBreadcrumbs: discoveredBreadcrumbsProps,\n stickyNotifications: resolvedStickyNotifications,\n navigationOpen: resolvedNavigationOpen,\n navigation: resolvedNavigation,\n navigationFocusControl,\n activeDrawer,\n activeDrawerSize,\n minDrawerSize,\n maxDrawerSize,\n minGlobalDrawersSizes,\n maxGlobalDrawersSizes,\n drawers: drawers!,\n globalDrawers,\n activeGlobalDrawers,\n activeGlobalDrawersIds,\n activeGlobalDrawersSizes,\n onActiveGlobalDrawersChange: (drawerId: string, params: OnChangeParams) => {\n if (params.initiatedByUserAction) {\n setDrawerAnimationDisabled(false);\n }\n onActiveGlobalDrawersChange(drawerId, params);\n },\n drawersFocusControl,\n globalDrawersFocusControl,\n splitPanelPosition,\n splitPanelToggleConfig,\n splitPanelOpen,\n splitPanelControlId,\n splitPanelFocusControl,\n placement,\n toolbarState,\n setToolbarState,\n verticalOffsets,\n drawersOpenQueue: drawersOpenQueue.current,\n setToolbarHeight,\n setNotificationsHeight,\n onSplitPanelToggle: onSplitPanelToggleHandler,\n onNavigationToggle: isOpen => onNavigationToggle({ isOpen, autoFocus: true }),\n onActiveDrawerChange: onActiveDrawerChangeHandler,\n onActiveDrawerResize,\n splitPanelAnimationDisabled,\n drawerAnimationDisabled,\n expandedDrawerId,\n setExpandedDrawerId,\n aiDrawer,\n onActiveAiDrawerChange,\n activeAiDrawer,\n activeAiDrawerId,\n activeAiDrawerSize,\n minAiDrawerSize,\n maxAiDrawerSize,\n aiDrawerFocusControl,\n onActiveAiDrawerResize,\n };\n\n const splitPanelInternals: SplitPanelProviderProps = {\n bottomOffset: 0,\n getMaxHeight: useCallback(() => {\n const bottomDrawerHeight = activeGlobalBottomDrawerId ? bottomDrawerReportedSize : 0;\n const availableHeight =\n document.documentElement.clientHeight -\n placement.insetBlockStart -\n placement.insetBlockEnd -\n bottomDrawerHeight;\n // If the page is likely zoomed in at 200%, allow the split panel to fill the content area.\n return availableHeight < 400 ? availableHeight - 40 : availableHeight - 250;\n }, [activeGlobalBottomDrawerId, bottomDrawerReportedSize, placement.insetBlockEnd, placement.insetBlockStart]),\n maxWidth: maxSplitPanelSize,\n isForcedPosition: splitPanelForcedPosition,\n isOpen: splitPanelOpen,\n leftOffset: 0,\n onPreferencesChange: onSplitPanelPreferencesChangeHandler,\n onResize: onSplitPanelResizeHandler,\n onToggle: onSplitPanelToggleHandler,\n position: splitPanelPosition,\n reportSize: useStableCallback(size => setSplitPanelReportedSize(size)),\n reportHeaderHeight: useStableCallback(size => setSplitPanelHeaderBlockSize(size)),\n headerHeight: splitPanelHeaderBlockSize,\n rightOffset: 0,\n size: splitPanelSize,\n topOffset: 0,\n setSplitPanelToggle: setSplitPanelToggleConfig,\n refs: splitPanelFocusControl.refs,\n };\n\n const closeFirstDrawer = useStableCallback(() => {\n let drawerToClose = drawersOpenQueue.current[drawersOpenQueue.current.length - 1];\n if (drawerToClose === activeBottomDrawer?.id) {\n drawerToClose = drawersOpenQueue.current[drawersOpenQueue.current.length - 2];\n }\n if (activeDrawer && activeDrawer?.id === drawerToClose) {\n onActiveDrawerChange(null, { initiatedByUserAction: true });\n } else if (activeGlobalDrawersIds.includes(drawerToClose)) {\n onActiveGlobalDrawersChange(drawerToClose, { initiatedByUserAction: true });\n }\n });\n\n useEffect(() => {\n // Close navigation drawer on mobile so that the main content is visible\n if (isMobile) {\n onNavigationToggle({ isOpen: false, autoFocus: false });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isMobile]);\n\n const getTotalActiveDrawersMinSize = () => {\n const combinedDrawers = [...(drawers || []), ...globalDrawers];\n let result = activeGlobalDrawersIds\n .map(activeDrawerId =>\n Math.min(\n combinedDrawers.find(drawer => drawer.id === activeDrawerId)?.defaultSize ?? MIN_DRAWER_SIZE,\n MIN_DRAWER_SIZE\n )\n )\n .reduce((acc, curr) => acc + curr, 0);\n if (activeDrawer) {\n result += Math.min(activeDrawer?.defaultSize ?? MIN_DRAWER_SIZE, MIN_DRAWER_SIZE);\n }\n if (activeAiDrawer) {\n result += Math.min(activeAiDrawer?.defaultSize ?? MIN_DRAWER_SIZE, MIN_DRAWER_SIZE);\n }\n\n return result;\n };\n\n const totalActiveDrawersMinSize = getTotalActiveDrawersMinSize();\n\n useEffect(() => {\n if (isMobile) {\n return;\n }\n\n function getActiveNavigationWidth() {\n if (navigationHide) {\n return 0;\n }\n if (navigationOpen) {\n return navigationWidth;\n }\n if (navigationCollapsible) {\n return navigationCollapsedWidth;\n }\n return 0;\n }\n\n const activeNavigationWidth = getActiveNavigationWidth();\n const scrollWidth = activeNavigationWidth + CONTENT_PADDING + totalActiveDrawersMinSize;\n const hasHorizontalScroll = scrollWidth > placement.inlineSize;\n if (hasHorizontalScroll) {\n if (!navigationHide && navigationOpen) {\n onNavigationToggle({ isOpen: false, autoFocus: false });\n return;\n }\n\n closeFirstDrawer();\n }\n }, [\n totalActiveDrawersMinSize,\n closeFirstDrawer,\n isMobile,\n navigationCollapsible,\n navigationCollapsedWidth,\n navigationHide,\n navigationOpen,\n navigationWidth,\n onNavigationToggle,\n placement.inlineSize,\n ]);\n\n /**\n * Returns true if the AppLayout is nested\n * Does not apply to iframe\n */\n const getIsNestedInAppLayout = (element: HTMLElement | null): boolean => {\n let currentElement: Element | null = element?.parentElement ?? null;\n\n // this traverse is needed only for JSDOM\n // in real browsers the globalVar will be propagated to all descendants and this loops exits after initial iteration\n while (currentElement) {\n if (getComputedStyle(currentElement).getPropertyValue(globalVars.stickyVerticalTopOffset)) {\n return true;\n }\n currentElement = currentElement.parentElement;\n }\n\n return false;\n };\n\n const splitPanelOffsets = computeSplitPanelOffsets({\n placement,\n hasSplitPanel: !!splitPanel,\n splitPanelOpen,\n splitPanelPosition,\n splitPanelFullHeight: splitPanelReportedSize,\n splitPanelHeaderHeight: splitPanelHeaderBlockSize,\n });\n\n return {\n rootRef,\n isIntersecting,\n appLayoutInternals,\n splitPanelInternals,\n widgetizedState: {\n ...appLayoutInternals,\n breadcrumbsExternallyOwned: hasBreadcrumbsConsumer,\n reportOwnBreadcrumbsProps,\n aiDrawerExpandedMode: expandedDrawerId === activeAiDrawer?.id,\n isNested,\n navigationAnimationDisabled,\n verticalOffsets,\n splitPanelOffsets,\n activeGlobalBottomDrawerId,\n onActiveGlobalBottomDrawerChange,\n activeGlobalBottomDrawerSize,\n bottomDrawerReportedSize,\n minGlobalBottomDrawerSize,\n getMaxGlobalBottomDrawerHeight,\n reportBottomDrawerSize: useStableCallback(size => setBottomDrawerReportedSize(size)),\n onActiveBottomDrawerResize,\n bottomDrawers,\n bottomDrawersFocusControl,\n featureNotificationsProps,\n navigationCollapsible,\n navigationCollapsedWidth,\n },\n };\n};\n"]}
@@ -0,0 +1,6 @@
1
+ import { BreadcrumbGroupProps } from '../../../breadcrumb-group/interfaces';
2
+ import { BreadcrumbsGlobalRegistration } from '../../../internal/plugins/controllers/breadcrumbs';
3
+ export declare function useOwnBreadcrumbsProps(): {
4
+ breadcrumbs: BreadcrumbGroupProps<BreadcrumbGroupProps.Item> | null;
5
+ reportOwnBreadcrumbsProps: (props: BreadcrumbGroupProps) => BreadcrumbsGlobalRegistration<BreadcrumbGroupProps>;
6
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-own-breadcrumbs-props.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/state/use-own-breadcrumbs-props.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAElG,wBAAgB,sBAAsB;;uCAI1B,oBAAoB,KAAG,6BAA6B,CAAC,oBAAoB,CAAC;EAWrF"}