@elastic/eui 62.0.2 → 62.2.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 (313) hide show
  1. package/dist/eui_charts_theme.js +330 -330
  2. package/dist/eui_charts_theme.js.map +1 -1
  3. package/dist/eui_theme_dark.css +1 -783
  4. package/dist/eui_theme_dark.json +0 -57
  5. package/dist/eui_theme_dark.json.d.ts +0 -57
  6. package/dist/eui_theme_dark.min.css +1 -1
  7. package/dist/eui_theme_light.css +1 -783
  8. package/dist/eui_theme_light.json +0 -57
  9. package/dist/eui_theme_light.json.d.ts +0 -57
  10. package/dist/eui_theme_light.min.css +1 -1
  11. package/es/components/breadcrumbs/breadcrumb.js +199 -0
  12. package/es/components/breadcrumbs/breadcrumb.styles.js +61 -0
  13. package/es/components/breadcrumbs/breadcrumbs.js +115 -187
  14. package/es/components/breadcrumbs/breadcrumbs.styles.js +30 -0
  15. package/es/components/code/code_block.js +119 -107
  16. package/es/components/collapsible_nav/collapsible_nav.js +2 -2
  17. package/es/components/control_bar/control_bar.js +13 -0
  18. package/es/components/datagrid/body/data_grid_body.js +12 -2
  19. package/es/components/datagrid/body/data_grid_cell.js +31 -3
  20. package/es/components/datagrid/body/header/data_grid_header_row.js +1 -1
  21. package/es/components/datagrid/controls/column_sorting_draggable.js +1 -1
  22. package/es/components/datagrid/data_grid.js +10 -2
  23. package/es/components/datagrid/utils/row_heights.js +33 -4
  24. package/es/components/date_picker/super_date_picker/super_date_picker.js +2 -2
  25. package/es/components/date_picker/super_date_picker/super_update_button.js +1 -1
  26. package/es/components/description_list/description_list.js +22 -26
  27. package/es/components/description_list/description_list.styles.js +25 -0
  28. package/es/components/description_list/description_list_context.js +14 -0
  29. package/es/components/description_list/description_list_description.js +43 -2
  30. package/es/components/description_list/description_list_description.styles.js +47 -0
  31. package/es/components/description_list/description_list_title.js +43 -2
  32. package/es/components/description_list/description_list_title.styles.js +37 -0
  33. package/es/components/description_list/description_list_types.js +10 -0
  34. package/es/components/header/header.js +1 -27
  35. package/es/components/header/header_breadcrumbs/header_breadcrumbs.js +22 -2
  36. package/es/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +15 -0
  37. package/es/components/header/header_links/header_links.js +9 -9
  38. package/es/components/icon/assets/tokenStruct.js +1 -1
  39. package/es/components/page/page_header/page_header.js +1 -0
  40. package/es/components/page/page_header/page_header_content.js +2 -1
  41. package/es/components/page/page_template.js +1 -0
  42. package/es/components/pagination/pagination.js +1 -1
  43. package/es/components/panel/split_panel/split_panel.js +2 -2
  44. package/es/components/popover/wrapping_popover.js +88 -45
  45. package/es/components/portal/portal.js +84 -38
  46. package/es/components/provider/provider.js +2 -2
  47. package/es/components/responsive/hide_for.js +6 -38
  48. package/es/components/responsive/show_for.js +6 -38
  49. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +17 -36
  50. package/es/components/side_nav/side_nav.js +1 -1
  51. package/es/components/table/table_row_cell.js +1 -2
  52. package/es/components/toast/global_toast_list.js +208 -241
  53. package/es/components/toast/global_toast_list.styles.js +38 -0
  54. package/es/components/toast/global_toast_list_item.js +12 -7
  55. package/es/components/toast/toast.js +25 -25
  56. package/es/components/toast/toast.styles.js +55 -0
  57. package/es/components/token/index.js +2 -1
  58. package/es/components/token/token.js +48 -112
  59. package/es/components/token/token.styles.js +93 -0
  60. package/es/components/token/token_map.js +6 -9
  61. package/es/components/token/token_types.js +11 -0
  62. package/es/global_styling/reset/global_styles.js +1 -1
  63. package/es/services/{breakpoint.js → breakpoint/breakpoint.js} +4 -9
  64. package/es/services/{hooks/useIsWithinBreakpoints.js → breakpoint/currentEuiBreakpoint.js} +36 -28
  65. package/es/services/breakpoint/index.js +10 -0
  66. package/es/services/breakpoint/useIsWithinBreakpoints.js +24 -0
  67. package/es/services/hooks/index.js +0 -1
  68. package/es/services/index.js +1 -1
  69. package/es/test/rtl/component_helpers.js +60 -1
  70. package/eui.d.ts +1787 -1550
  71. package/i18ntokens.json +36 -36
  72. package/lib/components/breadcrumbs/breadcrumb.js +225 -0
  73. package/lib/components/breadcrumbs/breadcrumb.styles.js +68 -0
  74. package/lib/components/breadcrumbs/breadcrumbs.js +125 -188
  75. package/lib/components/breadcrumbs/breadcrumbs.styles.js +33 -0
  76. package/lib/components/code/code_block.js +118 -106
  77. package/lib/components/collapsible_nav/collapsible_nav.js +2 -2
  78. package/lib/components/control_bar/control_bar.js +13 -0
  79. package/lib/components/datagrid/body/data_grid_body.js +12 -2
  80. package/lib/components/datagrid/body/data_grid_cell.js +31 -3
  81. package/lib/components/datagrid/body/header/data_grid_header_row.js +1 -1
  82. package/lib/components/datagrid/controls/column_sorting_draggable.js +1 -1
  83. package/lib/components/datagrid/data_grid.js +10 -2
  84. package/lib/components/datagrid/utils/row_heights.js +33 -4
  85. package/lib/components/date_picker/super_date_picker/super_date_picker.js +2 -2
  86. package/lib/components/date_picker/super_date_picker/super_update_button.js +1 -1
  87. package/lib/components/description_list/description_list.js +25 -31
  88. package/lib/components/description_list/description_list.styles.js +36 -0
  89. package/lib/components/description_list/description_list_context.js +24 -0
  90. package/lib/components/description_list/description_list_description.js +52 -2
  91. package/lib/components/description_list/description_list_description.styles.js +51 -0
  92. package/lib/components/description_list/description_list_title.js +52 -2
  93. package/lib/components/description_list/description_list_title.styles.js +50 -0
  94. package/lib/components/description_list/description_list_types.js +20 -0
  95. package/lib/components/header/header.js +1 -27
  96. package/lib/components/header/header_breadcrumbs/header_breadcrumbs.js +24 -2
  97. package/lib/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +26 -0
  98. package/lib/components/header/header_links/header_links.js +8 -8
  99. package/lib/components/icon/assets/tokenStruct.js +1 -1
  100. package/lib/components/icon/svgs/tokens/tokenStruct.svg +1 -1
  101. package/lib/components/page/page_header/page_header.js +1 -0
  102. package/lib/components/page/page_header/page_header_content.js +3 -2
  103. package/lib/components/page/page_template.js +1 -0
  104. package/lib/components/pagination/pagination.js +1 -1
  105. package/lib/components/panel/split_panel/split_panel.js +3 -3
  106. package/lib/components/popover/wrapping_popover.js +85 -44
  107. package/lib/components/portal/portal.js +87 -39
  108. package/lib/components/provider/provider.js +1 -1
  109. package/lib/components/responsive/hide_for.js +12 -44
  110. package/lib/components/responsive/show_for.js +12 -44
  111. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +15 -35
  112. package/lib/components/side_nav/side_nav.js +1 -1
  113. package/lib/components/table/table_row_cell.js +1 -3
  114. package/lib/components/toast/global_toast_list.js +209 -238
  115. package/lib/components/toast/global_toast_list.styles.js +45 -0
  116. package/lib/components/toast/global_toast_list_item.js +14 -7
  117. package/lib/components/toast/toast.js +27 -25
  118. package/lib/components/toast/toast.styles.js +66 -0
  119. package/lib/components/token/index.js +5 -3
  120. package/lib/components/token/token.js +50 -120
  121. package/lib/components/token/token.styles.js +101 -0
  122. package/lib/components/token/token_map.js +6 -9
  123. package/lib/components/token/token_types.js +22 -0
  124. package/lib/global_styling/reset/global_styles.js +1 -1
  125. package/{test-env/services → lib/services/breakpoint}/breakpoint.js +5 -9
  126. package/lib/services/breakpoint/currentEuiBreakpoint.js +80 -0
  127. package/lib/services/breakpoint/index.js +44 -0
  128. package/lib/services/breakpoint/useIsWithinBreakpoints.js +34 -0
  129. package/lib/services/hooks/index.js +0 -13
  130. package/lib/services/index.js +28 -0
  131. package/lib/test/rtl/component_helpers.js +69 -3
  132. package/optimize/es/components/breadcrumbs/breadcrumb.js +136 -0
  133. package/optimize/es/components/breadcrumbs/breadcrumb.styles.js +61 -0
  134. package/optimize/es/components/breadcrumbs/breadcrumbs.js +92 -165
  135. package/optimize/es/components/breadcrumbs/breadcrumbs.styles.js +30 -0
  136. package/optimize/es/components/code/code_block.js +106 -107
  137. package/optimize/es/components/datagrid/body/data_grid_body.js +2 -0
  138. package/optimize/es/components/datagrid/body/data_grid_cell.js +13 -1
  139. package/optimize/es/components/datagrid/utils/row_heights.js +33 -4
  140. package/optimize/es/components/description_list/description_list.js +20 -24
  141. package/optimize/es/components/description_list/description_list.styles.js +25 -0
  142. package/optimize/es/components/description_list/description_list_context.js +14 -0
  143. package/optimize/es/components/description_list/description_list_description.js +32 -2
  144. package/optimize/es/components/description_list/description_list_description.styles.js +47 -0
  145. package/optimize/es/components/description_list/description_list_title.js +32 -2
  146. package/optimize/es/components/description_list/description_list_title.styles.js +37 -0
  147. package/optimize/es/components/description_list/description_list_types.js +10 -0
  148. package/optimize/es/components/header/header_breadcrumbs/header_breadcrumbs.js +8 -1
  149. package/optimize/es/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +15 -0
  150. package/optimize/es/components/header/header_links/header_links.js +8 -8
  151. package/optimize/es/components/icon/assets/tokenStruct.js +1 -1
  152. package/optimize/es/components/page/page_header/page_header_content.js +1 -1
  153. package/optimize/es/components/panel/split_panel/split_panel.js +1 -1
  154. package/optimize/es/components/popover/wrapping_popover.js +79 -38
  155. package/optimize/es/components/portal/portal.js +66 -34
  156. package/optimize/es/components/provider/provider.js +2 -2
  157. package/optimize/es/components/responsive/hide_for.js +5 -27
  158. package/optimize/es/components/responsive/show_for.js +5 -27
  159. package/optimize/es/components/selectable/selectable_templates/selectable_template_sitewide.js +16 -35
  160. package/optimize/es/components/table/table_row_cell.js +1 -2
  161. package/optimize/es/components/toast/global_toast_list.js +199 -230
  162. package/optimize/es/components/toast/global_toast_list.styles.js +38 -0
  163. package/optimize/es/components/toast/global_toast_list_item.js +11 -6
  164. package/optimize/es/components/toast/toast.js +24 -24
  165. package/optimize/es/components/toast/toast.styles.js +55 -0
  166. package/optimize/es/components/token/index.js +2 -1
  167. package/optimize/es/components/token/token.js +46 -69
  168. package/optimize/es/components/token/token.styles.js +83 -0
  169. package/optimize/es/components/token/token_map.js +6 -9
  170. package/optimize/es/components/token/token_types.js +11 -0
  171. package/optimize/es/global_styling/reset/global_styles.js +1 -1
  172. package/optimize/es/services/{breakpoint.js → breakpoint/breakpoint.js} +4 -9
  173. package/optimize/es/services/breakpoint/currentEuiBreakpoint.js +53 -0
  174. package/optimize/es/services/breakpoint/index.js +10 -0
  175. package/optimize/es/services/breakpoint/useIsWithinBreakpoints.js +24 -0
  176. package/optimize/es/services/hooks/index.js +0 -1
  177. package/optimize/es/services/index.js +1 -1
  178. package/optimize/es/test/rtl/component_helpers.js +60 -1
  179. package/optimize/lib/components/breadcrumbs/breadcrumb.js +162 -0
  180. package/optimize/lib/components/breadcrumbs/breadcrumb.styles.js +68 -0
  181. package/optimize/lib/components/breadcrumbs/breadcrumbs.js +99 -164
  182. package/optimize/lib/components/breadcrumbs/breadcrumbs.styles.js +33 -0
  183. package/optimize/lib/components/code/code_block.js +105 -106
  184. package/optimize/lib/components/datagrid/body/data_grid_body.js +2 -0
  185. package/optimize/lib/components/datagrid/body/data_grid_cell.js +13 -1
  186. package/optimize/lib/components/datagrid/utils/row_heights.js +33 -4
  187. package/optimize/lib/components/description_list/description_list.js +23 -28
  188. package/optimize/lib/components/description_list/description_list.styles.js +36 -0
  189. package/optimize/lib/components/description_list/description_list_context.js +24 -0
  190. package/optimize/lib/components/description_list/description_list_description.js +43 -2
  191. package/optimize/lib/components/description_list/description_list_description.styles.js +51 -0
  192. package/optimize/lib/components/description_list/description_list_title.js +43 -2
  193. package/optimize/lib/components/description_list/description_list_title.styles.js +50 -0
  194. package/optimize/lib/components/description_list/description_list_types.js +20 -0
  195. package/optimize/lib/components/header/header_breadcrumbs/header_breadcrumbs.js +10 -1
  196. package/optimize/lib/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +26 -0
  197. package/optimize/lib/components/header/header_links/header_links.js +7 -7
  198. package/optimize/lib/components/icon/assets/tokenStruct.js +1 -1
  199. package/optimize/lib/components/icon/svgs/tokens/tokenStruct.svg +1 -1
  200. package/optimize/lib/components/page/page_header/page_header_content.js +2 -2
  201. package/optimize/lib/components/panel/split_panel/split_panel.js +2 -2
  202. package/optimize/lib/components/popover/wrapping_popover.js +78 -38
  203. package/optimize/lib/components/portal/portal.js +65 -44
  204. package/optimize/lib/components/provider/provider.js +1 -1
  205. package/optimize/lib/components/responsive/hide_for.js +4 -33
  206. package/optimize/lib/components/responsive/show_for.js +4 -33
  207. package/optimize/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +14 -34
  208. package/optimize/lib/components/table/table_row_cell.js +1 -3
  209. package/optimize/lib/components/toast/global_toast_list.js +206 -220
  210. package/optimize/lib/components/toast/global_toast_list.styles.js +47 -0
  211. package/optimize/lib/components/toast/global_toast_list_item.js +14 -7
  212. package/optimize/lib/components/toast/toast.js +26 -24
  213. package/optimize/lib/components/toast/toast.styles.js +66 -0
  214. package/optimize/lib/components/token/index.js +5 -3
  215. package/optimize/lib/components/token/token.js +50 -76
  216. package/optimize/lib/components/token/token.styles.js +91 -0
  217. package/optimize/lib/components/token/token_map.js +6 -9
  218. package/optimize/lib/components/token/token_types.js +22 -0
  219. package/optimize/lib/global_styling/reset/global_styles.js +1 -1
  220. package/optimize/lib/services/{breakpoint.js → breakpoint/breakpoint.js} +5 -9
  221. package/optimize/lib/services/breakpoint/currentEuiBreakpoint.js +81 -0
  222. package/optimize/lib/services/breakpoint/index.js +44 -0
  223. package/optimize/lib/services/breakpoint/useIsWithinBreakpoints.js +34 -0
  224. package/optimize/lib/services/hooks/index.js +0 -13
  225. package/optimize/lib/services/index.js +28 -0
  226. package/optimize/lib/test/rtl/component_helpers.js +69 -3
  227. package/package.json +2 -2
  228. package/src/components/control_bar/_control_bar.scss +1 -1
  229. package/src/components/header/_index.scss +0 -1
  230. package/src/components/index.scss +0 -5
  231. package/src/themes/amsterdam/overrides/_breadcrumbs.scss +0 -12
  232. package/src/themes/amsterdam/overrides/_index.scss +0 -4
  233. package/test-env/components/breadcrumbs/breadcrumb.js +211 -0
  234. package/test-env/components/breadcrumbs/breadcrumb.styles.js +68 -0
  235. package/test-env/components/breadcrumbs/breadcrumbs.js +122 -174
  236. package/test-env/components/breadcrumbs/breadcrumbs.styles.js +33 -0
  237. package/test-env/components/collapsible_nav/collapsible_nav.js +2 -2
  238. package/test-env/components/control_bar/control_bar.js +13 -0
  239. package/test-env/components/datagrid/body/data_grid_body.js +12 -2
  240. package/test-env/components/datagrid/body/data_grid_cell.js +31 -3
  241. package/test-env/components/datagrid/body/header/data_grid_header_row.js +1 -1
  242. package/test-env/components/datagrid/controls/column_sorting_draggable.js +1 -1
  243. package/test-env/components/datagrid/data_grid.js +10 -2
  244. package/test-env/components/datagrid/utils/row_heights.js +33 -4
  245. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +2 -2
  246. package/test-env/components/date_picker/super_date_picker/super_update_button.js +1 -1
  247. package/test-env/components/description_list/description_list.js +25 -30
  248. package/test-env/components/description_list/description_list.styles.js +36 -0
  249. package/test-env/components/description_list/description_list_context.js +24 -0
  250. package/test-env/components/description_list/description_list_description.js +43 -2
  251. package/test-env/components/description_list/description_list_description.styles.js +51 -0
  252. package/test-env/components/description_list/description_list_title.js +43 -2
  253. package/test-env/components/description_list/description_list_title.styles.js +50 -0
  254. package/test-env/components/description_list/description_list_types.js +20 -0
  255. package/test-env/components/header/header.js +1 -27
  256. package/test-env/components/header/header_breadcrumbs/header_breadcrumbs.js +24 -2
  257. package/test-env/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +26 -0
  258. package/test-env/components/header/header_links/header_links.js +8 -8
  259. package/test-env/components/icon/assets/tokenStruct.js +1 -1
  260. package/test-env/components/observer/resize_observer/resize_observer.js +43 -126
  261. package/test-env/components/page/page_header/page_header.js +1 -0
  262. package/test-env/components/page/page_header/page_header_content.js +3 -2
  263. package/test-env/components/page/page_template.js +1 -0
  264. package/test-env/components/pagination/pagination.js +1 -1
  265. package/test-env/components/panel/split_panel/split_panel.js +3 -3
  266. package/test-env/components/popover/wrapping_popover.js +78 -38
  267. package/test-env/components/portal/portal.js +79 -45
  268. package/test-env/components/provider/provider.js +1 -1
  269. package/test-env/components/responsive/hide_for.js +5 -34
  270. package/test-env/components/responsive/show_for.js +5 -34
  271. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +15 -35
  272. package/test-env/components/side_nav/side_nav.js +1 -1
  273. package/test-env/components/table/table_row_cell.js +1 -3
  274. package/test-env/components/toast/global_toast_list.js +206 -220
  275. package/test-env/components/toast/global_toast_list.styles.js +47 -0
  276. package/test-env/components/toast/global_toast_list_item.js +14 -7
  277. package/test-env/components/toast/toast.js +27 -25
  278. package/test-env/components/toast/toast.styles.js +66 -0
  279. package/test-env/components/token/index.js +5 -3
  280. package/test-env/components/token/token.js +51 -120
  281. package/test-env/components/token/token.styles.js +91 -0
  282. package/test-env/components/token/token_map.js +6 -9
  283. package/test-env/components/token/token_types.js +22 -0
  284. package/test-env/global_styling/reset/global_styles.js +1 -1
  285. package/{lib/services → test-env/services/breakpoint}/breakpoint.js +5 -9
  286. package/test-env/services/breakpoint/currentEuiBreakpoint.js +37 -0
  287. package/test-env/services/breakpoint/index.js +44 -0
  288. package/test-env/services/breakpoint/useIsWithinBreakpoints.js +34 -0
  289. package/test-env/services/hooks/index.js +0 -13
  290. package/test-env/services/index.js +28 -0
  291. package/test-env/test/rtl/component_helpers.js +69 -3
  292. package/lib/services/hooks/useIsWithinBreakpoints.js +0 -57
  293. package/optimize/es/services/hooks/useIsWithinBreakpoints.js +0 -46
  294. package/optimize/lib/services/hooks/useIsWithinBreakpoints.js +0 -57
  295. package/src/components/breadcrumbs/_breadcrumbs.scss +0 -79
  296. package/src/components/breadcrumbs/_index.scss +0 -2
  297. package/src/components/breadcrumbs/_variables.scss +0 -2
  298. package/src/components/description_list/_description_list.scss +0 -211
  299. package/src/components/description_list/_index.scss +0 -1
  300. package/src/components/header/header_breadcrumbs/_header_breadcrumbs.scss +0 -8
  301. package/src/components/header/header_breadcrumbs/_index.scss +0 -1
  302. package/src/components/portal/_index.scss +0 -1
  303. package/src/components/portal/_portal.scss +0 -6
  304. package/src/components/toast/_global_toast_list.scss +0 -90
  305. package/src/components/toast/_index.scss +0 -4
  306. package/src/components/toast/_toast.scss +0 -103
  307. package/src/components/token/_index.scss +0 -2
  308. package/src/components/token/_token.scss +0 -85
  309. package/src/components/token/_variables.scss +0 -13
  310. package/src/themes/amsterdam/overrides/_header_breadcrumbs.scss +0 -71
  311. package/src/themes/amsterdam/overrides/_toast.scss +0 -21
  312. package/src/themes/amsterdam/overrides/_token.scss +0 -4
  313. package/test-env/services/hooks/useIsWithinBreakpoints.js +0 -57
@@ -1,9 +1,7 @@
1
1
  import _typeof from "@babel/runtime/helpers/typeof";
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
5
- var _excluded = ["breadcrumbs", "className", "responsive", "truncate", "max"],
6
- _excluded2 = ["text", "href", "onClick", "truncate", "className"];
4
+ var _excluded = ["breadcrumbs", "className", "responsive", "truncate", "max", "type", "lastBreadcrumbIsCurrentPage"];
7
5
 
8
6
  /*
9
7
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -12,99 +10,18 @@ var _excluded = ["breadcrumbs", "className", "responsive", "truncate", "max"],
12
10
  * in compliance with, at your election, the Elastic License 2.0 or the Server
13
11
  * Side Public License, v 1.
14
12
  */
15
- import React, { useEffect, useState } from 'react';
13
+ import React, { useMemo } from 'react';
16
14
  import classNames from 'classnames';
17
15
  import { useEuiI18n } from '../i18n';
18
- import { EuiInnerText } from '../inner_text';
19
- import { EuiLink } from '../link';
20
- import { EuiPopover } from '../popover';
21
- import { EuiIcon } from '../icon';
22
- import { throttle } from '../../services';
23
- import { getBreakpoint } from '../../services/breakpoint';
16
+ import { useEuiTheme, useCurrentEuiBreakpoint } from '../../services';
17
+ import { EuiBreadcrumb, EuiBreadcrumbContent, EuiBreadcrumbCollapsed } from './breadcrumb';
18
+ import { euiBreadcrumbsListStyles } from './breadcrumbs.styles';
24
19
  import { jsx as ___EmotionJSX } from "@emotion/react";
25
- var CONTENT_CLASSNAME = 'euiBreadcrumb__content';
26
20
  var responsiveDefault = {
27
21
  xs: 1,
28
22
  s: 2,
29
23
  m: 4
30
24
  };
31
-
32
- var limitBreadcrumbs = function limitBreadcrumbs(breadcrumbs, max, allBreadcrumbs) {
33
- var breadcrumbsAtStart = [];
34
- var breadcrumbsAtEnd = [];
35
- var limit = Math.min(max, breadcrumbs.length);
36
- var start = Math.floor(limit / 2);
37
- var overflowBreadcrumbs = allBreadcrumbs.slice(start, start + breadcrumbs.length - limit);
38
-
39
- if (overflowBreadcrumbs.length) {
40
- overflowBreadcrumbs[overflowBreadcrumbs.length - 1]['aria-current'] = 'false';
41
- }
42
-
43
- for (var i = 0; i < limit; i++) {
44
- // We'll alternate with displaying breadcrumbs at the end and at the start, but be biased
45
- // towards breadcrumbs the end so that if max is an odd number, we'll have one more
46
- // breadcrumb visible at the end than at the beginning.
47
- var isEven = i % 2 === 0; // We're picking breadcrumbs from the front AND the back, so we treat each iteration as a
48
- // half-iteration.
49
-
50
- var normalizedIndex = Math.floor(i * 0.5);
51
- var indexOfBreadcrumb = isEven ? breadcrumbs.length - 1 - normalizedIndex : normalizedIndex;
52
- var breadcrumb = breadcrumbs[indexOfBreadcrumb];
53
-
54
- if (isEven) {
55
- breadcrumbsAtEnd.unshift(breadcrumb);
56
- } else {
57
- breadcrumbsAtStart.push(breadcrumb);
58
- }
59
- }
60
-
61
- var EuiBreadcrumbCollapsed = function EuiBreadcrumbCollapsed() {
62
- var _useState = useState(false),
63
- _useState2 = _slicedToArray(_useState, 2),
64
- isPopoverOpen = _useState2[0],
65
- setIsPopoverOpen = _useState2[1];
66
-
67
- var ariaLabel = useEuiI18n('euiBreadcrumbs.collapsedBadge.ariaLabel', 'See collapsed breadcrumbs');
68
-
69
- var ellipsisButton = ___EmotionJSX(EuiLink, {
70
- className: CONTENT_CLASSNAME,
71
- color: "subdued",
72
- "aria-label": ariaLabel,
73
- title: ariaLabel,
74
- onClick: function onClick() {
75
- return setIsPopoverOpen(!isPopoverOpen);
76
- }
77
- }, "\u2026 ", ___EmotionJSX(EuiIcon, {
78
- type: "arrowDown",
79
- size: "s"
80
- }));
81
-
82
- return ___EmotionJSX("li", {
83
- className: "euiBreadcrumb euiBreadcrumb--collapsed"
84
- }, ___EmotionJSX(EuiPopover, {
85
- button: ellipsisButton,
86
- isOpen: isPopoverOpen,
87
- closePopover: function closePopover() {
88
- return setIsPopoverOpen(false);
89
- }
90
- }, ___EmotionJSX(EuiBreadcrumbs, {
91
- className: "euiBreadcrumbs__inPopover",
92
- breadcrumbs: overflowBreadcrumbs,
93
- responsive: false,
94
- truncate: false,
95
- max: 0
96
- })));
97
- };
98
-
99
- if (max < breadcrumbs.length) {
100
- breadcrumbsAtStart.push(___EmotionJSX(EuiBreadcrumbCollapsed, {
101
- key: "collapsed"
102
- }));
103
- }
104
-
105
- return [].concat(breadcrumbsAtStart, breadcrumbsAtEnd);
106
- };
107
-
108
25
  export var EuiBreadcrumbs = function EuiBreadcrumbs(_ref) {
109
26
  var breadcrumbs = _ref.breadcrumbs,
110
27
  className = _ref.className,
@@ -114,96 +31,106 @@ export var EuiBreadcrumbs = function EuiBreadcrumbs(_ref) {
114
31
  truncate = _ref$truncate === void 0 ? true : _ref$truncate,
115
32
  _ref$max = _ref.max,
116
33
  max = _ref$max === void 0 ? 5 : _ref$max,
34
+ _ref$type = _ref.type,
35
+ type = _ref$type === void 0 ? 'page' : _ref$type,
36
+ _ref$lastBreadcrumbIs = _ref.lastBreadcrumbIsCurrentPage,
37
+ lastBreadcrumbIsCurrentPage = _ref$lastBreadcrumbIs === void 0 ? true : _ref$lastBreadcrumbIs,
117
38
  rest = _objectWithoutProperties(_ref, _excluded);
118
39
 
119
40
  var ariaLabel = useEuiI18n('euiBreadcrumbs.nav.ariaLabel', 'Breadcrumbs');
120
-
121
- var _useState3 = useState(getBreakpoint(typeof window === 'undefined' ? -Infinity : window.innerWidth)),
122
- _useState4 = _slicedToArray(_useState3, 2),
123
- currentBreakpoint = _useState4[0],
124
- setCurrentBreakpoint = _useState4[1];
125
-
126
- var functionToCallOnWindowResize = throttle(function () {
127
- var newBreakpoint = getBreakpoint(window.innerWidth);
128
-
129
- if (newBreakpoint !== currentBreakpoint) {
130
- setCurrentBreakpoint(newBreakpoint);
131
- } // reacts every 50ms to resize changes and always gets the final update
132
-
133
- }, 50); // Add window resize handlers
134
-
135
- useEffect(function () {
136
- window.addEventListener('resize', functionToCallOnWindowResize);
137
- return function () {
138
- window.removeEventListener('resize', functionToCallOnWindowResize);
139
- };
140
- }, [responsive, functionToCallOnWindowResize]);
141
- var breadcrumbElements = breadcrumbs.map(function (breadcrumb, index) {
142
- var text = breadcrumb.text,
143
- href = breadcrumb.href,
144
- onClick = breadcrumb.onClick,
145
- truncate = breadcrumb.truncate,
146
- breadcrumbClassName = breadcrumb.className,
147
- breadcrumbRest = _objectWithoutProperties(breadcrumb, _excluded2);
148
-
149
- var isLastBreadcrumb = index === breadcrumbs.length - 1;
150
- var className = classNames('euiBreadcrumb', {
151
- 'euiBreadcrumb--last': isLastBreadcrumb,
152
- 'euiBreadcrumb--truncate': truncate
41
+ var euiTheme = useEuiTheme();
42
+ var breadcrumbsListStyles = euiBreadcrumbsListStyles(euiTheme);
43
+ var cssBreadcrumbsListStyles = [breadcrumbsListStyles.euiBreadcrumbs__list, truncate && breadcrumbsListStyles.isTruncated];
44
+ var responsiveMax = useResponsiveMax(responsive, max);
45
+ var visibleBreadcrumbs = useMemo(function () {
46
+ var shouldCollapseBreadcrumbs = responsiveMax && breadcrumbs.length > responsiveMax;
47
+ return shouldCollapseBreadcrumbs ? limitBreadcrumbs(breadcrumbs, responsiveMax) : breadcrumbs;
48
+ }, [breadcrumbs, responsiveMax]);
49
+ var breadcrumbChildren = useMemo(function () {
50
+ return visibleBreadcrumbs.map(function (breadcrumb, index) {
51
+ var isFirstBreadcrumb = index === 0;
52
+ var isLastBreadcrumb = index === visibleBreadcrumbs.length - 1;
53
+ var isOnlyBreadcrumb = visibleBreadcrumbs.length === 1;
54
+ var sharedProps = {
55
+ type: type,
56
+ truncate: truncate
57
+ };
58
+ return breadcrumb.isCollapsedButton ? ___EmotionJSX(EuiBreadcrumbCollapsed, _extends({
59
+ key: "collapsed"
60
+ }, sharedProps, {
61
+ isFirstBreadcrumb: isFirstBreadcrumb
62
+ }), ___EmotionJSX(EuiBreadcrumbs, {
63
+ breadcrumbs: breadcrumb.overflowBreadcrumbs,
64
+ lastBreadcrumbIsCurrentPage: false,
65
+ responsive: false,
66
+ truncate: false,
67
+ max: 0
68
+ })) : ___EmotionJSX(EuiBreadcrumb, _extends({
69
+ key: index
70
+ }, sharedProps), ___EmotionJSX(EuiBreadcrumbContent, _extends({
71
+ isFirstBreadcrumb: isFirstBreadcrumb,
72
+ isLastBreadcrumb: isLastBreadcrumb,
73
+ isOnlyBreadcrumb: isOnlyBreadcrumb,
74
+ highlightLastBreadcrumb: isLastBreadcrumb && lastBreadcrumbIsCurrentPage
75
+ }, sharedProps, breadcrumb)));
153
76
  });
154
- var linkProps = {
155
- className: classNames(CONTENT_CLASSNAME, breadcrumbClassName),
156
- 'aria-current': isLastBreadcrumb ? 'page' : undefined
157
- };
77
+ }, [visibleBreadcrumbs, truncate, type, lastBreadcrumbIsCurrentPage]);
78
+ return ___EmotionJSX("nav", _extends({
79
+ "aria-label": ariaLabel,
80
+ className: classNames('euiBreadcrumbs', className)
81
+ }, rest), ___EmotionJSX("ol", {
82
+ className: "euiBreadcrumbs__list",
83
+ css: cssBreadcrumbsListStyles
84
+ }, breadcrumbChildren));
85
+ };
86
+ export var useResponsiveMax = function useResponsiveMax(responsive, max) {
87
+ // Use the default object if they simply passed `true` for responsive
88
+ var responsiveObject = _typeof(responsive) === 'object' ? responsive : responsiveDefault; // The max property collapses any breadcrumbs past the max quantity.
89
+ // This is the same behavior we want for responsiveness.
90
+ // So calculate the max value based on the combination of `max` and `responsive`
158
91
 
159
- var link = ___EmotionJSX(EuiInnerText, null, function (ref, innerText) {
160
- var title = innerText === '' ? undefined : innerText;
92
+ var responsiveMax = max; // Set the calculated max to the number associated with the currentBreakpoint key if it exists
161
93
 
162
- if (!href && !onClick) {
163
- return ___EmotionJSX("span", _extends({
164
- ref: ref,
165
- title: title
166
- }, linkProps, breadcrumbRest), text);
167
- }
94
+ var currentBreakpoint = useCurrentEuiBreakpoint();
168
95
 
169
- return ___EmotionJSX(EuiLink, _extends({
170
- ref: ref,
171
- color: isLastBreadcrumb ? 'text' : 'subdued',
172
- onClick: onClick,
173
- href: href,
174
- title: title
175
- }, linkProps, breadcrumbRest), text);
176
- });
96
+ if (responsive && currentBreakpoint && responsiveObject[currentBreakpoint]) {
97
+ responsiveMax = responsiveObject[currentBreakpoint];
98
+ } // Final check is to make sure max is used over a larger breakpoint value
177
99
 
178
- return ___EmotionJSX("li", {
179
- className: className,
180
- key: index
181
- }, link);
182
- }); // Use the default object if they simply passed `true` for responsive
183
100
 
184
- var responsiveObject = _typeof(responsive) === 'object' ? responsive : responsiveDefault; // The max property collapses any breadcrumbs past the max quantity.
185
- // This is the same behavior we want for responsiveness.
186
- // So calculate the max value based on the combination of `max` and `responsive`
101
+ if (max && responsiveMax) {
102
+ responsiveMax = max < responsiveMax ? max : responsiveMax;
103
+ }
187
104
 
188
- var calculatedMax = max; // Set the calculated max to the number associated with the currentBreakpoint key if it exists
105
+ return responsiveMax;
106
+ };
107
+ export var limitBreadcrumbs = function limitBreadcrumbs(breadcrumbs, max) {
108
+ var breadcrumbsAtStart = [];
109
+ var breadcrumbsAtEnd = [];
110
+ var limit = Math.min(max, breadcrumbs.length);
111
+ var start = Math.floor(limit / 2);
112
+ var overflowBreadcrumbs = breadcrumbs.slice(start, start + breadcrumbs.length - limit);
189
113
 
190
- if (responsive && responsiveObject[currentBreakpoint]) {
191
- calculatedMax = responsiveObject[currentBreakpoint];
192
- } // Final check is to make sure max is used over a larger breakpoint value
114
+ for (var i = 0; i < limit; i++) {
115
+ // We'll alternate with displaying breadcrumbs at the end and at the start, but be biased
116
+ // towards breadcrumbs the end so that if max is an odd number, we'll have one more
117
+ // breadcrumb visible at the end than at the beginning.
118
+ var isEven = i % 2 === 0; // We're picking breadcrumbs from the front AND the back, so we treat each iteration as a
119
+ // half-iteration.
193
120
 
121
+ var normalizedIndex = Math.floor(i * 0.5);
122
+ var indexOfBreadcrumb = isEven ? breadcrumbs.length - 1 - normalizedIndex : normalizedIndex;
123
+ var breadcrumb = breadcrumbs[indexOfBreadcrumb];
194
124
 
195
- if (max && calculatedMax) {
196
- calculatedMax = max < calculatedMax ? max : calculatedMax;
125
+ if (isEven) {
126
+ breadcrumbsAtEnd.unshift(breadcrumb);
127
+ } else {
128
+ breadcrumbsAtStart.push(breadcrumb);
129
+ }
197
130
  }
198
131
 
199
- var limitedBreadcrumbs = calculatedMax ? limitBreadcrumbs(breadcrumbElements, calculatedMax, breadcrumbs) : breadcrumbElements;
200
- var classes = classNames('euiBreadcrumbs', className, {
201
- 'euiBreadcrumbs--truncate': truncate
202
- });
203
- return ___EmotionJSX("nav", _extends({
204
- "aria-label": ariaLabel,
205
- className: classes
206
- }, rest), ___EmotionJSX("ol", {
207
- className: "euiBreadcrumbs__list"
208
- }, limitedBreadcrumbs));
132
+ return [].concat(breadcrumbsAtStart, [{
133
+ isCollapsedButton: true,
134
+ overflowBreadcrumbs: overflowBreadcrumbs
135
+ }], breadcrumbsAtEnd);
209
136
  };
@@ -0,0 +1,30 @@
1
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
2
+
3
+ /*
4
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
5
+ * or more contributor license agreements. Licensed under the Elastic License
6
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
7
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
8
+ * Side Public License, v 1.
9
+ */
10
+ import { css } from '@emotion/react';
11
+ import { euiFontSize, logicalCSS } from '../../global_styling';
12
+
13
+ var _ref = process.env.NODE_ENV === "production" ? {
14
+ name: "1bwn7gf-isTruncated",
15
+ styles: "flex-wrap:nowrap;white-space:nowrap;label:isTruncated;"
16
+ } : {
17
+ name: "1bwn7gf-isTruncated",
18
+ styles: "flex-wrap:nowrap;white-space:nowrap;label:isTruncated;",
19
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
20
+ };
21
+
22
+ export var euiBreadcrumbsListStyles = function euiBreadcrumbsListStyles(euiThemeContext) {
23
+ // Styles cast to the <ol> element
24
+ var euiTheme = euiThemeContext.euiTheme;
25
+ return {
26
+ euiBreadcrumbs__list: /*#__PURE__*/css(euiFontSize(euiThemeContext, 's'), ";align-items:center;display:flex;flex-wrap:wrap;line-height:", euiTheme.size.l, ";", logicalCSS( // Add vertical space between breadcrumbs, but make sure the whole breadcrumb set doesn't add space below itself
27
+ 'margin-bottom', "-".concat(euiTheme.size.xs)), " ", logicalCSS('min-width', 0), ";;label:euiBreadcrumbs__list;"),
28
+ isTruncated: _ref
29
+ };
30
+ };
@@ -25,7 +25,7 @@ import { EuiButtonIcon } from '../button';
25
25
  import { keysOf } from '../common';
26
26
  import { EuiCopy } from '../copy';
27
27
  import { EuiFocusTrap } from '../focus_trap';
28
- import { EuiI18n } from '../i18n';
28
+ import { useEuiI18n } from '../i18n';
29
29
  import { useInnerText } from '../inner_text';
30
30
  import { useMutationObserver } from '../observer/mutation_observer';
31
31
  import { useResizeObserver } from '../observer/resize_observer';
@@ -109,7 +109,7 @@ export var EuiCodeBlock = function EuiCodeBlock(_ref) {
109
109
  }),
110
110
  innerTextRef = _useCopy.innerTextRef,
111
111
  showCopyButton = _useCopy.showCopyButton,
112
- CopyButton = _useCopy.CopyButton;
112
+ textToCopy = _useCopy.textToCopy;
113
113
 
114
114
  var _useOverflowDetection = useOverflowDetection(),
115
115
  setWrapperRef = _useOverflowDetection.setWrapperRef,
@@ -122,8 +122,8 @@ export var EuiCodeBlock = function EuiCodeBlock(_ref) {
122
122
  }),
123
123
  showFullScreenButton = _useFullScreen.showFullScreenButton,
124
124
  onKeyDown = _useFullScreen.onKeyDown,
125
- FullScreenButton = _useFullScreen.FullScreenButton,
126
- FullScreenDisplay = _useFullScreen.FullScreenDisplay; // Classes used in both fullscreen and non-fullscreen mode
125
+ isFullScreen = _useFullScreen.isFullScreen,
126
+ toggleFullScreen = _useFullScreen.toggleFullScreen; // Classes used in both fullscreen and non-fullscreen mode
127
127
 
128
128
 
129
129
  var wrapperClasses = classNames(className, 'euiCodeBlock', {
@@ -153,25 +153,32 @@ export var EuiCodeBlock = function EuiCodeBlock(_ref) {
153
153
  onKeyDown: onKeyDown
154
154
  };
155
155
  }, [preClasses, onKeyDown]);
156
- var optionalStyles = {};
157
-
158
- if (overflowHeight) {
159
- var property = typeof overflowHeight === 'string' ? 'height' : 'maxHeight';
160
- optionalStyles[property] = overflowHeight;
161
- }
162
-
163
- var wrapperProps = {
164
- className: classes,
165
- style: optionalStyles
166
- };
167
- var codeBlockControls;
168
-
169
- if (showCopyButton || showFullScreenButton) {
170
- codeBlockControls = ___EmotionJSX("div", {
171
- className: "euiCodeBlock__controls"
172
- }, ___EmotionJSX(FullScreenButton, null), ___EmotionJSX(CopyButton, null));
173
- }
156
+ var overflowHeightStyles = useMemo(function () {
157
+ if (overflowHeight) {
158
+ var property = typeof overflowHeight === 'string' ? 'height' : 'maxHeight';
159
+ return _defineProperty({}, property, overflowHeight);
160
+ }
174
161
 
162
+ return {};
163
+ }, [overflowHeight]);
164
+ var wrapperProps = useMemo(function () {
165
+ return {
166
+ className: classes,
167
+ style: overflowHeightStyles
168
+ };
169
+ }, [classes, overflowHeightStyles]);
170
+ var codeBlockControls = useMemo(function () {
171
+ if (showCopyButton || showFullScreenButton) {
172
+ return ___EmotionJSX("div", {
173
+ className: "euiCodeBlock__controls"
174
+ }, showFullScreenButton && ___EmotionJSX(FullScreenButton, {
175
+ isFullScreen: isFullScreen,
176
+ toggleFullScreen: toggleFullScreen
177
+ }), showCopyButton && ___EmotionJSX(CopyButton, {
178
+ textToCopy: textToCopy
179
+ }));
180
+ }
181
+ }, [isFullScreen, toggleFullScreen, showCopyButton, showFullScreenButton, textToCopy]);
175
182
  return ___EmotionJSX("div", wrapperProps, isVirtualized ? ___EmotionJSX(VirtualizedCodeBlock, {
176
183
  data: data,
177
184
  rowHeight: fontSizeToRowHeightMap[fontSize],
@@ -181,10 +188,10 @@ export var EuiCodeBlock = function EuiCodeBlock(_ref) {
181
188
  codeProps: codeProps
182
189
  }) : ___EmotionJSX("pre", {
183
190
  ref: combinedRef,
184
- style: optionalStyles,
191
+ style: overflowHeightStyles,
185
192
  className: preClasses,
186
193
  tabIndex: tabIndex
187
- }, ___EmotionJSX("code", codeProps, content)), codeBlockControls, ___EmotionJSX(FullScreenDisplay, {
194
+ }, ___EmotionJSX("code", codeProps, content)), codeBlockControls, isFullScreen && ___EmotionJSX(FullScreenDisplay, {
188
195
  className: wrapperClasses
189
196
  }, isVirtualized ? ___EmotionJSX(VirtualizedCodeBlock, {
190
197
  data: data,
@@ -241,10 +248,27 @@ var useOverflowDetection = function useOverflowDetection() {
241
248
  */
242
249
 
243
250
 
244
- var useCopy = function useCopy(_ref2) {
245
- var isCopyable = _ref2.isCopyable,
246
- isVirtualized = _ref2.isVirtualized,
247
- children = _ref2.children;
251
+ var CopyButton = function CopyButton(_ref3) {
252
+ var textToCopy = _ref3.textToCopy;
253
+ var copyButton = useEuiI18n('euiCodeBlock.copyButton', 'Copy');
254
+ return ___EmotionJSX("div", {
255
+ className: "euiCodeBlock__copyButton"
256
+ }, ___EmotionJSX(EuiCopy, {
257
+ textToCopy: textToCopy
258
+ }, function (copy) {
259
+ return ___EmotionJSX(EuiButtonIcon, {
260
+ onClick: copy,
261
+ iconType: "copyClipboard",
262
+ color: "text",
263
+ "aria-label": copyButton
264
+ });
265
+ }));
266
+ };
267
+
268
+ var useCopy = function useCopy(_ref4) {
269
+ var isCopyable = _ref4.isCopyable,
270
+ isVirtualized = _ref4.isVirtualized,
271
+ children = _ref4.children;
248
272
 
249
273
  var _useInnerText = useInnerText(''),
250
274
  _useInnerText2 = _slicedToArray(_useInnerText, 2),
@@ -257,32 +281,10 @@ var useCopy = function useCopy(_ref2) {
257
281
  var textToCopy = isVirtualized ? "".concat(children) : innerText; // Virtualized code blocks do not have inner text
258
282
 
259
283
  var showCopyButton = isCopyable && textToCopy;
260
-
261
- var CopyButton = function CopyButton() {
262
- if (!showCopyButton) return null;
263
- return ___EmotionJSX("div", {
264
- className: "euiCodeBlock__copyButton"
265
- }, ___EmotionJSX(EuiI18n, {
266
- token: "euiCodeBlock.copyButton",
267
- default: "Copy"
268
- }, function (copyButton) {
269
- return ___EmotionJSX(EuiCopy, {
270
- textToCopy: textToCopy
271
- }, function (copy) {
272
- return ___EmotionJSX(EuiButtonIcon, {
273
- onClick: copy,
274
- iconType: "copyClipboard",
275
- color: "text",
276
- "aria-label": copyButton
277
- });
278
- });
279
- }));
280
- };
281
-
282
284
  return {
283
285
  innerTextRef: innerTextRef,
284
286
  showCopyButton: showCopyButton,
285
- CopyButton: CopyButton
287
+ textToCopy: textToCopy
286
288
  };
287
289
  };
288
290
  /**
@@ -290,18 +292,50 @@ var useCopy = function useCopy(_ref2) {
290
292
  */
291
293
 
292
294
 
293
- var useFullScreen = function useFullScreen(_ref3) {
294
- var overflowHeight = _ref3.overflowHeight;
295
+ var FullScreenButton = function FullScreenButton(_ref5) {
296
+ var isFullScreen = _ref5.isFullScreen,
297
+ toggleFullScreen = _ref5.toggleFullScreen;
298
+
299
+ var _useEuiI18n = useEuiI18n(['euiCodeBlock.fullscreenCollapse', 'euiCodeBlock.fullscreenExpand'], ['Collapse', 'Expand']),
300
+ _useEuiI18n2 = _slicedToArray(_useEuiI18n, 2),
301
+ fullscreenCollapse = _useEuiI18n2[0],
302
+ fullscreenExpand = _useEuiI18n2[1];
303
+
304
+ return ___EmotionJSX(EuiButtonIcon, {
305
+ className: "euiCodeBlock__fullScreenButton",
306
+ onClick: toggleFullScreen,
307
+ iconType: isFullScreen ? 'fullScreenExit' : 'fullScreen',
308
+ color: "text",
309
+ "aria-label": isFullScreen ? fullscreenCollapse : fullscreenExpand
310
+ });
311
+ };
312
+
313
+ var FullScreenDisplay = function FullScreenDisplay(_ref6) {
314
+ var children = _ref6.children,
315
+ className = _ref6.className;
316
+ // Force fullscreen to use large font and padding.
317
+ var fullScreenClasses = classNames(className, 'euiCodeBlock--fontLarge', 'euiCodeBlock--paddingLarge', 'euiCodeBlock-isFullScreen'); // Attaches to the body because of EuiOverlayMask's React portal usage.
318
+
319
+ return ___EmotionJSX(EuiOverlayMask, null, ___EmotionJSX(EuiFocusTrap, {
320
+ clickOutsideDisables: true
321
+ }, ___EmotionJSX("div", {
322
+ className: fullScreenClasses
323
+ }, children)));
324
+ };
325
+
326
+ var useFullScreen = function useFullScreen(_ref7) {
327
+ var overflowHeight = _ref7.overflowHeight;
295
328
 
296
329
  var _useState5 = useState(false),
297
330
  _useState6 = _slicedToArray(_useState5, 2),
298
331
  isFullScreen = _useState6[0],
299
332
  setIsFullScreen = _useState6[1];
300
333
 
301
- var toggleFullScreen = function toggleFullScreen() {
302
- setIsFullScreen(!isFullScreen);
303
- };
304
-
334
+ var toggleFullScreen = useCallback(function () {
335
+ setIsFullScreen(function (isFullScreen) {
336
+ return !isFullScreen;
337
+ });
338
+ }, []);
305
339
  var onKeyDown = useCallback(function (event) {
306
340
  if (event.key === keys.ESCAPE) {
307
341
  event.preventDefault();
@@ -310,45 +344,10 @@ var useFullScreen = function useFullScreen(_ref3) {
310
344
  }
311
345
  }, []);
312
346
  var showFullScreenButton = !!overflowHeight;
313
-
314
- var FullScreenButton = function FullScreenButton() {
315
- if (!showFullScreenButton) return null;
316
- return ___EmotionJSX(EuiI18n, {
317
- tokens: ['euiCodeBlock.fullscreenCollapse', 'euiCodeBlock.fullscreenExpand'],
318
- defaults: ['Collapse', 'Expand']
319
- }, function (_ref4) {
320
- var _ref5 = _slicedToArray(_ref4, 2),
321
- fullscreenCollapse = _ref5[0],
322
- fullscreenExpand = _ref5[1];
323
-
324
- return ___EmotionJSX(EuiButtonIcon, {
325
- className: "euiCodeBlock__fullScreenButton",
326
- onClick: toggleFullScreen,
327
- iconType: isFullScreen ? 'fullScreenExit' : 'fullScreen',
328
- color: "text",
329
- "aria-label": isFullScreen ? fullscreenCollapse : fullscreenExpand
330
- });
331
- });
332
- };
333
-
334
- var FullScreenDisplay = function FullScreenDisplay(_ref6) {
335
- var children = _ref6.children,
336
- className = _ref6.className;
337
- if (!isFullScreen) return null; // Force fullscreen to use large font and padding.
338
-
339
- var fullScreenClasses = classNames(className, 'euiCodeBlock--fontLarge', 'euiCodeBlock--paddingLarge', 'euiCodeBlock-isFullScreen'); // Attaches to the body because of EuiOverlayMask's React portal usage.
340
-
341
- return ___EmotionJSX(EuiOverlayMask, null, ___EmotionJSX(EuiFocusTrap, {
342
- clickOutsideDisables: true
343
- }, ___EmotionJSX("div", {
344
- className: fullScreenClasses
345
- }, children)));
346
- };
347
-
348
347
  return {
349
348
  showFullScreenButton: showFullScreenButton,
350
- FullScreenButton: FullScreenButton,
351
- FullScreenDisplay: FullScreenDisplay,
349
+ isFullScreen: isFullScreen,
350
+ toggleFullScreen: toggleFullScreen,
352
351
  onKeyDown: onKeyDown
353
352
  };
354
353
  };
@@ -357,21 +356,21 @@ var useFullScreen = function useFullScreen(_ref3) {
357
356
  */
358
357
 
359
358
 
360
- var ListRow = function ListRow(_ref7) {
361
- var data = _ref7.data,
362
- index = _ref7.index,
363
- style = _ref7.style;
359
+ var ListRow = function ListRow(_ref8) {
360
+ var data = _ref8.data,
361
+ index = _ref8.index,
362
+ style = _ref8.style;
364
363
  var row = data[index];
365
364
  row.properties.style = style;
366
365
  return nodeToHtml(row, index, data, 0);
367
366
  };
368
367
 
369
- var VirtualizedCodeBlock = function VirtualizedCodeBlock(_ref8) {
370
- var data = _ref8.data,
371
- rowHeight = _ref8.rowHeight,
372
- overflowHeight = _ref8.overflowHeight,
373
- preProps = _ref8.preProps,
374
- codeProps = _ref8.codeProps;
368
+ var VirtualizedCodeBlock = function VirtualizedCodeBlock(_ref9) {
369
+ var data = _ref9.data,
370
+ rowHeight = _ref9.rowHeight,
371
+ overflowHeight = _ref9.overflowHeight,
372
+ preProps = _ref9.preProps,
373
+ codeProps = _ref9.codeProps;
375
374
  var VirtualizedOuterElement = useMemo(function () {
376
375
  return /*#__PURE__*/forwardRef(function (props, ref) {
377
376
  return ___EmotionJSX("pre", _extends({}, props, {
@@ -388,9 +387,9 @@ var VirtualizedCodeBlock = function VirtualizedCodeBlock(_ref8) {
388
387
  }, [codeProps]);
389
388
  return ___EmotionJSX(EuiAutoSizer, {
390
389
  disableHeight: typeof overflowHeight === 'number'
391
- }, function (_ref9) {
392
- var height = _ref9.height,
393
- width = _ref9.width;
390
+ }, function (_ref10) {
391
+ var height = _ref10.height,
392
+ width = _ref10.width;
394
393
  return ___EmotionJSX(FixedSizeList, {
395
394
  height: height !== null && height !== void 0 ? height : overflowHeight,
396
395
  width: width,
@@ -320,6 +320,8 @@ export var EuiDataGridBody = function EuiDataGridBody(props) {
320
320
 
321
321
  var rowHeightUtils = useRowHeightUtils({
322
322
  gridRef: gridRef,
323
+ outerGridElementRef: outerGridRef,
324
+ gridItemsRenderedRef: gridItemsRendered,
323
325
  gridStyles: gridStyles,
324
326
  columns: columns,
325
327
  rowHeightsOptions: rowHeightsOptions