@elastic/eui 123.1.0 → 123.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 (293) hide show
  1. package/dist/eui-icons.json +94 -93
  2. package/dist/svgs/product_agent.svg +3 -4
  3. package/dist/svgs/ruler.svg +3 -0
  4. package/es/components/accordion/accordion_children/accordion_children.js +3 -4
  5. package/es/components/accordion/accordion_trigger/accordion_arrow.js +2 -3
  6. package/es/components/accordion/accordion_trigger/accordion_button.js +2 -3
  7. package/es/components/avatar/avatar.js +1 -1
  8. package/es/components/badge/badge.js +2 -3
  9. package/es/components/badge/badge.styles.js +4 -13
  10. package/es/components/badge/beta_badge/beta_badge.js +1 -1
  11. package/es/components/basic_table/basic_table.js +4 -4
  12. package/es/components/basic_table/in_memory_table.js +4 -4
  13. package/es/components/button/button_display/_button_display_content.js +1 -1
  14. package/es/components/button/button_empty/button_empty.js +1 -1
  15. package/es/components/button/button_icon/button_icon.js +1 -1
  16. package/es/components/call_out/call_out.js +2 -2
  17. package/es/components/card/card.js +5 -5
  18. package/es/components/card/card.styles.js +22 -0
  19. package/es/components/card/checkable_card/checkable_card.js +4 -1
  20. package/es/components/code/utils.js +1 -1
  21. package/es/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  22. package/es/components/comment_list/comment.js +2 -2
  23. package/es/components/comment_list/comment_event.js +1 -1
  24. package/es/components/comment_list/comment_list.js +2 -2
  25. package/es/components/comment_list/comment_timeline.js +1 -1
  26. package/es/components/context_menu/context_menu_item.js +1 -1
  27. package/es/components/datagrid/body/cell/data_grid_cell.js +24 -24
  28. package/es/components/datagrid/body/data_grid_body.js +13 -13
  29. package/es/components/datagrid/body/data_grid_body_custom.js +13 -13
  30. package/es/components/datagrid/body/data_grid_body_virtualized.js +13 -13
  31. package/es/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  32. package/es/components/datagrid/controls/column_sorting.js +13 -13
  33. package/es/components/datagrid/controls/column_sorting_draggable.js +1 -1
  34. package/es/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  35. package/es/components/datagrid/utils/in_memory.js +12 -12
  36. package/es/components/date_picker/date_picker.js +2 -2
  37. package/es/components/date_picker/date_picker_range.js +1 -1
  38. package/es/components/empty_prompt/empty_prompt.js +1 -1
  39. package/es/components/flyout/flyout_menu/flyout_menu.js +2 -2
  40. package/es/components/flyout/flyout_menu/flyout_menu.styles.js +2 -5
  41. package/es/components/flyout/use_flyout_resizable.js +108 -53
  42. package/es/components/form/field_number/field_number.js +2 -2
  43. package/es/components/form/field_text/field_text.js +2 -2
  44. package/es/components/form/form_control_button/form_control_button.js +1 -1
  45. package/es/components/form/form_control_layout/append_prepend/form_append_prepend.js +2 -2
  46. package/es/components/form/form_control_layout/form_control_layout.js +2 -2
  47. package/es/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  48. package/es/components/form/form_control_layout/form_control_layout_icons.js +2 -3
  49. package/es/components/form/text_area/text_area.js +2 -2
  50. package/es/components/header/header_links/header_link.js +1 -1
  51. package/es/components/header/header_links/header_links.js +1 -1
  52. package/es/components/header/header_section/header_section_item_button.js +1 -1
  53. package/es/components/icon/assets/product_agent.js +2 -6
  54. package/es/components/icon/assets/ruler.js +35 -0
  55. package/es/components/icon/icon.js +1 -1
  56. package/es/components/icon/icon_map.js +5 -0
  57. package/es/components/icon/svgs/product_agent.svg +3 -4
  58. package/es/components/icon/svgs/ruler.svg +3 -0
  59. package/es/components/key_pad_menu/key_pad_menu_item.js +4 -3
  60. package/es/components/list_group/list_group.js +2 -2
  61. package/es/components/list_group/list_group_item.js +2 -2
  62. package/es/components/list_group/list_group_item_extra_action.js +1 -1
  63. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  64. package/es/components/loading/loading_logo.js +1 -1
  65. package/es/components/markdown_editor/markdown_editor.js +1 -1
  66. package/es/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  67. package/es/components/markdown_editor/markdown_editor_footer.js +1 -1
  68. package/es/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  69. package/es/components/page/page_header/page_header_content.js +1 -1
  70. package/es/components/pagination/pagination_button.js +1 -1
  71. package/es/components/progress/progress.js +5 -5
  72. package/es/components/progress/progress.styles.js +7 -0
  73. package/es/components/selectable/selectable_list/selectable_list.js +1 -1
  74. package/es/components/selectable/selectable_list/selectable_list_item.js +1 -1
  75. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  76. package/es/components/table/table_header_cell.js +1 -1
  77. package/es/components/timeline/timeline_item_icon.js +1 -1
  78. package/es/components/toast/global_toast_list.js +2 -2
  79. package/es/components/toast/toast.js +2 -2
  80. package/es/components/toast/toast.styles.js +9 -15
  81. package/es/components/token/token.js +4 -9
  82. package/es/components/token/token.styles.js +13 -0
  83. package/es/components/tool_tip/icon_tip.js +1 -1
  84. package/es/components/tree_view/tree_view.js +5 -5
  85. package/eui.d.ts +93 -17
  86. package/lib/components/accordion/accordion_children/accordion_children.js +2 -3
  87. package/lib/components/accordion/accordion_trigger/accordion_arrow.js +1 -2
  88. package/lib/components/accordion/accordion_trigger/accordion_button.js +1 -2
  89. package/lib/components/avatar/avatar.js +1 -1
  90. package/lib/components/badge/badge.js +2 -3
  91. package/lib/components/badge/badge.styles.js +4 -13
  92. package/lib/components/badge/beta_badge/beta_badge.js +1 -1
  93. package/lib/components/basic_table/basic_table.js +4 -4
  94. package/lib/components/basic_table/in_memory_table.js +4 -4
  95. package/lib/components/button/button_display/_button_display_content.js +1 -1
  96. package/lib/components/button/button_empty/button_empty.js +1 -1
  97. package/lib/components/button/button_icon/button_icon.js +1 -1
  98. package/lib/components/call_out/call_out.js +2 -2
  99. package/lib/components/card/card.js +3 -3
  100. package/lib/components/card/card.styles.js +23 -1
  101. package/lib/components/card/checkable_card/checkable_card.js +4 -1
  102. package/lib/components/code/utils.js +1 -1
  103. package/lib/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  104. package/lib/components/comment_list/comment.js +2 -2
  105. package/lib/components/comment_list/comment_event.js +1 -1
  106. package/lib/components/comment_list/comment_list.js +2 -2
  107. package/lib/components/comment_list/comment_timeline.js +1 -1
  108. package/lib/components/context_menu/context_menu_item.js +1 -1
  109. package/lib/components/datagrid/body/cell/data_grid_cell.js +24 -24
  110. package/lib/components/datagrid/body/data_grid_body.js +13 -13
  111. package/lib/components/datagrid/body/data_grid_body_custom.js +13 -13
  112. package/lib/components/datagrid/body/data_grid_body_virtualized.js +13 -13
  113. package/lib/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  114. package/lib/components/datagrid/controls/column_sorting.js +13 -13
  115. package/lib/components/datagrid/controls/column_sorting_draggable.js +1 -1
  116. package/lib/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  117. package/lib/components/datagrid/utils/in_memory.js +12 -12
  118. package/lib/components/date_picker/date_picker.js +2 -2
  119. package/lib/components/date_picker/date_picker_range.js +1 -1
  120. package/lib/components/empty_prompt/empty_prompt.js +1 -1
  121. package/lib/components/flyout/flyout_menu/flyout_menu.js +2 -2
  122. package/lib/components/flyout/flyout_menu/flyout_menu.styles.js +2 -5
  123. package/lib/components/flyout/use_flyout_resizable.js +107 -52
  124. package/lib/components/form/field_number/field_number.js +2 -2
  125. package/lib/components/form/field_text/field_text.js +2 -2
  126. package/lib/components/form/form_control_button/form_control_button.js +1 -1
  127. package/lib/components/form/form_control_layout/append_prepend/form_append_prepend.js +2 -2
  128. package/lib/components/form/form_control_layout/form_control_layout.js +2 -2
  129. package/lib/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  130. package/lib/components/form/form_control_layout/form_control_layout_icons.js +1 -2
  131. package/lib/components/form/text_area/text_area.js +2 -2
  132. package/lib/components/header/header_links/header_link.js +1 -1
  133. package/lib/components/header/header_links/header_links.js +1 -1
  134. package/lib/components/header/header_section/header_section_item_button.js +1 -1
  135. package/lib/components/icon/assets/product_agent.js +2 -6
  136. package/lib/components/icon/assets/ruler.js +42 -0
  137. package/lib/components/icon/icon.js +1 -1
  138. package/lib/components/icon/icon_map.js +7 -0
  139. package/lib/components/icon/svgs/product_agent.svg +3 -4
  140. package/lib/components/icon/svgs/ruler.svg +3 -0
  141. package/lib/components/key_pad_menu/key_pad_menu_item.js +4 -3
  142. package/lib/components/list_group/list_group.js +2 -2
  143. package/lib/components/list_group/list_group_item.js +2 -2
  144. package/lib/components/list_group/list_group_item_extra_action.js +1 -1
  145. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  146. package/lib/components/loading/loading_logo.js +1 -1
  147. package/lib/components/markdown_editor/markdown_editor.js +1 -1
  148. package/lib/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  149. package/lib/components/markdown_editor/markdown_editor_footer.js +1 -1
  150. package/lib/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  151. package/lib/components/page/page_header/page_header_content.js +1 -1
  152. package/lib/components/pagination/pagination_button.js +1 -1
  153. package/lib/components/progress/progress.js +3 -3
  154. package/lib/components/progress/progress.styles.js +8 -1
  155. package/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  156. package/lib/components/selectable/selectable_list/selectable_list_item.js +1 -1
  157. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  158. package/lib/components/table/table_header_cell.js +1 -1
  159. package/lib/components/timeline/timeline_item_icon.js +1 -1
  160. package/lib/components/toast/global_toast_list.js +2 -2
  161. package/lib/components/toast/toast.js +2 -2
  162. package/lib/components/toast/toast.styles.js +9 -15
  163. package/lib/components/token/token.js +2 -9
  164. package/lib/components/token/token.styles.js +14 -1
  165. package/lib/components/tool_tip/icon_tip.js +1 -1
  166. package/lib/components/tree_view/tree_view.js +4 -4
  167. package/optimize/es/components/accordion/accordion_children/accordion_children.js +3 -4
  168. package/optimize/es/components/accordion/accordion_trigger/accordion_arrow.js +2 -3
  169. package/optimize/es/components/accordion/accordion_trigger/accordion_button.js +2 -3
  170. package/optimize/es/components/badge/badge.js +1 -2
  171. package/optimize/es/components/badge/badge.styles.js +4 -13
  172. package/optimize/es/components/card/card.js +4 -4
  173. package/optimize/es/components/card/card.styles.js +22 -0
  174. package/optimize/es/components/card/checkable_card/checkable_card.js +4 -1
  175. package/optimize/es/components/code/utils.js +1 -1
  176. package/optimize/es/components/flyout/flyout_menu/flyout_menu.styles.js +2 -5
  177. package/optimize/es/components/flyout/use_flyout_resizable.js +108 -53
  178. package/optimize/es/components/form/form_control_layout/form_control_layout_icons.js +2 -3
  179. package/optimize/es/components/icon/assets/product_agent.js +2 -6
  180. package/optimize/es/components/icon/assets/ruler.js +34 -0
  181. package/optimize/es/components/icon/icon_map.js +5 -0
  182. package/optimize/es/components/icon/svgs/product_agent.svg +3 -4
  183. package/optimize/es/components/icon/svgs/ruler.svg +3 -0
  184. package/optimize/es/components/key_pad_menu/key_pad_menu_item.js +3 -2
  185. package/optimize/es/components/progress/progress.js +5 -5
  186. package/optimize/es/components/progress/progress.styles.js +7 -0
  187. package/optimize/es/components/toast/toast.styles.js +9 -15
  188. package/optimize/es/components/token/token.js +4 -9
  189. package/optimize/es/components/token/token.styles.js +13 -0
  190. package/optimize/es/components/tree_view/tree_view.js +5 -5
  191. package/optimize/lib/components/accordion/accordion_children/accordion_children.js +2 -3
  192. package/optimize/lib/components/accordion/accordion_trigger/accordion_arrow.js +1 -2
  193. package/optimize/lib/components/accordion/accordion_trigger/accordion_button.js +1 -2
  194. package/optimize/lib/components/badge/badge.js +1 -2
  195. package/optimize/lib/components/badge/badge.styles.js +4 -13
  196. package/optimize/lib/components/card/card.js +2 -2
  197. package/optimize/lib/components/card/card.styles.js +23 -1
  198. package/optimize/lib/components/card/checkable_card/checkable_card.js +4 -1
  199. package/optimize/lib/components/code/utils.js +1 -1
  200. package/optimize/lib/components/flyout/flyout_menu/flyout_menu.styles.js +2 -5
  201. package/optimize/lib/components/flyout/use_flyout_resizable.js +107 -52
  202. package/optimize/lib/components/form/form_control_layout/form_control_layout_icons.js +1 -2
  203. package/optimize/lib/components/icon/assets/product_agent.js +2 -6
  204. package/optimize/lib/components/icon/assets/ruler.js +42 -0
  205. package/optimize/lib/components/icon/icon_map.js +7 -0
  206. package/optimize/lib/components/icon/svgs/product_agent.svg +3 -4
  207. package/optimize/lib/components/icon/svgs/ruler.svg +3 -0
  208. package/optimize/lib/components/key_pad_menu/key_pad_menu_item.js +3 -2
  209. package/optimize/lib/components/progress/progress.js +3 -3
  210. package/optimize/lib/components/progress/progress.styles.js +8 -1
  211. package/optimize/lib/components/toast/toast.styles.js +9 -15
  212. package/optimize/lib/components/token/token.js +2 -10
  213. package/optimize/lib/components/token/token.styles.js +14 -1
  214. package/optimize/lib/components/tree_view/tree_view.js +4 -4
  215. package/package.json +1 -1
  216. package/test-env/components/accordion/accordion_children/accordion_children.js +2 -3
  217. package/test-env/components/accordion/accordion_trigger/accordion_arrow.js +1 -2
  218. package/test-env/components/accordion/accordion_trigger/accordion_button.js +1 -2
  219. package/test-env/components/avatar/avatar.js +1 -1
  220. package/test-env/components/badge/badge.js +2 -3
  221. package/test-env/components/badge/badge.styles.js +4 -13
  222. package/test-env/components/badge/beta_badge/beta_badge.js +1 -1
  223. package/test-env/components/basic_table/basic_table.js +4 -4
  224. package/test-env/components/basic_table/in_memory_table.js +4 -4
  225. package/test-env/components/button/button_display/_button_display_content.js +1 -1
  226. package/test-env/components/button/button_empty/button_empty.js +1 -1
  227. package/test-env/components/button/button_icon/button_icon.js +1 -1
  228. package/test-env/components/call_out/call_out.js +2 -2
  229. package/test-env/components/card/card.js +3 -3
  230. package/test-env/components/card/card.styles.js +23 -1
  231. package/test-env/components/card/checkable_card/checkable_card.js +4 -1
  232. package/test-env/components/code/utils.js +1 -1
  233. package/test-env/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  234. package/test-env/components/comment_list/comment.js +2 -2
  235. package/test-env/components/comment_list/comment_event.js +1 -1
  236. package/test-env/components/comment_list/comment_list.js +2 -2
  237. package/test-env/components/comment_list/comment_timeline.js +1 -1
  238. package/test-env/components/context_menu/context_menu_item.js +1 -1
  239. package/test-env/components/datagrid/body/cell/data_grid_cell.js +24 -24
  240. package/test-env/components/datagrid/body/data_grid_body.js +13 -13
  241. package/test-env/components/datagrid/body/data_grid_body_custom.js +13 -13
  242. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +13 -13
  243. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  244. package/test-env/components/datagrid/controls/column_sorting.js +13 -13
  245. package/test-env/components/datagrid/controls/column_sorting_draggable.js +1 -1
  246. package/test-env/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  247. package/test-env/components/datagrid/utils/in_memory.js +12 -12
  248. package/test-env/components/date_picker/date_picker.js +2 -2
  249. package/test-env/components/date_picker/date_picker_range.js +1 -1
  250. package/test-env/components/empty_prompt/empty_prompt.js +1 -1
  251. package/test-env/components/flyout/flyout_menu/flyout_menu.js +2 -2
  252. package/test-env/components/flyout/flyout_menu/flyout_menu.styles.js +2 -5
  253. package/test-env/components/flyout/use_flyout_resizable.js +107 -52
  254. package/test-env/components/form/field_number/field_number.js +2 -2
  255. package/test-env/components/form/field_text/field_text.js +2 -2
  256. package/test-env/components/form/form_control_button/form_control_button.js +1 -1
  257. package/test-env/components/form/form_control_layout/append_prepend/form_append_prepend.js +2 -2
  258. package/test-env/components/form/form_control_layout/form_control_layout.js +2 -2
  259. package/test-env/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  260. package/test-env/components/form/form_control_layout/form_control_layout_icons.js +1 -2
  261. package/test-env/components/form/text_area/text_area.js +2 -2
  262. package/test-env/components/header/header_links/header_link.js +1 -1
  263. package/test-env/components/header/header_links/header_links.js +1 -1
  264. package/test-env/components/header/header_section/header_section_item_button.js +1 -1
  265. package/test-env/components/icon/assets/product_agent.js +2 -6
  266. package/test-env/components/icon/assets/ruler.js +42 -0
  267. package/test-env/components/icon/icon_map.js +7 -0
  268. package/test-env/components/key_pad_menu/key_pad_menu_item.js +4 -3
  269. package/test-env/components/list_group/list_group.js +2 -2
  270. package/test-env/components/list_group/list_group_item.js +2 -2
  271. package/test-env/components/list_group/list_group_item_extra_action.js +1 -1
  272. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  273. package/test-env/components/loading/loading_logo.js +1 -1
  274. package/test-env/components/markdown_editor/markdown_editor.js +1 -1
  275. package/test-env/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  276. package/test-env/components/markdown_editor/markdown_editor_footer.js +1 -1
  277. package/test-env/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  278. package/test-env/components/page/page_header/page_header_content.js +1 -1
  279. package/test-env/components/pagination/pagination_button.js +1 -1
  280. package/test-env/components/progress/progress.js +3 -3
  281. package/test-env/components/progress/progress.styles.js +8 -1
  282. package/test-env/components/selectable/selectable_list/selectable_list.js +1 -1
  283. package/test-env/components/selectable/selectable_list/selectable_list_item.js +1 -1
  284. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  285. package/test-env/components/table/table_header_cell.js +1 -1
  286. package/test-env/components/timeline/timeline_item_icon.js +1 -1
  287. package/test-env/components/toast/global_toast_list.js +2 -2
  288. package/test-env/components/toast/toast.js +2 -2
  289. package/test-env/components/toast/toast.styles.js +9 -15
  290. package/test-env/components/token/token.js +2 -10
  291. package/test-env/components/token/token.styles.js +14 -1
  292. package/test-env/components/tool_tip/icon_tip.js +1 -1
  293. package/test-env/components/tree_view/tree_view.js +4 -4
@@ -8,7 +8,7 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
8
8
  */
9
9
 
10
10
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
11
- import { keys } from '../../services';
11
+ import { keys, useLatest } from '../../services';
12
12
  import { getPosition } from '../resizable_container/helpers';
13
13
  /**
14
14
  * @internal
@@ -23,11 +23,38 @@ export var useEuiFlyoutResizable = function useEuiFlyoutResizable(_ref) {
23
23
  onResize = _ref.onResize,
24
24
  side = _ref.side,
25
25
  _size = _ref.size;
26
+ // Without a `referenceWidth` (standalone flyouts), nothing else re-renders
27
+ // the flyout on window resize, so track the viewport width here
28
+ var _useState = useState(function () {
29
+ return typeof window !== 'undefined' ? window.innerWidth : Infinity;
30
+ }),
31
+ _useState2 = _slicedToArray(_useState, 2),
32
+ windowWidth = _useState2[0],
33
+ setWindowWidth = _useState2[1];
34
+ var tracksWindow = enabled && referenceWidth === undefined;
35
+ useEffect(function () {
36
+ if (!tracksWindow) return;
37
+ var rafId = 0;
38
+ var onWindowResize = function onWindowResize() {
39
+ cancelAnimationFrame(rafId);
40
+ rafId = requestAnimationFrame(function () {
41
+ return setWindowWidth(window.innerWidth);
42
+ });
43
+ };
44
+ // Catch up on resizes that happened while the window was not tracked
45
+ setWindowWidth(window.innerWidth);
46
+ window.addEventListener('resize', onWindowResize);
47
+ return function () {
48
+ cancelAnimationFrame(rafId);
49
+ window.removeEventListener('resize', onWindowResize);
50
+ };
51
+ }, [tracksWindow]);
52
+
26
53
  // Use container width when provided. When referenceWidth is 0 (e.g. container
27
54
  // not yet measured by ResizeObserver), do not fall back to viewport — that
28
55
  // would allow resizing beyond the container (e.g. over a sidebar). Use 0 so
29
56
  // the clamp keeps the flyout at minWidth until the real width is available.
30
- var _referenceWidth = referenceWidth !== undefined ? referenceWidth : typeof window !== 'undefined' ? window.innerWidth : Infinity;
57
+ var _referenceWidth = referenceWidth !== undefined ? referenceWidth : windowWidth;
31
58
  var getFlyoutMinMaxWidth = useCallback(function (width) {
32
59
  var maxResizeWidth = siblingFlyoutWidth ? _referenceWidth * 0.9 - siblingFlyoutWidth : _referenceWidth * 0.9;
33
60
 
@@ -38,14 +65,19 @@ export var useEuiFlyoutResizable = function useEuiFlyoutResizable(_ref) {
38
65
  var upperBound = Math.min(maxWidth || Infinity, maxResizeWidth);
39
66
  return Math.max(minWidth, Math.min(width, upperBound));
40
67
  }, [minWidth, maxWidth, siblingFlyoutWidth, _referenceWidth]);
41
- var _useState = useState(0),
42
- _useState2 = _slicedToArray(_useState, 2),
43
- flyoutWidth = _useState2[0],
44
- setFlyoutWidth = _useState2[1];
45
- var _useState3 = useState(false),
68
+ var _useState3 = useState(0),
46
69
  _useState4 = _slicedToArray(_useState3, 2),
47
- callOnResize = _useState4[0],
48
- setCallOnResize = _useState4[1];
70
+ flyoutWidth = _useState4[0],
71
+ _setFlyoutWidth = _useState4[1];
72
+
73
+ // The last width set, even before it renders. Handlers read it instead of
74
+ // `flyoutWidth`, which is stale until then (e.g. a key press right after
75
+ // mount, before the width from `size` has rendered).
76
+ var flyoutWidthRef = useRef(0);
77
+ var setFlyoutWidth = useCallback(function (width) {
78
+ flyoutWidthRef.current = width;
79
+ _setFlyoutWidth(width);
80
+ }, []);
49
81
 
50
82
  // Must use state for the flyout ref in order for the useEffect to be correctly called after render
51
83
  var _useState5 = useState(null),
@@ -55,10 +87,9 @@ export var useEuiFlyoutResizable = function useEuiFlyoutResizable(_ref) {
55
87
  useEffect(function () {
56
88
  if (!enabled) return; // Don't measure when resizing is disabled
57
89
  if (!flyoutWidth && flyoutRef) {
58
- setCallOnResize(false); // Don't call `onResize` for non-user width changes
59
90
  setFlyoutWidth(getFlyoutMinMaxWidth(flyoutRef.offsetWidth));
60
91
  }
61
- }, [flyoutWidth, flyoutRef, getFlyoutMinMaxWidth, enabled]);
92
+ }, [flyoutWidth, flyoutRef, getFlyoutMinMaxWidth, enabled, setFlyoutWidth]);
62
93
 
63
94
  // Track the previous `_size` prop to distinguish between a consumer size
64
95
  // change (which should reset the width) and a reference-width / constraint
@@ -70,9 +101,13 @@ export var useEuiFlyoutResizable = function useEuiFlyoutResizable(_ref) {
70
101
  // the container / viewport resizes (both shrink AND grow).
71
102
  var prevReferenceWidthRef = useRef(_referenceWidth);
72
103
 
73
- // Update flyout width when consumers pass in a new `size`, or scale
74
- // proportionally and re-clamp when constraints change (e.g. container
75
- // resize, sibling width change).
104
+ // The width last set by a numeric `size` or by the user, before clamping.
105
+ // Clamping always starts from it, so a flyout squeezed by a narrow container
106
+ // returns to this width once there is room again.
107
+ var requestedWidthRef = useRef(null);
108
+
109
+ // Update flyout width when consumers pass in a new `size`, or re-clamp
110
+ // when constraints change (e.g. container resize, sibling width change).
76
111
  useEffect(function () {
77
112
  if (!enabled) return; // Don't update width when resizing is disabled
78
113
 
@@ -80,34 +115,49 @@ export var useEuiFlyoutResizable = function useEuiFlyoutResizable(_ref) {
80
115
  // The consumer's `size` prop actually changed — reset so the new size takes effect
81
116
  prevSizeRef.current = _size;
82
117
  prevReferenceWidthRef.current = _referenceWidth;
83
- setCallOnResize(false);
118
+ requestedWidthRef.current = typeof _size === 'number' ? _size : null;
84
119
  setFlyoutWidth(typeof _size === 'number' ? getFlyoutMinMaxWidth(_size) : 0);
120
+ } else if (typeof _size === 'number') {
121
+ // A numeric `size` is a pixel width, so it is only re-clamped, not scaled
122
+ if (_referenceWidth > 0) {
123
+ var _requestedWidthRef$cu;
124
+ setFlyoutWidth(getFlyoutMinMaxWidth((_requestedWidthRef$cu = requestedWidthRef.current) !== null && _requestedWidthRef$cu !== void 0 ? _requestedWidthRef$cu : _size));
125
+ }
85
126
  } else {
86
127
  var _prevReferenceWidthRe;
87
- // Only constraints changed (referenceWidth, sibling width, etc.) —
88
- // scale the pixel width proportionally to the reference width change
89
- // and then clamp. This preserves the flyout's percentage position in
90
- // both directions (viewport shrink AND grow).
128
+ // Named sizes are percentages — scale the pixel width proportionally to
129
+ // the reference width change and then clamp. This preserves the flyout's
130
+ // percentage position in both directions (viewport shrink AND grow).
91
131
  var prevRefWidth = (_prevReferenceWidthRe = prevReferenceWidthRef.current) !== null && _prevReferenceWidthRe !== void 0 ? _prevReferenceWidthRe : _referenceWidth;
92
132
  prevReferenceWidthRef.current = _referenceWidth;
93
- setFlyoutWidth(function (currentWidth) {
94
- if (currentWidth && prevRefWidth > 0 && _referenceWidth > 0) {
95
- var scaleFactor = _referenceWidth / prevRefWidth;
96
- return getFlyoutMinMaxWidth(currentWidth * scaleFactor);
97
- }
133
+ var currentWidth = flyoutWidthRef.current;
134
+ if (currentWidth && prevRefWidth > 0 && _referenceWidth > 0) {
135
+ var scaleFactor = _referenceWidth / prevRefWidth;
136
+ setFlyoutWidth(getFlyoutMinMaxWidth(currentWidth * scaleFactor));
137
+ } else if (_referenceWidth > 0) {
98
138
  // When reference width was 0 (e.g. container not yet measured), now
99
139
  // that we have a real width, reset from the size prop instead of scaling.
100
- if (_referenceWidth > 0) {
101
- return typeof _size === 'number' ? getFlyoutMinMaxWidth(_size) : 0;
102
- }
103
- return currentWidth;
104
- });
140
+ setFlyoutWidth(0);
141
+ }
105
142
  }
106
- }, [_size, getFlyoutMinMaxWidth, enabled, _referenceWidth]);
143
+ }, [_size, getFlyoutMinMaxWidth, enabled, _referenceWidth, setFlyoutWidth]);
144
+
145
+ // `onResize` is only called from user interactions, never for width changes
146
+ // caused by the consumer or by layout constraints
147
+ var onResizeRef = useLatest(onResize);
148
+ var onUserResize = useCallback(function (width) {
149
+ var _onResizeRef$current;
150
+ requestedWidthRef.current = width;
151
+ (_onResizeRef$current = onResizeRef.current) === null || _onResizeRef$current === void 0 || _onResizeRef$current.call(onResizeRef, width);
152
+ }, [onResizeRef]);
107
153
 
108
154
  // Initial numbers to calculate from, on resize drag start
109
155
  var initialWidth = useRef(0);
110
156
  var initialMouseX = useRef(0);
157
+ var drag = useRef({
158
+ startWidth: 0,
159
+ width: 0
160
+ });
111
161
 
112
162
  // Account for flyout side and logical property direction
113
163
  var direction = useMemo(function () {
@@ -124,27 +174,37 @@ export var useEuiFlyoutResizable = function useEuiFlyoutResizable(_ref) {
124
174
  }
125
175
  var mouseOffset = getPosition(e, true) - initialMouseX.current;
126
176
  var changedFlyoutWidth = initialWidth.current + mouseOffset * direction;
127
- setFlyoutWidth(getFlyoutMinMaxWidth(changedFlyoutWidth));
128
- }, [getFlyoutMinMaxWidth, direction, enabled]);
177
+ drag.current.width = getFlyoutMinMaxWidth(changedFlyoutWidth);
178
+ setFlyoutWidth(drag.current.width);
179
+ }, [getFlyoutMinMaxWidth, direction, enabled, setFlyoutWidth]);
129
180
  var onMouseUp = useCallback(function () {
130
- setCallOnResize(true);
131
181
  if (!enabled) {
132
182
  return;
133
183
  }
134
184
  initialMouseX.current = 0;
185
+
186
+ // Clicking the handle, or dragging against the clamp, changes nothing
187
+ var _drag$current = drag.current,
188
+ startWidth = _drag$current.startWidth,
189
+ width = _drag$current.width;
190
+ if (width !== startWidth) onUserResize(width);
135
191
  window.removeEventListener('mousemove', onMouseMove);
136
192
  window.removeEventListener('mouseup', onMouseUp);
137
193
  window.removeEventListener('touchmove', onMouseMove);
138
194
  window.removeEventListener('touchend', onMouseUp);
139
- }, [onMouseMove, enabled]);
195
+ }, [onMouseMove, onUserResize, enabled]);
140
196
  var onMouseDown = useCallback(function (e) {
141
197
  var _flyoutRef$offsetWidt;
142
- setCallOnResize(false);
143
198
  if (!enabled) {
144
199
  return;
145
200
  }
146
201
  initialMouseX.current = getPosition(e, true);
147
202
  initialWidth.current = (_flyoutRef$offsetWidt = flyoutRef === null || flyoutRef === void 0 ? void 0 : flyoutRef.offsetWidth) !== null && _flyoutRef$offsetWidt !== void 0 ? _flyoutRef$offsetWidt : 0;
203
+ var startWidth = flyoutWidthRef.current;
204
+ drag.current = {
205
+ startWidth: startWidth,
206
+ width: startWidth
207
+ };
148
208
 
149
209
  // Window event listeners instead of React events are used
150
210
  // in case the user's mouse leaves the component
@@ -154,34 +214,29 @@ export var useEuiFlyoutResizable = function useEuiFlyoutResizable(_ref) {
154
214
  window.addEventListener('touchend', onMouseUp);
155
215
  }, [flyoutRef, onMouseMove, onMouseUp, enabled]);
156
216
  var onKeyDown = useCallback(function (e) {
157
- setCallOnResize(true);
158
217
  if (!enabled) {
159
218
  return;
160
219
  }
161
220
  var KEYBOARD_OFFSET = 10;
221
+ var offset;
162
222
  switch (e.key) {
163
223
  case keys.ARROW_RIGHT:
164
- e.preventDefault(); // Safari+VO will screen reader navigate off the button otherwise
165
- setFlyoutWidth(function (flyoutWidth) {
166
- return getFlyoutMinMaxWidth(flyoutWidth + KEYBOARD_OFFSET * direction);
167
- });
224
+ offset = KEYBOARD_OFFSET * direction;
168
225
  break;
169
226
  case keys.ARROW_LEFT:
170
- e.preventDefault(); // Safari+VO will screen reader navigate off the button otherwise
171
- setFlyoutWidth(function (flyoutWidth) {
172
- return getFlyoutMinMaxWidth(flyoutWidth - KEYBOARD_OFFSET * direction);
173
- });
227
+ offset = -KEYBOARD_OFFSET * direction;
228
+ break;
229
+ default:
230
+ return;
174
231
  }
175
- }, [getFlyoutMinMaxWidth, direction, enabled]);
232
+ e.preventDefault(); // Safari+VO will screen reader navigate off the button otherwise
176
233
 
177
- // To reduce unnecessary calls, only fire onResize callback:
178
- // 1. After initial mount / on user width change events only
179
- // 2. If not currently mouse dragging
180
- useEffect(function () {
181
- if (callOnResize && enabled) {
182
- onResize === null || onResize === void 0 || onResize(flyoutWidth);
183
- }
184
- }, [onResize, callOnResize, flyoutWidth, enabled]);
234
+ var currentWidth = flyoutWidthRef.current;
235
+ var newWidth = getFlyoutMinMaxWidth(currentWidth + offset);
236
+ if (newWidth === currentWidth) return; // Already at the clamp
237
+ setFlyoutWidth(newWidth);
238
+ onUserResize(newWidth);
239
+ }, [getFlyoutMinMaxWidth, direction, enabled, onUserResize, setFlyoutWidth]);
185
240
  var size = useMemo(function () {
186
241
  if (enabled && flyoutWidth && _referenceWidth > 0) {
187
242
  var pctValue = flyoutWidth / _referenceWidth * 100;
@@ -11,7 +11,7 @@ var _excluded = ["ref", "side"];
11
11
  */
12
12
 
13
13
  import React from 'react';
14
- import { useEuiTheme } from '../../../services';
14
+ import { useEuiMemoizedStyles } from '../../../services';
15
15
  import { EuiIcon } from '../../icon';
16
16
  import { EuiLoadingSpinner } from '../../loading';
17
17
  import { EuiFormControlLayoutClearButton } from './form_control_layout_clear_button';
@@ -34,8 +34,7 @@ export var EuiFormControlLayoutIcons = function EuiFormControlLayoutIcons(_ref)
34
34
  isLoading = _ref.isLoading,
35
35
  isInvalid = _ref.isInvalid,
36
36
  isDropdown = _ref.isDropdown;
37
- var euiThemeContext = useEuiTheme();
38
- var styles = euiFormControlLayoutIconsStyles(euiThemeContext);
37
+ var styles = useEuiMemoizedStyles(euiFormControlLayoutIconsStyles);
39
38
  var cssStyles = [styles.euiFormControlLayoutIcons, compressed ? styles.compressed : styles.uncompressed].concat(_toConsumableArray(iconsPosition === 'absolute' ? [styles.position.absolute.absolute, compressed ? styles.position.absolute.compressed[side] : styles.position.absolute.uncompressed[side]] : [styles.position.static.static, compressed ? styles.position.static.compressed : styles.position.static.uncompressed]), [isDisabled && styles.disabled]);
40
39
  return ___EmotionJSX("div", {
41
40
  css: cssStyles,
@@ -26,15 +26,11 @@ var EuiIconProductAgent = function EuiIconProductAgent(_ref) {
26
26
  }, props), title ? ___EmotionJSX("title", {
27
27
  id: titleId
28
28
  }, title) : null, ___EmotionJSX("path", {
29
- d: "M10.447 11.523C9.826 12.767 8.59 13 8 13c-.59 0-1.826-.233-2.447-1.477l.894-.447C6.826 11.833 7.59 12 8 12c.41 0 1.174-.167 1.553-.924l.894.447Z"
30
- }), ___EmotionJSX("path", {
31
29
  fillRule: "evenodd",
32
- d: "M5.5 7a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Zm0 1a.5.5 0 1 0 0 1 .5.5 0 0 0 0-1Zm5-1a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Zm0 1a.5.5 0 1 0 0 1 .5.5 0 0 0 0-1Z",
30
+ d: "M9.389 1c.4 0 .783.116 1.078.328.294.212.533.55.533.972V3h1a3 3 0 0 1 3 3v1h1v3h-1v2a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3v-2H0V7h1V6a3 3 0 0 1 3-3h1v-.7c0-.423.239-.76.533-.972A1.85 1.85 0 0 1 6.611 1zM4 4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm2-2v1h4V2z",
33
31
  clipRule: "evenodd"
34
32
  }), ___EmotionJSX("path", {
35
- fillRule: "evenodd",
36
- d: "M8 0a1.5 1.5 0 0 1 .5 2.912V4H11a3 3 0 0 1 3 3h1l.102.005A1 1 0 0 1 16 8v3a1 1 0 0 1-1 1h-1v2a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-2H1a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1h1a3 3 0 0 1 3-3h2.5V2.912A1.498 1.498 0 0 1 8 0ZM5 5a2 2 0 0 0-2 2v7h10V7a2 2 0 0 0-2-2H5Zm-4 6h1V8H1v3Zm13 0h1V8h-1v3ZM8 1a.5.5 0 1 0 0 1 .5.5 0 0 0 0-1Z",
37
- clipRule: "evenodd"
33
+ d: "M5 10h1V7H5zm5 0h1V7h-1z"
38
34
  }));
39
35
  };
40
36
  export var icon = EuiIconProductAgent;
@@ -0,0 +1,34 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["title", "titleId"];
4
+ /*
5
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
6
+ * or more contributor license agreements. Licensed under the Elastic License
7
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
8
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
9
+ * Side Public License, v 1.
10
+ */
11
+
12
+ // THIS IS A GENERATED FILE. DO NOT MODIFY MANUALLY. @see scripts/compile-icons.js
13
+
14
+ import * as React from 'react';
15
+ import { jsx as ___EmotionJSX } from "@emotion/react";
16
+ var EuiIconRuler = function EuiIconRuler(_ref) {
17
+ var title = _ref.title,
18
+ titleId = _ref.titleId,
19
+ props = _objectWithoutProperties(_ref, _excluded);
20
+ return ___EmotionJSX("svg", _extends({
21
+ xmlns: "http://www.w3.org/2000/svg",
22
+ width: 16,
23
+ height: 16,
24
+ viewBox: "0 0 16 16",
25
+ "aria-labelledby": titleId
26
+ }, props), title ? ___EmotionJSX("title", {
27
+ id: titleId
28
+ }, title) : null, ___EmotionJSX("path", {
29
+ fillRule: "evenodd",
30
+ d: "M1.293 11.707a1 1 0 0 1 0-1.414l9-9a1 1 0 0 1 1.414 0l3 3a1 1 0 0 1 0 1.414l-9 9a1 1 0 0 1-1.414 0ZM2 11l3 3 1.146-1.146-1.5-1.5.708-.708 1.5 1.5 1.292-1.292-1-1 .708-.708 1 1 1.292-1.292-1.5-1.5.708-.708 1.5 1.5 1.292-1.292-1-1 .708-.708 1 1L14 5l-3-3Z",
31
+ clipRule: "evenodd"
32
+ }));
33
+ };
34
+ export var icon = EuiIconRuler;
@@ -2037,6 +2037,11 @@ export var typeToPathMap = {
2037
2037
  }, {
2038
2038
  synonyms: ['tree', 'parent']
2039
2039
  }),
2040
+ ruler: withMetadata(function () {
2041
+ return import('./assets/ruler');
2042
+ }, {
2043
+ synonyms: ['ruler', 'measure', 'measurement', 'length', 'scale', 'size']
2044
+ }),
2040
2045
  save: withMetadata(function () {
2041
2046
  return import('./assets/save');
2042
2047
  }, {
@@ -1,5 +1,4 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
- <path d="M10.447 11.523C9.826 12.767 8.59 13 8 13c-.59 0-1.826-.233-2.447-1.477l.894-.447C6.826 11.833 7.59 12 8 12c.41 0 1.174-.167 1.553-.924l.894.447Z"/>
3
- <path fill-rule="evenodd" d="M5.5 7a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Zm0 1a.5.5 0 1 0 0 1 .5.5 0 0 0 0-1Zm5-1a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Zm0 1a.5.5 0 1 0 0 1 .5.5 0 0 0 0-1Z" clip-rule="evenodd"/>
4
- <path fill-rule="evenodd" d="M8 0a1.5 1.5 0 0 1 .5 2.912V4H11a3 3 0 0 1 3 3h1l.102.005A1 1 0 0 1 16 8v3a1 1 0 0 1-1 1h-1v2a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-2H1a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1h1a3 3 0 0 1 3-3h2.5V2.912A1.498 1.498 0 0 1 8 0ZM5 5a2 2 0 0 0-2 2v7h10V7a2 2 0 0 0-2-2H5Zm-4 6h1V8H1v3Zm13 0h1V8h-1v3ZM8 1a.5.5 0 1 0 0 1 .5.5 0 0 0 0-1Z" clip-rule="evenodd"/>
5
- </svg>
2
+ <path fill-rule="evenodd" d="M9.389 1c.4 0 .783.116 1.078.328.294.212.533.55.533.972V3h1a3 3 0 0 1 3 3v1h1v3h-1v2a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3v-2H0V7h1V6a3 3 0 0 1 3-3h1v-.7c0-.423.239-.76.533-.972A1.85 1.85 0 0 1 6.611 1zM4 4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm2-2v1h4V2z" clip-rule="evenodd"/>
3
+ <path d="M5 10h1V7H5zm5 0h1V7h-1z"/>
4
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
+ <path fill-rule="evenodd" d="M1.293 11.707a1 1 0 0 1 0-1.414l9-9a1 1 0 0 1 1.414 0l3 3a1 1 0 0 1 0 1.414l-9 9a1 1 0 0 1-1.414 0ZM2 11l3 3 1.146-1.146-1.5-1.5.708-.708 1.5 1.5 1.292-1.292-1-1 .708-.708 1 1 1.292-1.292-1.5-1.5.708-.708 1.5 1.5 1.292-1.292-1-1 .708-.708 1 1L14 5l-3-3Z" clip-rule="evenodd"/>
3
+ </svg>
@@ -58,11 +58,11 @@ export var EuiKeyPadMenuItem = function EuiKeyPadMenuItem(_ref) {
58
58
  className: 'euiKeyPadMenuItem__checkableInput',
59
59
  css: cssStyles,
60
60
  checked: isSelected,
61
- disabled: isDisabled,
62
- name: name
61
+ disabled: isDisabled
63
62
  };
64
63
  if (checkable === 'single') {
65
64
  return ___EmotionJSX(EuiRadio, _extends({}, sharedProps, {
65
+ name: name,
66
66
  value: value,
67
67
  onChange: function onChange() {
68
68
  return _onChange(itemId, value);
@@ -70,6 +70,7 @@ export var EuiKeyPadMenuItem = function EuiKeyPadMenuItem(_ref) {
70
70
  }));
71
71
  } else {
72
72
  return ___EmotionJSX(EuiCheckbox, _extends({}, sharedProps, {
73
+ name: name,
73
74
  onChange: function onChange() {
74
75
  return _onChange(itemId);
75
76
  }
@@ -14,9 +14,9 @@ import React, { useState, useRef, useEffect } from 'react';
14
14
  import classNames from 'classnames';
15
15
  import { EuiI18n } from '../i18n';
16
16
  import { isNil } from '../../services/predicate';
17
- import { useEuiTheme, makeHighContrastColor } from '../../services';
17
+ import { useEuiTheme, useEuiMemoizedStyles, makeHighContrastColor } from '../../services';
18
18
  import { EuiScreenReaderOnly } from '../accessibility';
19
- import { euiProgressStyles, euiProgressDataStyles, euiProgressLabelStyles, euiProgressValueTextStyles } from './progress.styles';
19
+ import { euiProgressNativeStyles, euiProgressIndeterminateStyles, euiProgressDataStyles, euiProgressLabelStyles, euiProgressValueTextStyles } from './progress.styles';
20
20
  import { jsx as ___EmotionJSX } from "@emotion/react";
21
21
  export var SIZES = ['xs', 's', 'm', 'l'];
22
22
  export var COLORS = ['primary', 'success', 'warning', 'danger', 'subdued', 'accent', 'accentSecondary', 'vis0', 'vis1', 'vis2', 'vis3', 'vis4', 'vis5', 'vis6', 'vis7', 'vis8', 'vis9'];
@@ -58,12 +58,12 @@ export var EuiProgress = function EuiProgress(_ref) {
58
58
  var customTextColorStyles = !isNamedColor ? {
59
59
  color: makeHighContrastColor(color)(euiTheme.euiTheme)
60
60
  } : {};
61
- var styles = euiProgressStyles(euiTheme, determinate);
61
+ var styles = useEuiMemoizedStyles(determinate ? euiProgressNativeStyles : euiProgressIndeterminateStyles);
62
62
  var cssStyles = [styles.euiProgress, determinate && styles.native, !determinate && styles.indeterminate, styles[size], styles[position], isNamedColor ? styles[color] : styles.customColor];
63
- var dataStyles = euiProgressDataStyles(euiTheme);
63
+ var dataStyles = useEuiMemoizedStyles(euiProgressDataStyles);
64
64
  var dataCssStyles = [dataStyles.euiProgress__data, size === 'l' && dataStyles[size]];
65
65
  var labelCssStyles = [euiProgressLabelStyles.euiProgress__label, labelProps === null || labelProps === void 0 ? void 0 : labelProps.css];
66
- var valueTextStyles = euiProgressValueTextStyles(euiTheme);
66
+ var valueTextStyles = useEuiMemoizedStyles(euiProgressValueTextStyles);
67
67
  var valueTextCssStyles = [valueTextStyles.euiProgress__valueText, isNamedColor ? valueTextStyles[color] : styles.customColor];
68
68
  var classes = classNames('euiProgress', className);
69
69
  var labelClasses = classNames('euiProgress__label', labelProps === null || labelProps === void 0 ? void 0 : labelProps.className);
@@ -136,6 +136,13 @@ export var euiProgressStyles = function euiProgressStyles(euiThemeContext, isNat
136
136
  /**
137
137
  * Data styles
138
138
  */
139
+ // Static per-variant generators so `useEuiMemoizedStyles` can share them across instances
140
+ export var euiProgressNativeStyles = function euiProgressNativeStyles(euiThemeContext) {
141
+ return euiProgressStyles(euiThemeContext, true);
142
+ };
143
+ export var euiProgressIndeterminateStyles = function euiProgressIndeterminateStyles(euiThemeContext) {
144
+ return euiProgressStyles(euiThemeContext, false);
145
+ };
139
146
  export var euiProgressDataStyles = function euiProgressDataStyles(euiThemeContext) {
140
147
  return {
141
148
  euiProgress__data: /*#__PURE__*/css("display:flex;justify-content:space-between;gap:", euiThemeContext.euiTheme.size.xs, ";", euiText(euiThemeContext.euiTheme), " ", euiFontSize(euiThemeContext, 'xs'), ";;label:euiProgress__data;"),
@@ -1,5 +1,5 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
- var _templateObject, _templateObject2;
2
+ var _templateObject;
3
3
  /*
4
4
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
5
5
  * or more contributor license agreements. Licensed under the Elastic License
@@ -17,10 +17,7 @@ import { euiPanelBorderStyles } from '../panel/panel.styles';
17
17
  var TEXT_MAX_WIDTH = 1200;
18
18
  var CONTAINER_NAME = 'euiToast';
19
19
  var CQC_BREAKPOINT_NARROWEST = '(max-width: 320px)';
20
- var decorClipSize = '9px'; // the height of the decor clip that includes the border rounding
21
- var decorClipPath = "polygon(0 0, 100% 0, 100% ".concat(decorClipSize, ", 0 ").concat(decorClipSize, ")");
22
- var euiToastAnimation = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n from {\n clip-path: ", ";\n }\n to {\n clip-path: polygon(0 0, 0% 0, 0% ", ", 0 ", ");\n }\n"])), decorClipPath, decorClipSize, decorClipSize);
23
- var euiToastAnimationRTL = keyframes(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n from {\n clip-path: ", ";\n }\n to {\n clip-path: polygon(100% 0, 100% 0, 100% ", ", 100% ", ");\n }\n"])), decorClipPath, decorClipSize, decorClipSize);
20
+ var euiToastAnimation = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n from {\n transform: scaleX(1);\n }\n to {\n transform: scaleX(0);\n }\n"])));
24
21
  export var euiToastStyles = function euiToastStyles(euiThemeContext) {
25
22
  var euiTheme = euiThemeContext.euiTheme,
26
23
  highContrastMode = euiThemeContext.highContrastMode;
@@ -30,26 +27,23 @@ export var euiToastStyles = function euiToastStyles(euiThemeContext) {
30
27
  return highContrastMode ? x * 2 + y : x + y;
31
28
  });
32
29
  var highlightOffset = euiTheme.border.width.thin;
33
- var highlightSizeOffset = mathWithUnits([highlightOffset], function (x) {
34
- return x * 2;
35
- });
36
30
  var paddingTop = mathWithUnits([euiTheme.size.base, highlightSize], function (x, y) {
37
31
  return x + y;
38
32
  });
39
33
  var offsetTop = mathWithUnits([euiTheme.size.s, highlightSize], function (x, y) {
40
34
  return x + y;
41
35
  });
42
- var decorCommonStyles = "\n content: '';\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n block-size: 100%;\n inline-size: 100%;\n border-radius: ".concat(euiTheme.border.radius.panel, ";\n border-end-start-radius: 0;\n border-block-start: ").concat(highlightSize, " solid;\n clip-path: ").concat(decorClipPath, ";\n pointer-events: none;\n\n ").concat(highContrastModeStyles(euiThemeContext, {
43
- preferred: "\n inset-block-start: -".concat(highlightOffset, ";\n inset-inline-start: -").concat(highlightOffset, ";\n inline-size: calc(100% + ").concat(highlightSizeOffset, ");\n ")
44
- }), "\n ");
36
+
37
+ // Straight bar that doesn't follow the border radius of the toast.
38
+ var decorCommonStyles = "\n content: '';\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n inline-size: 100%;\n block-size: ".concat(highlightSize, ";\n pointer-events: none;\n ");
45
39
  return {
46
40
  // Base
47
41
  euiToast: /*#__PURE__*/css("container-type:inline-size;container-name:", CONTAINER_NAME, ";position:relative;border-radius:", borderRadius, ";", euiShadowLarge(euiThemeContext, {
48
42
  borderAllInHighContrastMode: true
49
43
  }), " ", logicalCSS('padding-top', paddingTop), " ", logicalCSS('padding-bottom', euiTheme.size.base), " ", logicalCSS('padding-horizontal', euiTheme.size.base), " background-color:", euiTheme.colors.backgroundBasePlain, ";", logicalCSS('width', '100%'), " ", euiTextBreakWord(), euiPanelBorderStyles(euiThemeContext), ";;label:euiToast;"),
50
- decor: /*#__PURE__*/css("position:absolute;inset:0;pointer-events:none;", preventForcedColors(euiThemeContext), " ", highContrastModeStyles(euiThemeContext, {
51
- preferred: "\n --euiToastTypeBackgroundColor: ".concat(euiTheme.colors.borderBasePlain, ";\n ")
52
- }), " &::before{", decorCommonStyles, " z-index:", decorLevel, ";border-block-start-color:var(--euiToastTypeBackgroundColor);}&::after{", decorCommonStyles, "z-index:", decorLevel + 1, ";border-block-start-color:var(--euiToastTypeColor);};label:decor;"),
44
+ decor: /*#__PURE__*/css("position:absolute;inset:0;border-radius:", borderRadius, ";overflow:hidden;pointer-events:none;", preventForcedColors(euiThemeContext), " ", highContrastModeStyles(euiThemeContext, {
45
+ preferred: "\n --euiToastTypeBackgroundColor: ".concat(euiTheme.colors.borderBasePlain, ";\n /* Cover the high contrast border so the clip matches its outer radius */\n inset-block-start: -").concat(highlightOffset, ";\n inset-inline-start: -").concat(highlightOffset, ";\n inset-inline-end: -").concat(highlightOffset, ";\n ")
46
+ }), " &::before{", decorCommonStyles, " z-index:", decorLevel, ";background-color:var(--euiToastTypeBackgroundColor);}&::after{", decorCommonStyles, "z-index:", decorLevel + 1, ";background-color:var(--euiToastTypeColor);transform-origin:left center;[dir='rtl'] &{transform-origin:right center;}};label:decor;"),
53
47
  // handles content + actions layout
54
48
  wrapper: /*#__PURE__*/css("display:flex;flex-direction:column;gap:", euiTheme.size.m, ";inline-size:100%;;label:wrapper;"),
55
49
  // handles icon + text layout
@@ -60,7 +54,7 @@ export var euiToastStyles = function euiToastStyles(euiThemeContext) {
60
54
  icon: /*#__PURE__*/css("grid-area:icon;position:relative;", logicalCSS('margin-vertical', euiTheme.size.xxs), ";;label:icon;"),
61
55
  actions: /*#__PURE__*/css("grid-area:actions;display:flex;gap:", euiTheme.size.s, ";", logicalCSS('margin-left', euiTheme.size.xl), "@container ", CONTAINER_NAME, " ", CQC_BREAKPOINT_NARROWEST, "{flex-wrap:wrap;>*{inline-size:100%;}};label:actions;"),
62
56
  dismissButton: /*#__PURE__*/css("position:absolute;", logicalCSS('top', offsetTop), ";", logicalCSS('right', euiTheme.size.s), ";;label:dismissButton;"),
63
- hasAnimation: /*#__PURE__*/css("&::after{", euiCanAnimate, "{will-change:clip-path;animation:", euiToastAnimation, " var(--euiToastAnimationMs) linear forwards;[dir='rtl'] &{animation:", euiToastAnimationRTL, " var(--euiToastAnimationMs) linear forwards;}}};label:hasAnimation;")
57
+ hasAnimation: /*#__PURE__*/css("&::after{", euiCanAnimate, "{animation:", euiToastAnimation, " var(--euiToastAnimationMs) linear forwards;}};label:hasAnimation;")
64
58
  };
65
59
  };
66
60
  export var euiToastHeaderStyles = function euiToastHeaderStyles(euiThemeContext) {
@@ -13,13 +13,13 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
13
13
  * Side Public License, v 1.
14
14
  */
15
15
 
16
- import React, { useMemo } from 'react';
16
+ import React from 'react';
17
17
  import classNames from 'classnames';
18
- import { useEuiTheme, isColorDark, hexToRgb } from '../../services';
18
+ import { useEuiMemoizedStyles, isColorDark, hexToRgb } from '../../services';
19
19
  import { EuiIcon } from '../icon';
20
20
  import { TOKEN_MAP } from './token_map';
21
21
  import { COLORS } from './token_types';
22
- import { euiTokenStyles } from './token.styles';
22
+ import { euiTokenFillStyles } from './token.styles';
23
23
  import { jsx as ___EmotionJSX } from "@emotion/react";
24
24
  var isTokenColor = function isTokenColor(color) {
25
25
  return COLORS.includes(color);
@@ -48,7 +48,6 @@ export var EuiToken = function EuiToken(_ref) {
48
48
  if (typeof iconType === 'string' && iconType.indexOf('token') === 0 && size === 's') {
49
49
  finalSize = 'm';
50
50
  }
51
- var euiTheme = useEuiTheme();
52
51
 
53
52
  // If the iconType passed is one of the prefab token types,
54
53
  // grab its properties
@@ -56,11 +55,7 @@ export var EuiToken = function EuiToken(_ref) {
56
55
  var finalColor = color || tokenDefaults.color || 'gray';
57
56
  var finalShape = shape || tokenDefaults.shape || 'circle';
58
57
  var finalFill = fill || 'light';
59
-
60
- // memoize styles to reduce executing contained color calculations
61
- var styles = useMemo(function () {
62
- return euiTokenStyles(euiTheme, finalFill);
63
- }, [euiTheme, finalFill]);
58
+ var styles = useEuiMemoizedStyles(euiTokenFillStyles[finalFill]);
64
59
  var cssStyles = [styles.euiToken, styles[finalShape], styles[finalFill], styles[size]];
65
60
  var finalStyle = style;
66
61
  if (isTokenColor(finalColor)) {
@@ -89,4 +89,17 @@ export var euiTokenStyles = function euiTokenStyles(euiThemeContext, fill) {
89
89
  dark: /*#__PURE__*/css(";label:dark;"),
90
90
  none: /*#__PURE__*/css(";label:none;")
91
91
  };
92
+ };
93
+
94
+ // Static per-fill generators so `useEuiMemoizedStyles` can share them across instances
95
+ export var euiTokenFillStyles = {
96
+ light: function light(euiThemeContext) {
97
+ return euiTokenStyles(euiThemeContext, 'light');
98
+ },
99
+ dark: function dark(euiThemeContext) {
100
+ return euiTokenStyles(euiThemeContext, 'dark');
101
+ },
102
+ none: function none(euiThemeContext) {
103
+ return euiTokenStyles(euiThemeContext, 'none');
104
+ }
92
105
  };
@@ -7,7 +7,7 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstruct
7
7
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
8
  import _inherits from "@babel/runtime/helpers/inherits";
9
9
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
10
- var _excluded = ["children", "className", "items", "display", "expandByDefault", "showExpansionArrows", "theme"];
10
+ var _excluded = ["children", "className", "items", "display", "expandByDefault", "showExpansionArrows", "stylesMemoizer"];
11
11
  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
12
12
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
13
13
  /*
@@ -20,7 +20,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
20
20
 
21
21
  import React, { Component, createContext } from 'react';
22
22
  import classNames from 'classnames';
23
- import { withEuiTheme, keys, htmlIdGenerator } from '../../services';
23
+ import { withEuiStylesMemoizer, keys, htmlIdGenerator } from '../../services';
24
24
  import { EuiI18n } from '../i18n';
25
25
  import { EuiScreenReaderOnly } from '../accessibility';
26
26
  import { EuiTreeViewItem } from './tree_view_item';
@@ -182,9 +182,9 @@ export var EuiTreeViewClass = /*#__PURE__*/function (_Component) {
182
182
  display = _this$props$display === void 0 ? 'default' : _this$props$display,
183
183
  expandByDefault = _this$props.expandByDefault,
184
184
  showExpansionArrows = _this$props.showExpansionArrows,
185
- theme = _this$props.theme,
185
+ stylesMemoizer = _this$props.stylesMemoizer,
186
186
  rest = _objectWithoutProperties(_this$props, _excluded);
187
- var styles = euiTreeViewStyles(theme);
187
+ var styles = stylesMemoizer(euiTreeViewStyles);
188
188
  var cssStyles = [styles.euiTreeView, styles[display]];
189
189
 
190
190
  // Computed classNames
@@ -258,6 +258,6 @@ export var EuiTreeViewClass = /*#__PURE__*/function (_Component) {
258
258
  * @see {@link https://eui.elastic.co/docs/components/navigation/tree-view/|EuiTreeView documentation}
259
259
  */
260
260
  _defineProperty(EuiTreeViewClass, "contextType", EuiTreeViewContext);
261
- export var EuiTreeView = Object.assign(withEuiTheme(EuiTreeViewClass), {
261
+ export var EuiTreeView = Object.assign(withEuiStylesMemoizer(EuiTreeViewClass), {
262
262
  Item: EuiTreeViewItem
263
263
  });
@@ -41,8 +41,7 @@ var EuiAccordionChildren = exports.EuiAccordionChildren = function EuiAccordionC
41
41
  var classes = (0, _classnames.default)('euiAccordion__children', {
42
42
  'euiAccordion__children-isLoading': isLoading
43
43
  });
44
- var euiTheme = (0, _services.useEuiTheme)();
45
- var styles = (0, _accordion_children.euiAccordionChildrenStyles)(euiTheme);
44
+ var styles = (0, _services.useEuiMemoizedStyles)(_accordion_children.euiAccordionChildrenStyles);
46
45
  var cssStyles = [styles.euiAccordion__children, isLoading && styles.isLoading, paddingSize && paddingSize !== 'none' && styles[paddingSize]];
47
46
 
48
47
  /**
@@ -52,7 +51,7 @@ var EuiAccordionChildren = exports.EuiAccordionChildren = function EuiAccordionC
52
51
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
53
52
  hasTransition = _useState2[0],
54
53
  setHasTransition = _useState2[1];
55
- var wrapperStyles = (0, _accordion_children.euiAccordionChildWrapperStyles)(euiTheme);
54
+ var wrapperStyles = (0, _services.useEuiMemoizedStyles)(_accordion_children.euiAccordionChildWrapperStyles);
56
55
  var wrapperCssStyles = [wrapperStyles.euiAccordion__childWrapper, isOpen ? wrapperStyles.isOpen : wrapperStyles.isClosed, initialIsOpen && !hasTransition && isOpen && wrapperStyles.noTransition];
57
56
 
58
57
  /* Controls enabling opening/closing transitions on first interaction
@@ -27,9 +27,8 @@ var EuiAccordionArrow = exports.EuiAccordionArrow = function EuiAccordionArrow(_
27
27
  arrowProps = _ref.arrowProps,
28
28
  isOpen = _ref.isOpen,
29
29
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
30
- var euiTheme = (0, _services.useEuiTheme)();
30
+ var styles = (0, _services.useEuiMemoizedStyles)(_accordion_arrow.euiAccordionArrowStyles);
31
31
  if (arrowDisplay === 'none') return null;
32
- var styles = (0, _accordion_arrow.euiAccordionArrowStyles)(euiTheme);
33
32
  var cssStyles = [styles.euiAccordion__arrow, styles[arrowDisplay], isOpen ? styles.isOpen : styles.isClosed, arrowProps === null || arrowProps === void 0 ? void 0 : arrowProps.css];
34
33
  var classes = (0, _classnames.default)('euiAccordion__arrow', arrowProps === null || arrowProps === void 0 ? void 0 : arrowProps.className);
35
34
  return (0, _react2.jsx)(_button.EuiButtonIcon, (0, _extends2.default)({