@elastic/eui 123.2.0 → 123.3.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 (229) hide show
  1. package/dist/eui-icons.json +92 -91
  2. package/dist/svgs/add_to_chat.svg +3 -5
  3. package/dist/svgs/product_alert_zero.svg +5 -0
  4. package/es/components/avatar/avatar.js +1 -1
  5. package/es/components/badge/badge.js +1 -1
  6. package/es/components/badge/beta_badge/beta_badge.js +1 -1
  7. package/es/components/banner/banner.js +40 -3
  8. package/es/components/basic_table/basic_table.js +4 -4
  9. package/es/components/basic_table/in_memory_table.js +4 -4
  10. package/es/components/button/button_display/_button_display_content.js +1 -1
  11. package/es/components/button/button_empty/button_empty.js +1 -1
  12. package/es/components/button/button_icon/button_icon.js +1 -1
  13. package/es/components/call_out/call_out.js +40 -7
  14. package/es/components/card/card.js +1 -1
  15. package/es/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  16. package/es/components/comment_list/comment.js +2 -2
  17. package/es/components/comment_list/comment_event.js +1 -1
  18. package/es/components/comment_list/comment_list.js +2 -2
  19. package/es/components/comment_list/comment_timeline.js +1 -1
  20. package/es/components/context_menu/context_menu_item.js +1 -1
  21. package/es/components/datagrid/body/cell/data_grid_cell.js +24 -24
  22. package/es/components/datagrid/body/data_grid_body.js +13 -13
  23. package/es/components/datagrid/body/data_grid_body_custom.js +13 -13
  24. package/es/components/datagrid/body/data_grid_body_virtualized.js +13 -13
  25. package/es/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  26. package/es/components/datagrid/controls/column_sorting.js +13 -13
  27. package/es/components/datagrid/controls/column_sorting_draggable.js +1 -1
  28. package/es/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  29. package/es/components/datagrid/utils/in_memory.js +12 -12
  30. package/es/components/date_picker/date_picker.js +2 -2
  31. package/es/components/date_picker/date_picker_range.js +1 -1
  32. package/es/components/empty_prompt/empty_prompt.js +1 -1
  33. package/es/components/flyout/flyout_menu/flyout_menu.js +2 -2
  34. package/es/components/form/field_number/field_number.js +2 -2
  35. package/es/components/form/field_text/field_text.js +2 -2
  36. package/es/components/form/form_control_button/form_control_button.js +1 -1
  37. package/es/components/form/form_control_layout/append_prepend/form_append_prepend.js +2 -2
  38. package/es/components/form/form_control_layout/form_control_layout.js +2 -2
  39. package/es/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  40. package/es/components/form/text_area/text_area.js +2 -2
  41. package/es/components/header/header_links/header_link.js +1 -1
  42. package/es/components/header/header_links/header_links.js +1 -1
  43. package/es/components/header/header_section/header_section_item_button.js +1 -1
  44. package/es/components/icon/assets/add_to_chat.js +2 -10
  45. package/es/components/icon/assets/product_alert_zero.js +33 -0
  46. package/es/components/icon/icon.js +1 -1
  47. package/es/components/icon/icon_map.js +5 -0
  48. package/es/components/icon/svgs/add_to_chat.svg +3 -5
  49. package/es/components/icon/svgs/product_alert_zero.svg +5 -0
  50. package/es/components/key_pad_menu/key_pad_menu_item.js +1 -1
  51. package/es/components/list_group/list_group.js +2 -2
  52. package/es/components/list_group/list_group_item.js +2 -2
  53. package/es/components/list_group/list_group_item_extra_action.js +1 -1
  54. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  55. package/es/components/loading/loading_logo.js +1 -1
  56. package/es/components/markdown_editor/markdown_editor.js +1 -1
  57. package/es/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  58. package/es/components/markdown_editor/markdown_editor_footer.js +1 -1
  59. package/es/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  60. package/es/components/page/page_header/page_header_content.js +1 -1
  61. package/es/components/pagination/pagination_button.js +1 -1
  62. package/es/components/selectable/selectable_list/selectable_list.js +1 -1
  63. package/es/components/selectable/selectable_list/selectable_list_item.js +1 -1
  64. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  65. package/es/components/selectable/selectable_templates/selectable_template_sitewide.styles.js +5 -1
  66. package/es/components/table/table_header_cell.js +1 -1
  67. package/es/components/timeline/timeline_item_icon.js +1 -1
  68. package/es/components/toast/global_toast_list.js +2 -2
  69. package/es/components/toast/toast.js +2 -2
  70. package/es/components/token/token.styles.js +10 -4
  71. package/es/components/tool_tip/icon_tip.js +1 -1
  72. package/es/services/theme/provider.js +86 -101
  73. package/eui.d.ts +23 -11
  74. package/lib/components/avatar/avatar.js +1 -1
  75. package/lib/components/badge/badge.js +1 -1
  76. package/lib/components/badge/beta_badge/beta_badge.js +1 -1
  77. package/lib/components/banner/banner.js +39 -2
  78. package/lib/components/basic_table/basic_table.js +4 -4
  79. package/lib/components/basic_table/in_memory_table.js +4 -4
  80. package/lib/components/button/button_display/_button_display_content.js +1 -1
  81. package/lib/components/button/button_empty/button_empty.js +1 -1
  82. package/lib/components/button/button_icon/button_icon.js +1 -1
  83. package/lib/components/call_out/call_out.js +39 -6
  84. package/lib/components/card/card.js +1 -1
  85. package/lib/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  86. package/lib/components/comment_list/comment.js +2 -2
  87. package/lib/components/comment_list/comment_event.js +1 -1
  88. package/lib/components/comment_list/comment_list.js +2 -2
  89. package/lib/components/comment_list/comment_timeline.js +1 -1
  90. package/lib/components/context_menu/context_menu_item.js +1 -1
  91. package/lib/components/datagrid/body/cell/data_grid_cell.js +24 -24
  92. package/lib/components/datagrid/body/data_grid_body.js +13 -13
  93. package/lib/components/datagrid/body/data_grid_body_custom.js +13 -13
  94. package/lib/components/datagrid/body/data_grid_body_virtualized.js +13 -13
  95. package/lib/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  96. package/lib/components/datagrid/controls/column_sorting.js +13 -13
  97. package/lib/components/datagrid/controls/column_sorting_draggable.js +1 -1
  98. package/lib/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  99. package/lib/components/datagrid/utils/in_memory.js +12 -12
  100. package/lib/components/date_picker/date_picker.js +2 -2
  101. package/lib/components/date_picker/date_picker_range.js +1 -1
  102. package/lib/components/empty_prompt/empty_prompt.js +1 -1
  103. package/lib/components/flyout/flyout_menu/flyout_menu.js +2 -2
  104. package/lib/components/form/field_number/field_number.js +2 -2
  105. package/lib/components/form/field_text/field_text.js +2 -2
  106. package/lib/components/form/form_control_button/form_control_button.js +1 -1
  107. package/lib/components/form/form_control_layout/append_prepend/form_append_prepend.js +2 -2
  108. package/lib/components/form/form_control_layout/form_control_layout.js +2 -2
  109. package/lib/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  110. package/lib/components/form/text_area/text_area.js +2 -2
  111. package/lib/components/header/header_links/header_link.js +1 -1
  112. package/lib/components/header/header_links/header_links.js +1 -1
  113. package/lib/components/header/header_section/header_section_item_button.js +1 -1
  114. package/lib/components/icon/assets/add_to_chat.js +2 -10
  115. package/lib/components/icon/assets/product_alert_zero.js +40 -0
  116. package/lib/components/icon/icon.js +1 -1
  117. package/lib/components/icon/icon_map.js +7 -0
  118. package/lib/components/icon/svgs/add_to_chat.svg +3 -5
  119. package/lib/components/icon/svgs/product_alert_zero.svg +5 -0
  120. package/lib/components/key_pad_menu/key_pad_menu_item.js +1 -1
  121. package/lib/components/list_group/list_group.js +2 -2
  122. package/lib/components/list_group/list_group_item.js +2 -2
  123. package/lib/components/list_group/list_group_item_extra_action.js +1 -1
  124. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  125. package/lib/components/loading/loading_logo.js +1 -1
  126. package/lib/components/markdown_editor/markdown_editor.js +1 -1
  127. package/lib/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  128. package/lib/components/markdown_editor/markdown_editor_footer.js +1 -1
  129. package/lib/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  130. package/lib/components/page/page_header/page_header_content.js +1 -1
  131. package/lib/components/pagination/pagination_button.js +1 -1
  132. package/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  133. package/lib/components/selectable/selectable_list/selectable_list_item.js +1 -1
  134. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  135. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.styles.js +5 -1
  136. package/lib/components/table/table_header_cell.js +1 -1
  137. package/lib/components/timeline/timeline_item_icon.js +1 -1
  138. package/lib/components/toast/global_toast_list.js +2 -2
  139. package/lib/components/toast/toast.js +2 -2
  140. package/lib/components/token/token.styles.js +10 -4
  141. package/lib/components/tool_tip/icon_tip.js +1 -1
  142. package/lib/services/theme/provider.js +85 -102
  143. package/optimize/es/components/banner/banner.js +35 -3
  144. package/optimize/es/components/call_out/call_out.js +33 -5
  145. package/optimize/es/components/icon/assets/add_to_chat.js +2 -10
  146. package/optimize/es/components/icon/assets/product_alert_zero.js +32 -0
  147. package/optimize/es/components/icon/icon_map.js +5 -0
  148. package/optimize/es/components/icon/svgs/add_to_chat.svg +3 -5
  149. package/optimize/es/components/icon/svgs/product_alert_zero.svg +5 -0
  150. package/optimize/es/components/selectable/selectable_templates/selectable_template_sitewide.styles.js +5 -1
  151. package/optimize/es/components/token/token.styles.js +10 -4
  152. package/optimize/es/services/theme/provider.js +82 -97
  153. package/optimize/lib/components/banner/banner.js +34 -2
  154. package/optimize/lib/components/call_out/call_out.js +32 -4
  155. package/optimize/lib/components/icon/assets/add_to_chat.js +2 -10
  156. package/optimize/lib/components/icon/assets/product_alert_zero.js +40 -0
  157. package/optimize/lib/components/icon/icon_map.js +7 -0
  158. package/optimize/lib/components/icon/svgs/add_to_chat.svg +3 -5
  159. package/optimize/lib/components/icon/svgs/product_alert_zero.svg +5 -0
  160. package/optimize/lib/components/selectable/selectable_templates/selectable_template_sitewide.styles.js +5 -1
  161. package/optimize/lib/components/token/token.styles.js +10 -4
  162. package/optimize/lib/services/theme/provider.js +80 -97
  163. package/package.json +6 -6
  164. package/test-env/components/avatar/avatar.js +1 -1
  165. package/test-env/components/badge/badge.js +1 -1
  166. package/test-env/components/badge/beta_badge/beta_badge.js +1 -1
  167. package/test-env/components/banner/banner.js +34 -2
  168. package/test-env/components/basic_table/basic_table.js +4 -4
  169. package/test-env/components/basic_table/in_memory_table.js +4 -4
  170. package/test-env/components/button/button_display/_button_display_content.js +1 -1
  171. package/test-env/components/button/button_empty/button_empty.js +1 -1
  172. package/test-env/components/button/button_icon/button_icon.js +1 -1
  173. package/test-env/components/call_out/call_out.js +34 -6
  174. package/test-env/components/card/card.js +1 -1
  175. package/test-env/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  176. package/test-env/components/comment_list/comment.js +2 -2
  177. package/test-env/components/comment_list/comment_event.js +1 -1
  178. package/test-env/components/comment_list/comment_list.js +2 -2
  179. package/test-env/components/comment_list/comment_timeline.js +1 -1
  180. package/test-env/components/context_menu/context_menu_item.js +1 -1
  181. package/test-env/components/datagrid/body/cell/data_grid_cell.js +24 -24
  182. package/test-env/components/datagrid/body/data_grid_body.js +13 -13
  183. package/test-env/components/datagrid/body/data_grid_body_custom.js +13 -13
  184. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +13 -13
  185. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  186. package/test-env/components/datagrid/controls/column_sorting.js +13 -13
  187. package/test-env/components/datagrid/controls/column_sorting_draggable.js +1 -1
  188. package/test-env/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  189. package/test-env/components/datagrid/utils/in_memory.js +12 -12
  190. package/test-env/components/date_picker/date_picker.js +2 -2
  191. package/test-env/components/date_picker/date_picker_range.js +1 -1
  192. package/test-env/components/empty_prompt/empty_prompt.js +1 -1
  193. package/test-env/components/flyout/flyout_menu/flyout_menu.js +2 -2
  194. package/test-env/components/form/field_number/field_number.js +2 -2
  195. package/test-env/components/form/field_text/field_text.js +2 -2
  196. package/test-env/components/form/form_control_button/form_control_button.js +1 -1
  197. package/test-env/components/form/form_control_layout/append_prepend/form_append_prepend.js +2 -2
  198. package/test-env/components/form/form_control_layout/form_control_layout.js +2 -2
  199. package/test-env/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  200. package/test-env/components/form/text_area/text_area.js +2 -2
  201. package/test-env/components/header/header_links/header_link.js +1 -1
  202. package/test-env/components/header/header_links/header_links.js +1 -1
  203. package/test-env/components/header/header_section/header_section_item_button.js +1 -1
  204. package/test-env/components/icon/assets/add_to_chat.js +2 -10
  205. package/test-env/components/icon/assets/product_alert_zero.js +40 -0
  206. package/test-env/components/icon/icon_map.js +7 -0
  207. package/test-env/components/key_pad_menu/key_pad_menu_item.js +1 -1
  208. package/test-env/components/list_group/list_group.js +2 -2
  209. package/test-env/components/list_group/list_group_item.js +2 -2
  210. package/test-env/components/list_group/list_group_item_extra_action.js +1 -1
  211. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  212. package/test-env/components/loading/loading_logo.js +1 -1
  213. package/test-env/components/markdown_editor/markdown_editor.js +1 -1
  214. package/test-env/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  215. package/test-env/components/markdown_editor/markdown_editor_footer.js +1 -1
  216. package/test-env/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  217. package/test-env/components/page/page_header/page_header_content.js +1 -1
  218. package/test-env/components/pagination/pagination_button.js +1 -1
  219. package/test-env/components/selectable/selectable_list/selectable_list.js +1 -1
  220. package/test-env/components/selectable/selectable_list/selectable_list_item.js +1 -1
  221. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  222. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.styles.js +5 -1
  223. package/test-env/components/table/table_header_cell.js +1 -1
  224. package/test-env/components/timeline/timeline_item_icon.js +1 -1
  225. package/test-env/components/toast/global_toast_list.js +2 -2
  226. package/test-env/components/toast/toast.js +2 -2
  227. package/test-env/components/token/token.styles.js +10 -4
  228. package/test-env/components/tool_tip/icon_tip.js +1 -1
  229. package/test-env/services/theme/provider.js +80 -97
@@ -9,8 +9,8 @@ exports.EuiThemeProvider = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
11
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
14
  var _react = require("@emotion/react");
15
15
  var _react2 = _interopRequireWildcard(require("react"));
16
16
  var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
@@ -34,7 +34,23 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
34
34
  * 2.0 and the Server Side Public License, v 1; you may not use this file except
35
35
  * in compliance with, at your election, the Elastic License 2.0 or the Server
36
36
  * Side Public License, v 1.
37
+ */ /**
38
+ * Caches `value` during render, only swapping in a new one once `isSame`
39
+ * reports that it actually differs from the cached one.
40
+ *
41
+ * This keeps derived objects referentially stable (so that the - comparatively
42
+ * expensive - theme computation isn't rerun on every render) without deferring
43
+ * them to a `useEffect`/`setState` pair. Effect-synchronised state costs an
44
+ * extra commit, in which consumers would see e.g. an updated `colorMode`
45
+ * alongside a theme that is still computed from the previous one.
37
46
  */
47
+ var useStableValue = function useStableValue(value, isSame) {
48
+ var ref = (0, _react2.useRef)(value);
49
+ if (ref.current !== value && !isSame(ref.current, value)) {
50
+ ref.current = value;
51
+ }
52
+ return ref.current;
53
+ };
38
54
  var EuiThemeProvider = exports.EuiThemeProvider = function EuiThemeProvider(_ref) {
39
55
  var _system = _ref.theme,
40
56
  _colorMode = _ref.colorMode,
@@ -63,118 +79,85 @@ var EuiThemeProvider = exports.EuiThemeProvider = function EuiThemeProvider(_ref
63
79
  var EuiConditionalBreakpointProvider = (0, _react2.useMemo)(function () {
64
80
  return isGlobalTheme || _modifications !== null && _modifications !== void 0 && _modifications.breakpoint ? _current_breakpoint.CurrentEuiBreakpointProvider : _react2.Fragment;
65
81
  }, [isGlobalTheme, _modifications]);
66
- var _useState = (0, _react2.useState)(_system || parentSystem),
67
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
68
- system = _useState2[0],
69
- setSystem = _useState2[1];
70
- var prevSystemKey = (0, _react2.useRef)(system.key);
71
- var _useState3 = (0, _react2.useState)((0, _utils.mergeDeep)(parentModifications, _modifications)),
72
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
73
- modifications = _useState4[0],
74
- setModifications = _useState4[1];
75
- var prevModifications = (0, _react2.useRef)(modifications);
76
- var _useState5 = (0, _react2.useState)((0, _utils.getColorMode)(_colorMode, parentColorMode, isForced)),
77
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
78
- colorMode = _useState6[0],
79
- setColorMode = _useState6[1];
80
- var prevColorMode = (0, _react2.useRef)(colorMode);
82
+
83
+ // Every value below is derived from props/parent context during render, so
84
+ // that all context values this provider exposes - most notably `colorMode`
85
+ // and the computed `theme` - always change within the same commit
86
+ var system = useStableValue(_system || parentSystem, function (previous, next) {
87
+ return previous.key === next.key;
88
+ });
89
+ var mergedModifications = (0, _react2.useMemo)(function () {
90
+ return (0, _utils.mergeDeep)(parentModifications, _modifications);
91
+ }, [parentModifications, _modifications]);
92
+ var modifications = useStableValue(mergedModifications, _isEqual.default);
93
+ var colorMode = (0, _react2.useMemo)(function () {
94
+ return (0, _utils.getColorMode)(_colorMode, parentColorMode, isForced);
95
+ }, [_colorMode, parentColorMode, isForced]);
81
96
  var highContrastMode = (0, _react2.useMemo)(function () {
82
97
  if (isForced) return 'forced'; // System forced high contrast mode will always supercede application settings
83
98
  if (_highContrastMode === true) return 'preferred'; // Convert the boolean prop to our internal enum
84
99
  if (_highContrastMode === false) return false; // Allow `false` prop to override user/system preference
85
100
  return parentHighContrastMode; // Fall back to the parent/system setting
86
101
  }, [_highContrastMode, parentHighContrastMode, isForced]);
87
- var prevHighContrastMode = (0, _react2.useRef)(highContrastMode);
88
102
  var modificationsWithHighContrast = (0, _high_contrast_overrides.useHighContrastModifications)({
89
103
  highContrastMode: highContrastMode,
90
104
  colorMode: colorMode,
91
105
  system: system,
92
106
  modifications: modifications
93
107
  });
94
- var isParentTheme = (0, _react2.useRef)(isGlobalTheme ? prevSystemKey.current === _context.DEFAULTS.system.key && colorMode === _context.DEFAULTS.colorMode && highContrastMode === _context.DEFAULTS.highContrastMode && !_modifications : prevSystemKey.current === parentSystem.key && colorMode === parentColorMode && highContrastMode === parentHighContrastMode && (0, _isEqual.default)(parentModifications, modifications));
95
- var updateVisColorStore = (0, _react2.useCallback)(function (theme, isGlobalTheme) {
96
- if (isGlobalTheme) {
97
- _color.EUI_VIS_COLOR_STORE.setVisColors(theme.colors.vis);
108
+
109
+ // If this provider resolves to the exact same theme as its parent, the
110
+ // already computed parent theme can be reused instead of recomputing it
111
+ var isParentTheme = (0, _react2.useMemo)(function () {
112
+ return isGlobalTheme ? system.key === _context.DEFAULTS.system.key && colorMode === _context.DEFAULTS.colorMode && highContrastMode === _context.DEFAULTS.highContrastMode && !_modifications : system.key === parentSystem.key && colorMode === parentColorMode && highContrastMode === parentHighContrastMode && (0, _isEqual.default)(parentModifications, modifications);
113
+ }, [isGlobalTheme, system, colorMode, highContrastMode, _modifications, parentSystem, parentColorMode, parentHighContrastMode, parentModifications, modifications]);
114
+
115
+ // Depending on `parentTheme` itself would recompute this provider's theme every
116
+ // time the parent's did, even where the parent's theme is not an input to it -
117
+ // `parentModifications` already reaches `getComputed` through `modifications`
118
+ var reusableParentTheme = isParentTheme && Object.keys(parentTheme).length ? parentTheme : null;
119
+ var theme = (0, _react2.useMemo)(function () {
120
+ if (reusableParentTheme) {
121
+ return _objectSpread({}, reusableParentTheme); // Intentionally create a new object to break referential equality
98
122
  }
99
- }, []);
100
- var getInitialTheme = function getInitialTheme() {
101
- var theme = (0, _utils.getComputed)(system, (0, _utils.buildTheme)(modificationsWithHighContrast, "_".concat(system.key)), colorMode, highContrastMode);
102
- setTimeout(function () {
103
- updateVisColorStore(theme, isGlobalTheme);
123
+
124
+ /* Enables recomputation of component colors when flags are overridden on the provider
125
+ by adding the respective key to modifications to trigger a recomputation. */
126
+ // NOTE: Keeping this as placeholder for potential future usage during Borealis changes
127
+ // TODO: remove once visual refresh is completed and flags are obsolete
128
+ var flagsToRecompute = [];
129
+ var keys = {};
130
+ var forceRecomputeComponents = flagsToRecompute.some(function (item) {
131
+ var _modifications$flags, _modifications$compon;
132
+ if (!item) return false;
133
+ if (Object.keys((_modifications$flags = modifications.flags) !== null && _modifications$flags !== void 0 ? _modifications$flags : {}).includes(item.flag) && !Object.keys((_modifications$compon = modifications.components) !== null && _modifications$compon !== void 0 ? _modifications$compon : {}).includes(item.componentKey)) {
134
+ keys[item.componentKey] = {
135
+ LIGHT: {},
136
+ DARK: {}
137
+ };
138
+ return true;
139
+ }
140
+ return false;
104
141
  });
105
- return theme;
106
- };
107
- var _useState7 = (0, _react2.useState)(isParentTheme.current && Object.keys(parentTheme).length ? _objectSpread({}, parentTheme) // Intentionally create a new object to break referential equality
108
- : getInitialTheme()),
109
- _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
110
- theme = _useState8[0],
111
- setTheme = _useState8[1];
112
- (0, _react2.useEffect)(function () {
113
- var newSystem = _system || parentSystem;
114
- if (prevSystemKey.current !== newSystem.key) {
115
- setSystem(newSystem);
116
- prevSystemKey.current = newSystem.key;
117
- isParentTheme.current = false;
118
- }
119
- }, [_system, parentSystem, theme, updateVisColorStore]);
120
- (0, _react2.useEffect)(function () {
121
- updateVisColorStore(theme, isGlobalTheme);
122
- }, [theme, colorMode, isGlobalTheme, updateVisColorStore]);
123
- (0, _react2.useEffect)(function () {
124
- var newModifications = (0, _utils.mergeDeep)(parentModifications, _modifications);
125
- if (!(0, _isEqual.default)(prevModifications.current, newModifications)) {
126
- setModifications(newModifications);
127
- prevModifications.current = newModifications;
128
- isParentTheme.current = false;
129
- }
130
- }, [_modifications, parentModifications]);
131
- (0, _react2.useEffect)(function () {
132
- var newColorMode = (0, _utils.getColorMode)(_colorMode, parentColorMode, isForced);
133
- if (!(0, _isEqual.default)(newColorMode, prevColorMode.current)) {
134
- setColorMode(newColorMode);
135
- prevColorMode.current = newColorMode;
136
- isParentTheme.current = false;
137
- }
138
- }, [_colorMode, parentColorMode, isForced]);
139
- (0, _react2.useEffect)(function () {
140
- if (prevHighContrastMode.current !== highContrastMode) {
141
- isParentTheme.current = false;
142
- }
143
- }, [highContrastMode]);
144
- (0, _react2.useEffect)(function () {
145
- if (!isParentTheme.current) {
146
- /* Enables recomputation of component colors when flags are overridden on the provider
147
- by adding the respective key to modifications to trigger a recomputation. */
148
- // NOTE: Keeping this as placeholder for potential future usage during Borealis changes
149
- // TODO: remove once visual refresh is completed and flags are obsolete
150
- var flagsToRecompute = [];
151
- var keys = {};
152
- var forceRecomputeComponents = flagsToRecompute.some(function (item) {
153
- var _modifications$flags, _modifications$compon;
154
- if (!item) return false;
155
- if (Object.keys((_modifications$flags = modifications.flags) !== null && _modifications$flags !== void 0 ? _modifications$flags : {}).includes(item.flag) && !Object.keys((_modifications$compon = modifications.components) !== null && _modifications$compon !== void 0 ? _modifications$compon : {}).includes(item.componentKey)) {
156
- keys[item.componentKey] = {
157
- LIGHT: {},
158
- DARK: {}
159
- };
160
- return true;
161
- }
162
- return false;
163
- });
164
- var componentModifications = forceRecomputeComponents ? {
165
- components: keys
166
- } : {};
142
+ var componentModifications = forceRecomputeComponents ? {
143
+ components: keys
144
+ } : {};
167
145
 
168
- // force recomputing of color & component tokens based on flag changes
169
- var enhancedModifications = _objectSpread(_objectSpread({}, modificationsWithHighContrast), componentModifications);
170
- var rebuiltTheme = (0, _utils.getComputed)(system, (0, _utils.buildTheme)(enhancedModifications, "_".concat(system.key)), colorMode, highContrastMode);
171
- setTheme(rebuiltTheme);
146
+ // force recomputing of color & component tokens based on flag changes
147
+ var enhancedModifications = _objectSpread(_objectSpread({}, modificationsWithHighContrast), componentModifications);
148
+ return (0, _utils.getComputed)(system, (0, _utils.buildTheme)(enhancedModifications, "_".concat(system.key)), colorMode, highContrastMode);
149
+ }, [reusableParentTheme, system, colorMode, highContrastMode, modifications, modificationsWithHighContrast]);
150
+
151
+ // Genuine side effect - the vis color store is consumed outside of React
152
+ (0, _react2.useEffect)(function () {
153
+ if (isGlobalTheme) {
154
+ _color.EUI_VIS_COLOR_STORE.setVisColors(theme.colors.vis);
172
155
  }
173
- }, [colorMode, highContrastMode, system, modificationsWithHighContrast, modifications]);
174
- var _useState9 = (0, _react2.useState)(),
175
- _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
176
- themeCSSVariables = _useState10[0],
177
- _setThemeCSSVariables = _useState10[1];
156
+ }, [theme, isGlobalTheme]);
157
+ var _useState = (0, _react2.useState)(),
158
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
159
+ themeCSSVariables = _useState2[0],
160
+ _setThemeCSSVariables = _useState2[1];
178
161
  var setThemeCSSVariables = (0, _react2.useCallback)(function (variables) {
179
162
  return _setThemeCSSVariables(function (previous) {
180
163
  var merged = _objectSpread(_objectSpread({}, previous), variables);