@elastic/eui 110.0.0 → 111.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/es/components/collapsible_nav/collapsible_nav.js +20 -101
  2. package/es/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
  3. package/es/components/flyout/_flyout_overlay.js +52 -0
  4. package/es/components/flyout/_flyout_resize_button.js +32 -0
  5. package/es/components/flyout/{flyout_resizable.styles.js → _flyout_resize_button.styles.js} +11 -11
  6. package/es/components/flyout/const.js +42 -0
  7. package/es/components/flyout/flyout.component.js +481 -0
  8. package/es/components/flyout/flyout.js +77 -379
  9. package/es/components/flyout/flyout.styles.js +105 -7
  10. package/es/components/flyout/flyout_menu.js +241 -0
  11. package/es/components/flyout/flyout_menu.styles.js +19 -0
  12. package/{optimize/es/components/flyout/flyout_context.js → es/components/flyout/flyout_menu_context.js} +1 -7
  13. package/es/components/flyout/flyout_parent_context.js +36 -0
  14. package/es/components/flyout/flyout_resizable.js +33 -144
  15. package/es/components/flyout/hooks.js +25 -0
  16. package/es/components/flyout/index.js +5 -2
  17. package/es/components/flyout/manager/actions.js +153 -0
  18. package/es/components/flyout/manager/activity_stage.js +95 -0
  19. package/es/components/flyout/manager/const.js +56 -0
  20. package/es/components/flyout/manager/context.js +33 -0
  21. package/es/components/flyout/manager/flyout_child.js +75 -0
  22. package/es/components/flyout/manager/flyout_main.js +65 -0
  23. package/es/components/flyout/manager/flyout_main.styles.js +25 -0
  24. package/es/components/flyout/manager/flyout_managed.js +227 -0
  25. package/es/components/flyout/manager/flyout_managed.styles.js +69 -0
  26. package/es/components/flyout/manager/hooks.js +55 -0
  27. package/es/components/flyout/manager/index.js +31 -0
  28. package/es/components/flyout/manager/layout_mode.js +167 -0
  29. package/es/components/flyout/manager/provider.js +57 -0
  30. package/es/components/flyout/manager/reducer.js +320 -0
  31. package/es/components/flyout/manager/selectors.js +116 -0
  32. package/es/components/flyout/manager/store.js +113 -0
  33. package/es/components/flyout/manager/validation.js +85 -0
  34. package/es/components/flyout/use_flyout_resizable.js +149 -0
  35. package/es/components/flyout/use_flyout_z_index.js +46 -0
  36. package/es/components/overlay_mask/overlay_mask.js +13 -3
  37. package/es/components/overlay_mask/overlay_mask.styles.js +11 -2
  38. package/es/components/provider/provider.js +2 -1
  39. package/eui.d.ts +1484 -921
  40. package/i18ntokens.json +1207 -1153
  41. package/lib/components/collapsible_nav/collapsible_nav.js +20 -101
  42. package/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
  43. package/lib/components/flyout/_flyout_overlay.js +59 -0
  44. package/lib/components/flyout/_flyout_resize_button.js +38 -0
  45. package/{test-env/components/flyout/flyout_resizable.styles.js → lib/components/flyout/_flyout_resize_button.styles.js} +12 -12
  46. package/lib/components/flyout/const.js +49 -0
  47. package/lib/components/flyout/flyout.component.js +488 -0
  48. package/lib/components/flyout/flyout.js +102 -379
  49. package/lib/components/flyout/flyout.styles.js +105 -7
  50. package/lib/components/flyout/flyout_menu.js +243 -0
  51. package/lib/components/flyout/flyout_menu.styles.js +25 -0
  52. package/{optimize/lib/components/flyout/flyout_context.js → lib/components/flyout/flyout_menu_context.js} +2 -7
  53. package/lib/components/flyout/flyout_parent_context.js +43 -0
  54. package/lib/components/flyout/flyout_resizable.js +36 -147
  55. package/lib/components/flyout/hooks.js +30 -0
  56. package/lib/components/flyout/index.js +21 -14
  57. package/lib/components/flyout/manager/actions.js +159 -0
  58. package/lib/components/flyout/manager/activity_stage.js +101 -0
  59. package/lib/components/flyout/manager/const.js +62 -0
  60. package/lib/components/flyout/manager/context.js +41 -0
  61. package/lib/components/flyout/manager/flyout_child.js +80 -0
  62. package/lib/components/flyout/manager/flyout_main.js +70 -0
  63. package/lib/components/flyout/manager/flyout_main.styles.js +31 -0
  64. package/lib/components/flyout/manager/flyout_managed.js +233 -0
  65. package/lib/components/flyout/manager/flyout_managed.styles.js +73 -0
  66. package/lib/components/flyout/manager/hooks.js +131 -0
  67. package/lib/components/flyout/manager/index.js +168 -0
  68. package/lib/components/flyout/manager/layout_mode.js +171 -0
  69. package/lib/components/flyout/manager/provider.js +63 -0
  70. package/lib/components/flyout/manager/reducer.js +325 -0
  71. package/lib/components/flyout/manager/selectors.js +122 -0
  72. package/lib/components/flyout/manager/store.js +120 -0
  73. package/lib/components/flyout/manager/validation.js +94 -0
  74. package/lib/components/flyout/use_flyout_resizable.js +153 -0
  75. package/lib/components/flyout/use_flyout_z_index.js +51 -0
  76. package/lib/components/overlay_mask/overlay_mask.js +12 -2
  77. package/lib/components/overlay_mask/overlay_mask.styles.js +11 -4
  78. package/lib/components/provider/provider.js +2 -1
  79. package/optimize/es/components/collapsible_nav/collapsible_nav.js +1 -0
  80. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
  81. package/optimize/es/components/flyout/_flyout_overlay.js +52 -0
  82. package/optimize/es/components/flyout/_flyout_resize_button.js +31 -0
  83. package/optimize/es/components/flyout/{flyout_resizable.styles.js → _flyout_resize_button.styles.js} +11 -11
  84. package/optimize/es/components/flyout/const.js +42 -0
  85. package/optimize/es/components/flyout/flyout.component.js +469 -0
  86. package/optimize/es/components/flyout/flyout.js +53 -349
  87. package/optimize/es/components/flyout/flyout.styles.js +102 -7
  88. package/optimize/es/components/flyout/flyout_menu.js +162 -0
  89. package/optimize/es/components/flyout/flyout_menu.styles.js +19 -0
  90. package/{es/components/flyout/flyout_context.js → optimize/es/components/flyout/flyout_menu_context.js} +1 -7
  91. package/optimize/es/components/flyout/flyout_parent_context.js +36 -0
  92. package/optimize/es/components/flyout/flyout_resizable.js +7 -138
  93. package/optimize/es/components/flyout/hooks.js +25 -0
  94. package/optimize/es/components/flyout/index.js +5 -2
  95. package/optimize/es/components/flyout/manager/actions.js +153 -0
  96. package/optimize/es/components/flyout/manager/activity_stage.js +95 -0
  97. package/optimize/es/components/flyout/manager/const.js +56 -0
  98. package/optimize/es/components/flyout/manager/context.js +33 -0
  99. package/optimize/es/components/flyout/manager/flyout_child.js +71 -0
  100. package/optimize/es/components/flyout/manager/flyout_main.js +61 -0
  101. package/optimize/es/components/flyout/manager/flyout_main.styles.js +25 -0
  102. package/optimize/es/components/flyout/manager/flyout_managed.js +223 -0
  103. package/optimize/es/components/flyout/manager/flyout_managed.styles.js +69 -0
  104. package/optimize/es/components/flyout/manager/hooks.js +55 -0
  105. package/optimize/es/components/flyout/manager/index.js +31 -0
  106. package/optimize/es/components/flyout/manager/layout_mode.js +162 -0
  107. package/optimize/es/components/flyout/manager/provider.js +53 -0
  108. package/optimize/es/components/flyout/manager/reducer.js +312 -0
  109. package/optimize/es/components/flyout/manager/selectors.js +116 -0
  110. package/optimize/es/components/flyout/manager/store.js +113 -0
  111. package/optimize/es/components/flyout/manager/types.js +1 -0
  112. package/optimize/es/components/flyout/manager/validation.js +85 -0
  113. package/optimize/es/components/flyout/types.js +1 -0
  114. package/optimize/es/components/flyout/use_flyout_resizable.js +144 -0
  115. package/optimize/es/components/flyout/use_flyout_z_index.js +46 -0
  116. package/optimize/es/components/overlay_mask/overlay_mask.js +13 -3
  117. package/optimize/es/components/overlay_mask/overlay_mask.styles.js +11 -2
  118. package/optimize/es/components/provider/provider.js +2 -1
  119. package/optimize/lib/components/collapsible_nav/collapsible_nav.js +1 -0
  120. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
  121. package/optimize/lib/components/flyout/_flyout_overlay.js +62 -0
  122. package/optimize/lib/components/flyout/_flyout_resize_button.js +37 -0
  123. package/{lib/components/flyout/flyout_resizable.styles.js → optimize/lib/components/flyout/_flyout_resize_button.styles.js} +12 -12
  124. package/optimize/lib/components/flyout/const.js +49 -0
  125. package/optimize/lib/components/flyout/flyout.component.js +477 -0
  126. package/optimize/lib/components/flyout/flyout.js +77 -349
  127. package/optimize/lib/components/flyout/flyout.styles.js +102 -7
  128. package/optimize/lib/components/flyout/flyout_menu.js +168 -0
  129. package/optimize/lib/components/flyout/flyout_menu.styles.js +25 -0
  130. package/{lib/components/flyout/flyout_context.js → optimize/lib/components/flyout/flyout_menu_context.js} +2 -7
  131. package/optimize/lib/components/flyout/flyout_parent_context.js +43 -0
  132. package/optimize/lib/components/flyout/flyout_resizable.js +9 -139
  133. package/optimize/lib/components/flyout/hooks.js +30 -0
  134. package/optimize/lib/components/flyout/index.js +21 -14
  135. package/optimize/lib/components/flyout/manager/actions.js +159 -0
  136. package/optimize/lib/components/flyout/manager/activity_stage.js +101 -0
  137. package/optimize/lib/components/flyout/manager/const.js +62 -0
  138. package/optimize/lib/components/flyout/manager/context.js +41 -0
  139. package/optimize/lib/components/flyout/manager/flyout_child.js +76 -0
  140. package/optimize/lib/components/flyout/manager/flyout_main.js +66 -0
  141. package/optimize/lib/components/flyout/manager/flyout_main.styles.js +31 -0
  142. package/optimize/lib/components/flyout/manager/flyout_managed.js +231 -0
  143. package/optimize/lib/components/flyout/manager/flyout_managed.styles.js +74 -0
  144. package/optimize/lib/components/flyout/manager/hooks.js +131 -0
  145. package/optimize/lib/components/flyout/manager/index.js +168 -0
  146. package/optimize/lib/components/flyout/manager/layout_mode.js +169 -0
  147. package/optimize/lib/components/flyout/manager/provider.js +61 -0
  148. package/optimize/lib/components/flyout/manager/reducer.js +318 -0
  149. package/optimize/lib/components/flyout/manager/selectors.js +122 -0
  150. package/optimize/lib/components/flyout/manager/store.js +120 -0
  151. package/optimize/lib/components/flyout/manager/validation.js +94 -0
  152. package/optimize/lib/components/flyout/types.js +5 -0
  153. package/optimize/lib/components/flyout/use_flyout_resizable.js +151 -0
  154. package/optimize/lib/components/flyout/use_flyout_z_index.js +51 -0
  155. package/optimize/lib/components/overlay_mask/overlay_mask.js +12 -2
  156. package/optimize/lib/components/overlay_mask/overlay_mask.styles.js +11 -4
  157. package/optimize/lib/components/provider/provider.js +2 -1
  158. package/package.json +5 -4
  159. package/test-env/components/collapsible_nav/collapsible_nav.js +20 -101
  160. package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
  161. package/test-env/components/flyout/_flyout_overlay.js +62 -0
  162. package/test-env/components/flyout/_flyout_resize_button.js +37 -0
  163. package/{optimize/lib/components/flyout/flyout_resizable.styles.js → test-env/components/flyout/_flyout_resize_button.styles.js} +12 -12
  164. package/test-env/components/flyout/const.js +49 -0
  165. package/test-env/components/flyout/flyout.component.js +477 -0
  166. package/test-env/components/flyout/flyout.styles.js +102 -7
  167. package/test-env/components/flyout/flyout_menu.js +241 -0
  168. package/test-env/components/flyout/flyout_menu.styles.js +25 -0
  169. package/test-env/components/flyout/{flyout_context.js → flyout_menu_context.js} +2 -7
  170. package/test-env/components/flyout/flyout_parent_context.js +43 -0
  171. package/test-env/components/flyout/flyout_resizable.js +35 -139
  172. package/test-env/components/flyout/hooks.js +30 -0
  173. package/test-env/components/flyout/index.js +21 -14
  174. package/test-env/components/flyout/manager/actions.js +159 -0
  175. package/test-env/components/flyout/manager/activity_stage.js +101 -0
  176. package/test-env/components/flyout/manager/const.js +62 -0
  177. package/test-env/components/flyout/manager/context.js +41 -0
  178. package/test-env/components/flyout/manager/flyout_child.js +76 -0
  179. package/test-env/components/flyout/manager/flyout_main.js +66 -0
  180. package/test-env/components/flyout/manager/flyout_main.styles.js +31 -0
  181. package/test-env/components/flyout/manager/flyout_managed.js +231 -0
  182. package/test-env/components/flyout/manager/flyout_managed.styles.js +74 -0
  183. package/test-env/components/flyout/manager/hooks.js +131 -0
  184. package/test-env/components/flyout/manager/index.js +168 -0
  185. package/test-env/components/flyout/manager/layout_mode.js +169 -0
  186. package/test-env/components/flyout/manager/provider.js +61 -0
  187. package/test-env/components/flyout/manager/reducer.js +318 -0
  188. package/test-env/components/flyout/manager/selectors.js +122 -0
  189. package/test-env/components/flyout/manager/store.js +120 -0
  190. package/test-env/components/flyout/manager/types.js +5 -0
  191. package/test-env/components/flyout/manager/validation.js +94 -0
  192. package/test-env/components/flyout/types.js +5 -0
  193. package/test-env/components/flyout/use_flyout_resizable.js +151 -0
  194. package/test-env/components/flyout/use_flyout_z_index.js +51 -0
  195. package/test-env/components/overlay_mask/overlay_mask.js +12 -2
  196. package/test-env/components/overlay_mask/overlay_mask.styles.js +11 -4
  197. package/test-env/components/provider/provider.js +2 -1
  198. package/es/components/flyout/flyout_child.js +0 -223
  199. package/es/components/flyout/flyout_child.styles.js +0 -32
  200. package/es/components/flyout/flyout_child_manager.js +0 -114
  201. package/es/components/flyout/sessions/flyout_provider.js +0 -95
  202. package/es/components/flyout/sessions/flyout_reducer.js +0 -195
  203. package/es/components/flyout/sessions/index.js +0 -10
  204. package/es/components/flyout/sessions/use_eui_flyout.js +0 -82
  205. package/lib/components/flyout/flyout_child.js +0 -231
  206. package/lib/components/flyout/flyout_child.styles.js +0 -38
  207. package/lib/components/flyout/flyout_child_manager.js +0 -122
  208. package/lib/components/flyout/sessions/flyout_provider.js +0 -102
  209. package/lib/components/flyout/sessions/flyout_reducer.js +0 -202
  210. package/lib/components/flyout/sessions/index.js +0 -25
  211. package/lib/components/flyout/sessions/use_eui_flyout.js +0 -88
  212. package/optimize/es/components/flyout/flyout_child.js +0 -178
  213. package/optimize/es/components/flyout/flyout_child.styles.js +0 -32
  214. package/optimize/es/components/flyout/flyout_child_manager.js +0 -100
  215. package/optimize/es/components/flyout/sessions/flyout_provider.js +0 -90
  216. package/optimize/es/components/flyout/sessions/flyout_reducer.js +0 -187
  217. package/optimize/es/components/flyout/sessions/index.js +0 -10
  218. package/optimize/es/components/flyout/sessions/use_eui_flyout.js +0 -82
  219. package/optimize/lib/components/flyout/flyout_child.js +0 -186
  220. package/optimize/lib/components/flyout/flyout_child.styles.js +0 -38
  221. package/optimize/lib/components/flyout/flyout_child_manager.js +0 -110
  222. package/optimize/lib/components/flyout/sessions/flyout_provider.js +0 -100
  223. package/optimize/lib/components/flyout/sessions/flyout_reducer.js +0 -195
  224. package/optimize/lib/components/flyout/sessions/index.js +0 -25
  225. package/optimize/lib/components/flyout/sessions/use_eui_flyout.js +0 -88
  226. package/test-env/components/flyout/flyout_child.js +0 -230
  227. package/test-env/components/flyout/flyout_child.styles.js +0 -38
  228. package/test-env/components/flyout/flyout_child_manager.js +0 -119
  229. package/test-env/components/flyout/sessions/flyout_provider.js +0 -100
  230. package/test-env/components/flyout/sessions/flyout_reducer.js +0 -195
  231. package/test-env/components/flyout/sessions/index.js +0 -25
  232. package/test-env/components/flyout/sessions/use_eui_flyout.js +0 -88
  233. /package/es/components/flyout/{sessions → manager}/types.js +0 -0
  234. /package/{optimize/es/components/flyout/sessions → es/components/flyout}/types.js +0 -0
  235. /package/lib/components/flyout/{sessions → manager}/types.js +0 -0
  236. /package/{optimize/lib/components/flyout/sessions → lib/components/flyout}/types.js +0 -0
  237. /package/{test-env/components/flyout/sessions → optimize/lib/components/flyout/manager}/types.js +0 -0
@@ -0,0 +1,162 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ /*
3
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
4
+ * or more contributor license agreements. Licensed under the Elastic License
5
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
6
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
7
+ * Side Public License, v 1.
8
+ */
9
+
10
+ import { useCallback, useEffect, useMemo, useState } from 'react';
11
+ import { useEuiTheme } from '../../../services';
12
+ import { setLayoutMode } from './actions';
13
+ import { useCurrentChildFlyout, useCurrentMainFlyout, useCurrentSession, useFlyoutWidth } from './selectors';
14
+ import { useFlyoutManager } from './hooks';
15
+ import { LAYOUT_MODE_SIDE_BY_SIDE, LAYOUT_MODE_STACKED } from './const';
16
+ /**
17
+ * Hook to handle responsive layout mode for managed flyouts.
18
+ * Decides whether to place flyouts side-by-side or stacked based on
19
+ * viewport width and flyout widths/sizes.
20
+ */
21
+ export var useApplyFlyoutLayoutMode = function useApplyFlyoutLayoutMode() {
22
+ var _context$state;
23
+ var _useEuiTheme = useEuiTheme(),
24
+ euiTheme = _useEuiTheme.euiTheme;
25
+ var context = useFlyoutManager();
26
+ var currentSession = useCurrentSession();
27
+ var parentFlyoutId = currentSession === null || currentSession === void 0 ? void 0 : currentSession.mainFlyoutId;
28
+ var childFlyoutId = currentSession === null || currentSession === void 0 ? void 0 : currentSession.childFlyoutId;
29
+ var parentFlyout = useCurrentMainFlyout();
30
+ var childFlyout = useCurrentChildFlyout();
31
+ var parentWidth = useFlyoutWidth(parentFlyoutId);
32
+ var childWidth = useFlyoutWidth(childFlyoutId);
33
+ var hasFlyouts = Boolean(parentFlyoutId);
34
+ var _useState = useState(typeof window !== 'undefined' ? window.innerWidth : Infinity),
35
+ _useState2 = _slicedToArray(_useState, 2),
36
+ windowWidth = _useState2[0],
37
+ setWindowWidth = _useState2[1];
38
+
39
+ // Extract specific context values
40
+ var dispatch = context === null || context === void 0 ? void 0 : context.dispatch;
41
+ var currentLayoutMode = context === null || context === void 0 || (_context$state = context.state) === null || _context$state === void 0 ? void 0 : _context$state.layoutMode;
42
+ var setMode = useCallback(function (layoutMode) {
43
+ if (dispatch) {
44
+ dispatch(setLayoutMode(layoutMode));
45
+ }
46
+ }, [dispatch]);
47
+ useEffect(function () {
48
+ if (typeof window === 'undefined') {
49
+ return;
50
+ }
51
+ var rafId = 0;
52
+ var handleResize = function handleResize() {
53
+ if (rafId) {
54
+ cancelAnimationFrame(rafId);
55
+ }
56
+ rafId = requestAnimationFrame(function () {
57
+ return setWindowWidth(window.innerWidth);
58
+ });
59
+ };
60
+ window.addEventListener('resize', handleResize);
61
+ return function () {
62
+ if (rafId) {
63
+ cancelAnimationFrame(rafId);
64
+ }
65
+ window.removeEventListener('resize', handleResize);
66
+ };
67
+ }, []);
68
+
69
+ // Calculate the desired layout mode
70
+ var desiredLayoutMode = useMemo(function () {
71
+ // Skip calculation if no flyouts open
72
+ if (!hasFlyouts) {
73
+ return null;
74
+ }
75
+
76
+ // Thresholds to prevent thrashing near the breakpoint.
77
+ var THRESHOLD_TO_SIDE_BY_SIDE = 85;
78
+ var THRESHOLD_TO_STACKED = 95;
79
+
80
+ // If the window is too small, set the mode to stacked.
81
+ //
82
+ // The value is based on the maximum width of a flyout in
83
+ // `composeFlyoutSizing` in `flyout.styles.ts` multiplied
84
+ // by 2 (open flyouts side-by-side).
85
+ if (windowWidth < Math.round(euiTheme.breakpoint.s * 1.4)) {
86
+ return LAYOUT_MODE_STACKED;
87
+ }
88
+ if (!childFlyoutId) {
89
+ return LAYOUT_MODE_SIDE_BY_SIDE;
90
+ }
91
+ var parentWidthValue = parentWidth;
92
+ var childWidthValue = childWidth;
93
+ if (!parentWidthValue && parentFlyout !== null && parentFlyout !== void 0 && parentFlyout.size) {
94
+ parentWidthValue = getWidthFromSize(parentFlyout.size);
95
+ }
96
+ if (!childWidthValue && childFlyout !== null && childFlyout !== void 0 && childFlyout.size) {
97
+ childWidthValue = getWidthFromSize(childFlyout.size);
98
+ }
99
+ if (!parentWidthValue || !childWidthValue) {
100
+ return LAYOUT_MODE_SIDE_BY_SIDE;
101
+ }
102
+ var combinedWidth = parentWidthValue + childWidthValue;
103
+ var combinedWidthPercentage = combinedWidth / windowWidth * 100;
104
+
105
+ // Handle fill size flyouts: keep layout as side-by-side when fill flyout is present
106
+ // This allows fill flyouts to dynamically calculate their width based on the other in the pair
107
+ if ((parentFlyout === null || parentFlyout === void 0 ? void 0 : parentFlyout.size) === 'fill' || (childFlyout === null || childFlyout === void 0 ? void 0 : childFlyout.size) === 'fill') {
108
+ // For fill flyouts, we want to maintain side-by-side layout to enable dynamic width calculation
109
+ // Only stack if the viewport is too small (below the small breakpoint)
110
+ if (windowWidth >= Math.round(euiTheme.breakpoint.s * 1.4)) {
111
+ return LAYOUT_MODE_SIDE_BY_SIDE;
112
+ }
113
+ }
114
+ if (currentLayoutMode === LAYOUT_MODE_STACKED) {
115
+ return combinedWidthPercentage <= THRESHOLD_TO_SIDE_BY_SIDE ? LAYOUT_MODE_SIDE_BY_SIDE : LAYOUT_MODE_STACKED;
116
+ } else {
117
+ return combinedWidthPercentage >= THRESHOLD_TO_STACKED ? LAYOUT_MODE_STACKED : LAYOUT_MODE_SIDE_BY_SIDE;
118
+ }
119
+ }, [hasFlyouts, windowWidth, euiTheme, childFlyoutId, parentWidth, childWidth, parentFlyout === null || parentFlyout === void 0 ? void 0 : parentFlyout.size, childFlyout === null || childFlyout === void 0 ? void 0 : childFlyout.size, currentLayoutMode]);
120
+
121
+ // Apply the desired layout mode
122
+ useEffect(function () {
123
+ if (desiredLayoutMode && currentLayoutMode !== desiredLayoutMode) {
124
+ setMode(desiredLayoutMode);
125
+ }
126
+ }, [desiredLayoutMode, currentLayoutMode, setMode]);
127
+ };
128
+
129
+ /** Convert a flyout `size` value to a pixel width using theme breakpoints. */
130
+ export var getWidthFromSize = function getWidthFromSize(size) {
131
+ if (typeof size === 'number') {
132
+ return size;
133
+ }
134
+ if (typeof size === 'string') {
135
+ var parsed = parseInt(size, 10);
136
+ if (!Number.isNaN(parsed)) {
137
+ return parsed;
138
+ }
139
+
140
+ // Size is a function of a percentage of `vw`, defined in `composeFlyoutSizing` in `flyout.styles.ts`
141
+ switch (size) {
142
+ case 's':
143
+ return Math.round(window.innerWidth * 0.25);
144
+ case 'm':
145
+ return Math.round(window.innerWidth * 0.5);
146
+ case 'l':
147
+ return Math.round(window.innerWidth * 0.75);
148
+ case 'fill':
149
+ return Math.round(window.innerWidth * 0.9);
150
+ default:
151
+ break;
152
+ }
153
+ }
154
+ return 0;
155
+ };
156
+
157
+ /** Current layout mode for managed flyouts (`side-by-side` or `stacked`). */
158
+ export var useFlyoutLayoutMode = function useFlyoutLayoutMode() {
159
+ var _context$state2;
160
+ var context = useFlyoutManager();
161
+ return (context === null || context === void 0 || (_context$state2 = context.state) === null || _context$state2 === void 0 ? void 0 : _context$state2.layoutMode) || LAYOUT_MODE_SIDE_BY_SIDE;
162
+ };
@@ -0,0 +1,53 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["getState", "subscribe"];
4
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
+ /*
7
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
8
+ * or more contributor license agreements. Licensed under the Elastic License
9
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
10
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
11
+ * Side Public License, v 1.
12
+ */
13
+
14
+ import React, { createContext, useContext, useMemo } from 'react';
15
+ import { useSyncExternalStore } from 'use-sync-external-store/shim';
16
+ import { useApplyFlyoutLayoutMode } from './layout_mode';
17
+ import { getFlyoutManagerStore } from './store';
18
+
19
+ /**
20
+ * React context that exposes the Flyout Manager API (state + actions).
21
+ */
22
+ import { jsx as ___EmotionJSX } from "@emotion/react";
23
+ export var EuiFlyoutManagerContext = /*#__PURE__*/createContext(null);
24
+
25
+ /**
26
+ * Provides the Flyout Manager API via context and runs layout-mode logic.
27
+ */
28
+ export var EuiFlyoutManager = function EuiFlyoutManager(_ref) {
29
+ var children = _ref.children;
30
+ var _getFlyoutManagerStor = getFlyoutManagerStore(),
31
+ getState = _getFlyoutManagerStor.getState,
32
+ subscribe = _getFlyoutManagerStor.subscribe,
33
+ rest = _objectWithoutProperties(_getFlyoutManagerStor, _excluded);
34
+ var state = useSyncExternalStore(subscribe, getState, getState);
35
+ var api = useMemo(function () {
36
+ return _objectSpread({
37
+ state: state
38
+ }, rest);
39
+ }, [state, rest]);
40
+ return ___EmotionJSX(EuiFlyoutManagerContext.Provider, {
41
+ value: api
42
+ }, ___EmotionJSX(EuiFlyoutManagerContainer, null, children));
43
+ };
44
+ var EuiFlyoutManagerContainer = function EuiFlyoutManagerContainer(_ref2) {
45
+ var children = _ref2.children;
46
+ useApplyFlyoutLayoutMode();
47
+ return ___EmotionJSX(React.Fragment, null, children);
48
+ };
49
+
50
+ /** Hook to access the Flyout Manager API from context. */
51
+ export var useFlyoutManager = function useFlyoutManager() {
52
+ return useContext(EuiFlyoutManagerContext);
53
+ };
@@ -0,0 +1,312 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ /*
6
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
7
+ * or more contributor license agreements. Licensed under the Elastic License
8
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
9
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
10
+ * Side Public License, v 1.
11
+ */
12
+
13
+ import { ACTION_ADD, ACTION_CLOSE, ACTION_SET_ACTIVE, ACTION_SET_LAYOUT_MODE, ACTION_SET_WIDTH, ACTION_SET_ACTIVITY_STAGE, ACTION_GO_BACK, ACTION_GO_TO_FLYOUT, ACTION_SET_PUSH_PADDING, ACTION_ADD_UNMANAGED_FLYOUT, ACTION_CLOSE_UNMANAGED_FLYOUT } from './actions';
14
+ import { LAYOUT_MODE_SIDE_BY_SIDE, LEVEL_MAIN, STAGE_OPENING } from './const';
15
+ /**
16
+ * Default flyout manager state used to initialize the reducer.
17
+ */
18
+ export var initialState = {
19
+ sessions: [],
20
+ flyouts: [],
21
+ layoutMode: LAYOUT_MODE_SIDE_BY_SIDE,
22
+ pushPadding: {
23
+ left: 0,
24
+ right: 0
25
+ },
26
+ currentZIndex: 0,
27
+ unmanagedFlyouts: []
28
+ };
29
+
30
+ /**
31
+ * Reducer handling all flyout manager actions and state transitions.
32
+ */
33
+ export function flyoutManagerReducer() {
34
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
35
+ var action = arguments.length > 1 ? arguments[1] : undefined;
36
+ switch (action.type) {
37
+ case ACTION_ADD_UNMANAGED_FLYOUT:
38
+ {
39
+ if (state.unmanagedFlyouts.includes(action.flyoutId)) {
40
+ return state;
41
+ }
42
+ return _objectSpread(_objectSpread({}, state), {}, {
43
+ // Increment by 2 for each new unmanaged flyout.
44
+ // Unmanaged flyouts render on z-index of `n`, and their overlay mask
45
+ // on `n - 1`.
46
+ currentZIndex: state.currentZIndex + 2,
47
+ unmanagedFlyouts: [].concat(_toConsumableArray(state.unmanagedFlyouts), [action.flyoutId])
48
+ });
49
+ }
50
+ case ACTION_CLOSE_UNMANAGED_FLYOUT:
51
+ {
52
+ var newUnmanagedFlyouts = state.unmanagedFlyouts.filter(function (flyoutId) {
53
+ return flyoutId !== action.flyoutId;
54
+ });
55
+ var newCurrentZIndex = state.currentZIndex;
56
+ if (state.sessions.length === 0 && newUnmanagedFlyouts.length === 0) {
57
+ newCurrentZIndex = 0;
58
+ }
59
+ return _objectSpread(_objectSpread({}, state), {}, {
60
+ unmanagedFlyouts: newUnmanagedFlyouts,
61
+ currentZIndex: newCurrentZIndex
62
+ });
63
+ }
64
+
65
+ // Register a flyout.
66
+ // - Ignore duplicates by `flyoutId`.
67
+ // - For a `main` flyout, start a new session { main, child: null }.
68
+ // - For a `child` flyout, attach it to the most recent session; if no
69
+ // session exists, do nothing (invalid child without a parent).
70
+ case ACTION_ADD:
71
+ {
72
+ var flyoutId = action.flyoutId,
73
+ title = action.title,
74
+ level = action.level,
75
+ size = action.size;
76
+
77
+ // Ignore duplicate registrations
78
+ if (state.flyouts.some(function (f) {
79
+ return f.flyoutId === flyoutId;
80
+ })) {
81
+ return state;
82
+ }
83
+ var newFlyoutState = {
84
+ level: level,
85
+ flyoutId: flyoutId,
86
+ size: size,
87
+ activityStage: STAGE_OPENING
88
+ };
89
+ var newFlyouts = [].concat(_toConsumableArray(state.flyouts), [newFlyoutState]);
90
+ if (level === LEVEL_MAIN) {
91
+ var newSession = {
92
+ mainFlyoutId: flyoutId,
93
+ title: title,
94
+ childFlyoutId: null,
95
+ zIndex: state.currentZIndex
96
+ };
97
+ return _objectSpread(_objectSpread({}, state), {}, {
98
+ sessions: [].concat(_toConsumableArray(state.sessions), [newSession]),
99
+ flyouts: newFlyouts,
100
+ // Increment by 3 for each new flyout session.
101
+ // Managed flyouts render main flyouts on z-index of `n`,
102
+ // child flyouts on `n - 1` and the overlay mask on `n - 2`.
103
+ currentZIndex: state.currentZIndex + 3
104
+ });
105
+ }
106
+ if (state.sessions.length === 0) {
107
+ return state;
108
+ }
109
+ var updatedSessions = _toConsumableArray(state.sessions);
110
+ var currentSessionIndex = updatedSessions.length - 1;
111
+ updatedSessions[currentSessionIndex] = _objectSpread(_objectSpread({}, updatedSessions[currentSessionIndex]), {}, {
112
+ childFlyoutId: flyoutId
113
+ });
114
+ return _objectSpread(_objectSpread({}, state), {}, {
115
+ sessions: updatedSessions,
116
+ flyouts: newFlyouts
117
+ });
118
+ }
119
+
120
+ // Unregister a flyout and update sessions accordingly.
121
+ // - When closing a `main` flyout, drop its entire session and all associated flyouts.
122
+ // - When closing a `child` flyout, clear the child pointer on the most
123
+ // recent session if it matches.
124
+ case ACTION_CLOSE:
125
+ {
126
+ var removedFlyout = state.flyouts.find(function (f) {
127
+ return f.flyoutId === action.flyoutId;
128
+ });
129
+ if (!removedFlyout) {
130
+ return state;
131
+ }
132
+ if (removedFlyout.level === LEVEL_MAIN) {
133
+ // Find the session that contains this main flyout
134
+ var sessionToRemove = state.sessions.find(function (session) {
135
+ return session.mainFlyoutId === action.flyoutId;
136
+ });
137
+ if (sessionToRemove) {
138
+ // Remove all flyouts associated with this session (main + child)
139
+ var flyoutsToRemove = new Set([action.flyoutId]);
140
+ if (sessionToRemove.childFlyoutId) {
141
+ flyoutsToRemove.add(sessionToRemove.childFlyoutId);
142
+ }
143
+ var _newFlyouts = state.flyouts.filter(function (f) {
144
+ return !flyoutsToRemove.has(f.flyoutId);
145
+ });
146
+ var newSessions = state.sessions.filter(function (session) {
147
+ return session.mainFlyoutId !== action.flyoutId;
148
+ });
149
+ var _newCurrentZIndex = state.currentZIndex;
150
+ if (newSessions.length === 0 && state.unmanagedFlyouts.length === 0) {
151
+ // Reset to initial value if no flyouts remain open to avoid
152
+ // the value going too high during the lifecycle of the app
153
+ _newCurrentZIndex = 0;
154
+ }
155
+ return _objectSpread(_objectSpread({}, state), {}, {
156
+ sessions: newSessions,
157
+ flyouts: _newFlyouts,
158
+ currentZIndex: _newCurrentZIndex
159
+ });
160
+ }
161
+ }
162
+
163
+ // Handle child flyout closing (existing logic)
164
+ var _newFlyouts2 = state.flyouts.filter(function (f) {
165
+ return f.flyoutId !== action.flyoutId;
166
+ });
167
+ if (state.sessions.length === 0) {
168
+ return _objectSpread(_objectSpread({}, state), {}, {
169
+ flyouts: _newFlyouts2
170
+ });
171
+ }
172
+ var _updatedSessions = _toConsumableArray(state.sessions);
173
+ var _currentSessionIndex = _updatedSessions.length - 1;
174
+ if (_updatedSessions[_currentSessionIndex].childFlyoutId === action.flyoutId) {
175
+ _updatedSessions[_currentSessionIndex] = _objectSpread(_objectSpread({}, _updatedSessions[_currentSessionIndex]), {}, {
176
+ childFlyoutId: null
177
+ });
178
+ }
179
+ return _objectSpread(_objectSpread({}, state), {}, {
180
+ sessions: _updatedSessions,
181
+ flyouts: _newFlyouts2
182
+ });
183
+ }
184
+
185
+ // Mark the provided flyout ID as the active child for the latest session.
186
+ case ACTION_SET_ACTIVE:
187
+ {
188
+ // No-op when no session exists.
189
+ if (state.sessions.length === 0) {
190
+ return state;
191
+ }
192
+ var _updatedSessions2 = _toConsumableArray(state.sessions);
193
+ var _currentSessionIndex2 = _updatedSessions2.length - 1;
194
+ _updatedSessions2[_currentSessionIndex2] = _objectSpread(_objectSpread({}, _updatedSessions2[_currentSessionIndex2]), {}, {
195
+ childFlyoutId: action.flyoutId
196
+ });
197
+ return _objectSpread(_objectSpread({}, state), {}, {
198
+ sessions: _updatedSessions2
199
+ });
200
+ }
201
+
202
+ // Persist a flyout's measured width (px). Used for responsive layout
203
+ // calculations, e.g., deciding stacked vs side-by-side.
204
+ case ACTION_SET_WIDTH:
205
+ {
206
+ var _flyoutId = action.flyoutId,
207
+ width = action.width;
208
+ var updatedFlyouts = state.flyouts.map(function (flyout) {
209
+ return flyout.flyoutId === _flyoutId ? _objectSpread(_objectSpread({}, flyout), {}, {
210
+ width: width
211
+ }) : flyout;
212
+ });
213
+ return _objectSpread(_objectSpread({}, state), {}, {
214
+ flyouts: updatedFlyouts
215
+ });
216
+ }
217
+
218
+ // Switch global layout mode for managed flyouts.
219
+ case ACTION_SET_LAYOUT_MODE:
220
+ {
221
+ return _objectSpread(_objectSpread({}, state), {}, {
222
+ layoutMode: action.layoutMode
223
+ });
224
+ }
225
+
226
+ // Update a flyout's activity stage in state
227
+ case ACTION_SET_ACTIVITY_STAGE:
228
+ {
229
+ var _flyoutId2 = action.flyoutId;
230
+ var _updatedFlyouts = state.flyouts.map(function (flyout) {
231
+ return flyout.flyoutId === _flyoutId2 ? _objectSpread(_objectSpread({}, flyout), {}, {
232
+ activityStage: action.activityStage
233
+ }) : flyout;
234
+ });
235
+ return _objectSpread(_objectSpread({}, state), {}, {
236
+ flyouts: _updatedFlyouts
237
+ });
238
+ }
239
+
240
+ // Go back one session (remove current session from stack)
241
+ case ACTION_GO_BACK:
242
+ {
243
+ if (state.sessions.length === 0) {
244
+ return state;
245
+ }
246
+ var _currentSessionIndex3 = state.sessions.length - 1;
247
+ var currentSession = state.sessions[_currentSessionIndex3];
248
+
249
+ // Close all flyouts in the current session
250
+ var _flyoutsToRemove = new Set([currentSession.mainFlyoutId]);
251
+ if (currentSession.childFlyoutId) {
252
+ _flyoutsToRemove.add(currentSession.childFlyoutId);
253
+ }
254
+ var _newFlyouts3 = state.flyouts.filter(function (f) {
255
+ return !_flyoutsToRemove.has(f.flyoutId);
256
+ });
257
+ var _newSessions = state.sessions.slice(0, _currentSessionIndex3);
258
+ return _objectSpread(_objectSpread({}, state), {}, {
259
+ sessions: _newSessions,
260
+ flyouts: _newFlyouts3
261
+ });
262
+ }
263
+
264
+ // Navigate to a specific flyout (remove all sessions after it)
265
+ case ACTION_GO_TO_FLYOUT:
266
+ {
267
+ var _flyoutId3 = action.flyoutId;
268
+
269
+ // Find the session containing the target flyout
270
+ var targetSessionIndex = state.sessions.findIndex(function (session) {
271
+ return session.mainFlyoutId === _flyoutId3;
272
+ });
273
+ if (targetSessionIndex === -1) {
274
+ return state; // Target flyout not found
275
+ }
276
+
277
+ // Close all sessions after the target session
278
+ var sessionsToClose = state.sessions.slice(targetSessionIndex + 1);
279
+ var _flyoutsToRemove2 = new Set();
280
+ sessionsToClose.forEach(function (session) {
281
+ _flyoutsToRemove2.add(session.mainFlyoutId);
282
+ if (session.childFlyoutId) {
283
+ _flyoutsToRemove2.add(session.childFlyoutId);
284
+ }
285
+ });
286
+ var _newFlyouts4 = state.flyouts.filter(function (f) {
287
+ return !_flyoutsToRemove2.has(f.flyoutId);
288
+ });
289
+ var _newSessions2 = state.sessions.slice(0, targetSessionIndex + 1);
290
+ return _objectSpread(_objectSpread({}, state), {}, {
291
+ sessions: _newSessions2,
292
+ flyouts: _newFlyouts4
293
+ });
294
+ }
295
+
296
+ // Set push padding offset for a specific side
297
+ case ACTION_SET_PUSH_PADDING:
298
+ {
299
+ var _state$pushPadding;
300
+ var side = action.side,
301
+ _width = action.width;
302
+ return _objectSpread(_objectSpread({}, state), {}, {
303
+ pushPadding: _objectSpread(_objectSpread({}, (_state$pushPadding = state.pushPadding) !== null && _state$pushPadding !== void 0 ? _state$pushPadding : {
304
+ left: 0,
305
+ right: 0
306
+ }), {}, _defineProperty({}, side, _width))
307
+ });
308
+ }
309
+ default:
310
+ return state;
311
+ }
312
+ }
@@ -0,0 +1,116 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ import { useFlyoutManager } from './provider';
10
+ import { useRef } from 'react';
11
+ export var useSession = function useSession(flyoutId) {
12
+ var context = useFlyoutManager();
13
+ if (!context) {
14
+ return null;
15
+ }
16
+ return context.state.sessions.find(function (s) {
17
+ return s.mainFlyoutId === flyoutId || s.childFlyoutId === flyoutId;
18
+ }) || null;
19
+ };
20
+
21
+ /** True when any managed flyout session is currently active. */
22
+ export var useHasActiveSession = function useHasActiveSession() {
23
+ return !!useCurrentSession();
24
+ };
25
+
26
+ /** True if the given `flyoutId` is the main or child flyout in the latest session. */
27
+ export var useIsFlyoutActive = function useIsFlyoutActive(flyoutId) {
28
+ var currentSession = useCurrentSession();
29
+ return (currentSession === null || currentSession === void 0 ? void 0 : currentSession.mainFlyoutId) === flyoutId || (currentSession === null || currentSession === void 0 ? void 0 : currentSession.childFlyoutId) === flyoutId;
30
+ };
31
+ export var useFlyout = function useFlyout(flyoutId) {
32
+ var context = useFlyoutManager();
33
+ if (!context || !flyoutId) {
34
+ return null;
35
+ }
36
+ return context.state.flyouts.find(function (f) {
37
+ return f.flyoutId === flyoutId;
38
+ }) || null;
39
+ };
40
+ export var useIsFlyoutRegistered = function useIsFlyoutRegistered(flyoutId) {
41
+ var context = useFlyoutManager();
42
+ if (!context || !flyoutId) {
43
+ return false;
44
+ }
45
+ return context.state.flyouts.some(function (f) {
46
+ return f.flyoutId === flyoutId;
47
+ });
48
+ };
49
+
50
+ /** The most recent flyout session or `null` if none. */
51
+ export var useCurrentSession = function useCurrentSession() {
52
+ var context = useFlyoutManager();
53
+ if (!context) return null;
54
+ return context.state.sessions[context.state.sessions.length - 1] || null;
55
+ };
56
+
57
+ /** The registered state of the current session's main flyout, if present. */
58
+ export var useCurrentMainFlyout = function useCurrentMainFlyout() {
59
+ var currentSession = useCurrentSession();
60
+ var mainFlyoutId = currentSession === null || currentSession === void 0 ? void 0 : currentSession.mainFlyoutId;
61
+ return useFlyout(mainFlyoutId);
62
+ };
63
+
64
+ /** The registered state of the current session's child flyout, if present. */
65
+ export var useCurrentChildFlyout = function useCurrentChildFlyout() {
66
+ var currentSession = useCurrentSession();
67
+ var childFlyoutId = currentSession === null || currentSession === void 0 ? void 0 : currentSession.childFlyoutId;
68
+ return useFlyout(childFlyoutId);
69
+ };
70
+
71
+ /** The measured width (px) of the specified flyout, or `null` if unknown. */
72
+ export var useFlyoutWidth = function useFlyoutWidth(flyoutId) {
73
+ var _useFlyout;
74
+ return (_useFlyout = useFlyout(flyoutId)) === null || _useFlyout === void 0 ? void 0 : _useFlyout.width;
75
+ };
76
+
77
+ /** The configured size of the parent (main) flyout for a given child flyout ID. */
78
+ export var useParentFlyoutSize = function useParentFlyoutSize(childFlyoutId) {
79
+ var session = useSession(childFlyoutId);
80
+ var parentFlyout = useFlyout(session === null || session === void 0 ? void 0 : session.mainFlyoutId);
81
+ return parentFlyout === null || parentFlyout === void 0 ? void 0 : parentFlyout.size;
82
+ };
83
+
84
+ /** True if the provided `flyoutId` is the main flyout and it currently has a child. */
85
+ export var useHasChildFlyout = function useHasChildFlyout(flyoutId) {
86
+ var session = useSession(flyoutId);
87
+ return !!(session !== null && session !== void 0 && session.childFlyoutId);
88
+ };
89
+
90
+ /** Get the current push padding offsets from manager state. */
91
+ export var usePushPaddingOffsets = function usePushPaddingOffsets() {
92
+ var _context$state$pushPa;
93
+ var context = useFlyoutManager();
94
+ if (!context) {
95
+ return {
96
+ left: 0,
97
+ right: 0
98
+ };
99
+ }
100
+ return (_context$state$pushPa = context.state.pushPadding) !== null && _context$state$pushPa !== void 0 ? _context$state$pushPa : {
101
+ left: 0,
102
+ right: 0
103
+ };
104
+ };
105
+
106
+ /** True if there's any active push padding (left or right side). */
107
+ export var useHasPushPadding = function useHasPushPadding() {
108
+ var pushPadding = usePushPaddingOffsets();
109
+ return pushPadding.left > 0 || pushPadding.right > 0;
110
+ };
111
+
112
+ /** Get the ref for the current flyout z-index to be used */
113
+ export var useCurrentFlyoutZIndexRef = function useCurrentFlyoutZIndexRef() {
114
+ var context = useFlyoutManager();
115
+ return useRef((context === null || context === void 0 ? void 0 : context.state.currentZIndex) || 0);
116
+ };