@elastic/eui 93.2.0 → 93.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 (189) hide show
  1. package/dist/eui_theme_dark.css +3 -0
  2. package/dist/eui_theme_dark.min.css +1 -1
  3. package/dist/eui_theme_light.css +3 -0
  4. package/dist/eui_theme_light.min.css +1 -1
  5. package/es/components/breadcrumbs/breadcrumb.js +9 -6
  6. package/es/components/breadcrumbs/breadcrumbs.js +4 -2
  7. package/es/components/button/button_display/_button_display.js +2 -3
  8. package/es/components/button/button_empty/button_empty.js +2 -3
  9. package/es/components/button/button_group/button_group.js +3 -5
  10. package/es/components/button/button_group/button_group.styles.js +10 -13
  11. package/es/components/button/button_icon/button_icon.js +4 -5
  12. package/es/components/button/button_icon/button_icon.styles.js +11 -3
  13. package/es/components/datagrid/body/cell/data_grid_cell.js +7 -3
  14. package/es/components/datagrid/body/cell/data_grid_cell_wrapper.js +4 -2
  15. package/es/components/datagrid/body/data_grid_body.js +1 -0
  16. package/es/components/datagrid/body/data_grid_body_custom.js +3 -0
  17. package/es/components/datagrid/body/data_grid_body_virtualized.js +3 -0
  18. package/es/components/datagrid/body/data_grid_row_manager.js +1 -1
  19. package/es/components/datagrid/data_grid.js +3 -1
  20. package/es/components/facet/facet_button.styles.js +1 -2
  21. package/es/components/header/header_breadcrumbs/header_breadcrumbs.js +4 -2
  22. package/es/components/icon/icon.js +13 -16
  23. package/es/components/icon/icon.styles.js +6 -9
  24. package/es/components/link/external_link_icon.js +11 -8
  25. package/es/components/link/link.js +2 -3
  26. package/es/components/link/link.styles.js +4 -10
  27. package/es/components/page/page_header/page_header_content.js +4 -2
  28. package/es/components/progress/progress.styles.js +2 -2
  29. package/es/components/skeleton/skeleton_circle.js +2 -3
  30. package/es/components/skeleton/skeleton_rectangle.js +2 -3
  31. package/es/components/skeleton/skeleton_text.js +16 -12
  32. package/es/components/skeleton/skeleton_title.js +2 -3
  33. package/es/components/text/text.js +2 -3
  34. package/es/components/text/text_align.js +1 -2
  35. package/es/components/text/text_align.styles.js +5 -7
  36. package/es/components/text/text_color.js +2 -3
  37. package/es/components/title/title.js +2 -3
  38. package/es/components/title/title.styles.js +0 -7
  39. package/es/global_styling/mixins/_typography.js +17 -6
  40. package/es/services/theme/index.js +1 -1
  41. package/es/services/theme/style_memoization.js +47 -14
  42. package/es/themes/amsterdam/global_styling/mixins/button.js +47 -24
  43. package/eui.d.ts +46 -37
  44. package/i18ntokens.json +36 -36
  45. package/lib/components/breadcrumbs/breadcrumb.js +9 -6
  46. package/lib/components/breadcrumbs/breadcrumbs.js +4 -2
  47. package/lib/components/button/button_display/_button_display.js +1 -2
  48. package/lib/components/button/button_empty/button_empty.js +1 -2
  49. package/lib/components/button/button_group/button_group.js +2 -4
  50. package/lib/components/button/button_group/button_group.styles.js +10 -13
  51. package/lib/components/button/button_icon/button_icon.js +3 -4
  52. package/lib/components/button/button_icon/button_icon.styles.js +10 -2
  53. package/lib/components/datagrid/body/cell/data_grid_cell.js +7 -3
  54. package/lib/components/datagrid/body/cell/data_grid_cell_wrapper.js +4 -2
  55. package/lib/components/datagrid/body/data_grid_body.js +1 -0
  56. package/lib/components/datagrid/body/data_grid_body_custom.js +3 -0
  57. package/lib/components/datagrid/body/data_grid_body_virtualized.js +3 -0
  58. package/lib/components/datagrid/body/data_grid_row_manager.js +1 -1
  59. package/lib/components/datagrid/data_grid.js +3 -1
  60. package/lib/components/facet/facet_button.styles.js +1 -2
  61. package/lib/components/header/header_breadcrumbs/header_breadcrumbs.js +4 -2
  62. package/lib/components/icon/icon.js +12 -15
  63. package/lib/components/icon/icon.styles.js +5 -8
  64. package/lib/components/link/external_link_icon.js +10 -7
  65. package/lib/components/link/link.js +1 -2
  66. package/lib/components/link/link.styles.js +6 -14
  67. package/lib/components/page/page_header/page_header_content.js +4 -2
  68. package/lib/components/progress/progress.styles.js +1 -1
  69. package/lib/components/skeleton/skeleton_circle.js +1 -2
  70. package/lib/components/skeleton/skeleton_rectangle.js +1 -2
  71. package/lib/components/skeleton/skeleton_text.js +18 -11
  72. package/lib/components/skeleton/skeleton_title.js +1 -2
  73. package/lib/components/text/text.js +1 -2
  74. package/lib/components/text/text_align.js +1 -2
  75. package/lib/components/text/text_align.styles.js +5 -7
  76. package/lib/components/text/text_color.js +1 -2
  77. package/lib/components/title/title.js +1 -2
  78. package/lib/components/title/title.styles.js +2 -10
  79. package/lib/global_styling/mixins/_typography.js +27 -19
  80. package/lib/services/theme/index.js +6 -0
  81. package/lib/services/theme/style_memoization.js +49 -16
  82. package/lib/themes/amsterdam/global_styling/mixins/button.js +49 -25
  83. package/optimize/es/components/breadcrumbs/breadcrumb.js +5 -4
  84. package/optimize/es/components/button/button_display/_button_display.js +2 -3
  85. package/optimize/es/components/button/button_empty/button_empty.js +2 -3
  86. package/optimize/es/components/button/button_group/button_group.js +3 -5
  87. package/optimize/es/components/button/button_group/button_group.styles.js +10 -13
  88. package/optimize/es/components/button/button_icon/button_icon.js +4 -5
  89. package/optimize/es/components/button/button_icon/button_icon.styles.js +8 -3
  90. package/optimize/es/components/datagrid/body/cell/data_grid_cell.js +5 -3
  91. package/optimize/es/components/datagrid/body/cell/data_grid_cell_wrapper.js +4 -2
  92. package/optimize/es/components/datagrid/body/data_grid_body_custom.js +2 -0
  93. package/optimize/es/components/datagrid/body/data_grid_body_virtualized.js +2 -0
  94. package/optimize/es/components/datagrid/body/data_grid_row_manager.js +1 -1
  95. package/optimize/es/components/datagrid/data_grid.js +3 -1
  96. package/optimize/es/components/facet/facet_button.styles.js +1 -2
  97. package/optimize/es/components/icon/icon.js +13 -16
  98. package/optimize/es/components/icon/icon.styles.js +6 -9
  99. package/optimize/es/components/link/external_link_icon.js +11 -8
  100. package/optimize/es/components/link/link.js +2 -3
  101. package/optimize/es/components/link/link.styles.js +4 -10
  102. package/optimize/es/components/progress/progress.styles.js +2 -2
  103. package/optimize/es/components/skeleton/skeleton_circle.js +2 -3
  104. package/optimize/es/components/skeleton/skeleton_rectangle.js +2 -3
  105. package/optimize/es/components/skeleton/skeleton_text.js +16 -12
  106. package/optimize/es/components/skeleton/skeleton_title.js +2 -3
  107. package/optimize/es/components/text/text.js +2 -3
  108. package/optimize/es/components/text/text_align.js +1 -2
  109. package/optimize/es/components/text/text_align.styles.js +5 -7
  110. package/optimize/es/components/text/text_color.js +2 -3
  111. package/optimize/es/components/title/title.js +2 -3
  112. package/optimize/es/components/title/title.styles.js +0 -7
  113. package/optimize/es/global_styling/mixins/_typography.js +14 -6
  114. package/optimize/es/services/theme/index.js +1 -1
  115. package/optimize/es/services/theme/style_memoization.js +47 -14
  116. package/optimize/es/themes/amsterdam/global_styling/mixins/button.js +47 -24
  117. package/optimize/lib/components/breadcrumbs/breadcrumb.js +5 -4
  118. package/optimize/lib/components/button/button_display/_button_display.js +1 -2
  119. package/optimize/lib/components/button/button_empty/button_empty.js +1 -2
  120. package/optimize/lib/components/button/button_group/button_group.js +2 -4
  121. package/optimize/lib/components/button/button_group/button_group.styles.js +10 -13
  122. package/optimize/lib/components/button/button_icon/button_icon.js +3 -4
  123. package/optimize/lib/components/button/button_icon/button_icon.styles.js +8 -2
  124. package/optimize/lib/components/datagrid/body/cell/data_grid_cell.js +5 -3
  125. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_wrapper.js +4 -2
  126. package/optimize/lib/components/datagrid/body/data_grid_body_custom.js +2 -0
  127. package/optimize/lib/components/datagrid/body/data_grid_body_virtualized.js +2 -0
  128. package/optimize/lib/components/datagrid/body/data_grid_row_manager.js +1 -1
  129. package/optimize/lib/components/datagrid/data_grid.js +3 -1
  130. package/optimize/lib/components/facet/facet_button.styles.js +1 -2
  131. package/optimize/lib/components/icon/icon.js +12 -15
  132. package/optimize/lib/components/icon/icon.styles.js +5 -8
  133. package/optimize/lib/components/link/external_link_icon.js +10 -7
  134. package/optimize/lib/components/link/link.js +1 -2
  135. package/optimize/lib/components/link/link.styles.js +6 -14
  136. package/optimize/lib/components/progress/progress.styles.js +1 -1
  137. package/optimize/lib/components/skeleton/skeleton_circle.js +1 -2
  138. package/optimize/lib/components/skeleton/skeleton_rectangle.js +1 -2
  139. package/optimize/lib/components/skeleton/skeleton_text.js +18 -11
  140. package/optimize/lib/components/skeleton/skeleton_title.js +1 -2
  141. package/optimize/lib/components/text/text.js +1 -2
  142. package/optimize/lib/components/text/text_align.js +1 -2
  143. package/optimize/lib/components/text/text_align.styles.js +5 -7
  144. package/optimize/lib/components/text/text_color.js +1 -2
  145. package/optimize/lib/components/title/title.js +1 -2
  146. package/optimize/lib/components/title/title.styles.js +2 -10
  147. package/optimize/lib/global_styling/mixins/_typography.js +25 -19
  148. package/optimize/lib/services/theme/index.js +6 -0
  149. package/optimize/lib/services/theme/style_memoization.js +49 -16
  150. package/optimize/lib/themes/amsterdam/global_styling/mixins/button.js +49 -26
  151. package/package.json +3 -3
  152. package/src/components/datagrid/_data_grid_data_row.scss +4 -0
  153. package/test-env/components/breadcrumbs/breadcrumb.js +9 -6
  154. package/test-env/components/breadcrumbs/breadcrumbs.js +4 -2
  155. package/test-env/components/button/button_display/_button_display.js +1 -2
  156. package/test-env/components/button/button_empty/button_empty.js +1 -2
  157. package/test-env/components/button/button_group/button_group.js +2 -4
  158. package/test-env/components/button/button_group/button_group.styles.js +10 -13
  159. package/test-env/components/button/button_icon/button_icon.js +3 -4
  160. package/test-env/components/button/button_icon/button_icon.styles.js +8 -2
  161. package/test-env/components/datagrid/body/cell/data_grid_cell.js +7 -3
  162. package/test-env/components/datagrid/body/cell/data_grid_cell_wrapper.js +4 -2
  163. package/test-env/components/datagrid/body/data_grid_body.js +1 -0
  164. package/test-env/components/datagrid/body/data_grid_body_custom.js +3 -0
  165. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +3 -0
  166. package/test-env/components/datagrid/body/data_grid_row_manager.js +1 -1
  167. package/test-env/components/datagrid/data_grid.js +3 -1
  168. package/test-env/components/facet/facet_button.styles.js +1 -2
  169. package/test-env/components/header/header_breadcrumbs/header_breadcrumbs.js +4 -2
  170. package/test-env/components/icon/icon.styles.js +5 -8
  171. package/test-env/components/link/external_link_icon.js +10 -7
  172. package/test-env/components/link/link.js +1 -2
  173. package/test-env/components/link/link.styles.js +6 -14
  174. package/test-env/components/page/page_header/page_header_content.js +4 -2
  175. package/test-env/components/progress/progress.styles.js +1 -1
  176. package/test-env/components/skeleton/skeleton_circle.js +1 -2
  177. package/test-env/components/skeleton/skeleton_rectangle.js +1 -2
  178. package/test-env/components/skeleton/skeleton_text.js +18 -11
  179. package/test-env/components/skeleton/skeleton_title.js +1 -2
  180. package/test-env/components/text/text.js +1 -2
  181. package/test-env/components/text/text_align.js +1 -2
  182. package/test-env/components/text/text_align.styles.js +5 -7
  183. package/test-env/components/text/text_color.js +1 -2
  184. package/test-env/components/title/title.js +1 -2
  185. package/test-env/components/title/title.styles.js +2 -10
  186. package/test-env/global_styling/mixins/_typography.js +25 -19
  187. package/test-env/services/theme/index.js +6 -0
  188. package/test-env/services/theme/style_memoization.js +49 -16
  189. package/test-env/themes/amsterdam/global_styling/mixins/button.js +49 -26
@@ -32,8 +32,7 @@ var EuiTitle = function EuiTitle(_ref) {
32
32
  className = _ref.className,
33
33
  textTransform = _ref.textTransform,
34
34
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
35
- var euiTheme = (0, _services.useEuiTheme)();
36
- var styles = (0, _title.euiTitleStyles)(euiTheme);
35
+ var styles = (0, _services.useEuiMemoizedStyles)(_title.euiTitleStyles);
37
36
  var cssStyles = [styles.euiTitle, textTransform ? styles[textTransform] : undefined, styles[size]];
38
37
  var classes = (0, _classnames.default)('euiTitle', className, children.props.className);
39
38
  var props = _objectSpread({
@@ -4,10 +4,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.useEuiTitle = exports.euiTitleStyles = exports.euiTitle = void 0;
7
+ exports.euiTitleStyles = exports.euiTitle = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _react = require("@emotion/react");
10
- var _services = require("../../services");
11
10
  var _global_styling = require("../../global_styling");
12
11
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
13
12
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -40,17 +39,10 @@ var euiTitle = function euiTitle(euiThemeContext) {
40
39
  });
41
40
  };
42
41
 
43
- // Hook version
44
- exports.euiTitle = euiTitle;
45
- var useEuiTitle = function useEuiTitle(scale, options) {
46
- var euiTheme = (0, _services.useEuiTheme)();
47
- return euiTitle(euiTheme, scale, options);
48
- };
49
-
50
42
  /**
51
43
  * Styles
52
44
  */
53
- exports.useEuiTitle = useEuiTitle;
45
+ exports.euiTitle = euiTitle;
54
46
  var _ref = process.env.NODE_ENV === "production" ? {
55
47
  name: "1x2qsb1-uppercase",
56
48
  styles: "text-transform:uppercase;label:uppercase;"
@@ -1,20 +1,23 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.useEuiNumberFormat = exports.useEuiFontSize = exports.euiTextTruncate = exports.euiTextBreakWord = exports.euiNumberFormat = exports.euiFontSize = void 0;
7
+ exports.useEuiFontSize = exports.euiTextTruncate = exports.euiTextBreakWord = exports.euiNumberFormat = exports.euiFontSize = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
9
  var _typography = require("../functions/typography");
8
- var _hooks = require("../../services/theme/hooks");
10
+ var _theme = require("../../services/theme");
11
+ var _typography2 = require("../variables/typography");
9
12
  var _functions = require("../functions");
10
- /*
11
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
12
- * or more contributor license agreements. Licensed under the Elastic License
13
- * 2.0 and the Server Side Public License, v 1; you may not use this file except
14
- * in compliance with, at your election, the Elastic License 2.0 or the Server
15
- * Side Public License, v 1.
16
- */
17
-
13
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } /*
15
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
16
+ * or more contributor license agreements. Licensed under the Elastic License
17
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
18
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
19
+ * Side Public License, v 1.
20
+ */
18
21
  /**
19
22
  * Returns font-size and line-height
20
23
  */
@@ -27,15 +30,23 @@ var euiFontSize = function euiFontSize(_ref, scale, options) {
27
30
  };
28
31
  exports.euiFontSize = euiFontSize;
29
32
  var useEuiFontSize = function useEuiFontSize(scale, options) {
30
- var euiTheme = (0, _hooks.useEuiTheme)();
31
- return euiFontSize(euiTheme, scale, options);
33
+ var euiTheme = (0, _theme.useEuiTheme)();
34
+ var memoizedFontSizes = (0, _theme.useEuiMemoizedStyles)(euiFontSizes);
35
+ return !options ? memoizedFontSizes[scale] : euiFontSize(euiTheme, scale, options);
36
+ };
37
+ // Memomize a basic set of font sizes. We unfortunately can't
38
+ // memoize all possible options, there's too many permutations
39
+ exports.useEuiFontSize = useEuiFontSize;
40
+ var euiFontSizes = function euiFontSizes(euiThemeContext) {
41
+ return _typography2.EuiThemeFontScales.reduce(function (map, scale) {
42
+ return _objectSpread(_objectSpread({}, map), {}, (0, _defineProperty2.default)({}, scale, euiFontSize(euiThemeContext, scale)));
43
+ }, {});
32
44
  };
33
45
 
34
46
  /**
35
47
  * Force text to wrap on natural word breaks (e.g. spaces & hyphens)
36
48
  * https://css-tricks.com/snippets/css/prevent-long-urls-from-breaking-out-of-container/
37
49
  */
38
- exports.useEuiFontSize = useEuiFontSize;
39
50
  var euiTextBreakWord = function euiTextBreakWord() {
40
51
  return "\n overflow-wrap: break-word !important; // makes sure the long string will wrap and not bust out of the container\n word-break: break-word;\n";
41
52
  };
@@ -58,9 +69,4 @@ var euiNumberFormat = function euiNumberFormat(_ref2) {
58
69
  var euiTheme = _ref2.euiTheme;
59
70
  return "\n font-feature-settings: ".concat(euiTheme.font.featureSettings, ", 'tnum' 1;\n");
60
71
  };
61
- exports.euiNumberFormat = euiNumberFormat;
62
- var useEuiNumberFormat = function useEuiNumberFormat() {
63
- var euiTheme = (0, _hooks.useEuiTheme)();
64
- return euiNumberFormat(euiTheme);
65
- };
66
- exports.useEuiNumberFormat = useEuiNumberFormat;
72
+ exports.euiNumberFormat = euiNumberFormat;
@@ -135,6 +135,12 @@ Object.defineProperty(exports, "useEuiThemeCSSVariables", {
135
135
  return _hooks.useEuiThemeCSSVariables;
136
136
  }
137
137
  });
138
+ Object.defineProperty(exports, "withEuiStylesMemoizer", {
139
+ enumerable: true,
140
+ get: function get() {
141
+ return _style_memoization.withEuiStylesMemoizer;
142
+ }
143
+ });
138
144
  Object.defineProperty(exports, "withEuiTheme", {
139
145
  enumerable: true,
140
146
  get: function get() {
@@ -5,7 +5,8 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.useEuiMemoizedStyles = exports.EuiThemeMemoizedStylesProvider = exports.EuiThemeMemoizedStylesContext = void 0;
8
+ exports.withEuiStylesMemoizer = exports.useEuiMemoizedStyles = exports.EuiThemeMemoizedStylesProvider = exports.EuiThemeMemoizedStylesContext = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
11
  var _react = _interopRequireWildcard(require("react"));
11
12
  var _hooks = require("../hooks");
@@ -47,27 +48,59 @@ var EuiThemeMemoizedStylesProvider = function EuiThemeMemoizedStylesProvider(_re
47
48
  }, children);
48
49
  };
49
50
 
51
+ /**
52
+ * Internal util primarily responsible for getting the memoized styles (if they exist)
53
+ * and if not, generating and setting the styles. DRYed out to facilitate usage
54
+ * between both hook/function components and HOC/class components
55
+ */
56
+ exports.EuiThemeMemoizedStylesProvider = EuiThemeMemoizedStylesProvider;
57
+ var getMemoizedStyles = function getMemoizedStyles(stylesGenerator, stylesMap, euiThemeContext) {
58
+ if (!stylesGenerator.name) {
59
+ throw new Error('Styles are memoized per function. Your style functions must be statically defined in order to not create a new map entry every rerender.');
60
+ }
61
+ var existingStyles = stylesMap.get(stylesGenerator);
62
+ if (existingStyles) {
63
+ return existingStyles;
64
+ } else {
65
+ var generatedStyles = stylesGenerator(euiThemeContext);
66
+ stylesMap.set(stylesGenerator, generatedStyles);
67
+ return generatedStyles;
68
+ }
69
+ };
70
+
50
71
  /**
51
72
  * Hook that memoizes the returned values of components style fns/generators
52
73
  * per-theme
53
74
  */
54
- exports.EuiThemeMemoizedStylesProvider = EuiThemeMemoizedStylesProvider;
55
- var useEuiMemoizedStyles = function useEuiMemoizedStyles(styleGenerator) {
75
+ var useEuiMemoizedStyles = function useEuiMemoizedStyles(stylesGenerator) {
56
76
  var memoizedStyles = (0, _react.useContext)(EuiThemeMemoizedStylesContext);
57
77
  var euiThemeContext = (0, _hooks2.useEuiTheme)();
58
78
  var memoizedComponentStyles = (0, _react.useMemo)(function () {
59
- if (!styleGenerator.name) {
60
- throw new Error('Styles are memoized per function. Your style functions must be statically defined in order to not create a new map entry every rerender.');
61
- }
62
- var existingStyles = memoizedStyles.get(styleGenerator);
63
- if (existingStyles) {
64
- return existingStyles;
65
- } else {
66
- var generatedStyles = styleGenerator(euiThemeContext);
67
- memoizedStyles.set(styleGenerator, generatedStyles);
68
- return generatedStyles;
69
- }
70
- }, [styleGenerator, memoizedStyles, euiThemeContext]);
79
+ return getMemoizedStyles(stylesGenerator, memoizedStyles, euiThemeContext);
80
+ }, [stylesGenerator, memoizedStyles, euiThemeContext]);
71
81
  return memoizedComponentStyles;
72
82
  };
73
- exports.useEuiMemoizedStyles = useEuiMemoizedStyles;
83
+
84
+ /**
85
+ * HOC for class components
86
+ * Syntax is mostly copied from withEuiTheme HOC
87
+ */
88
+ exports.useEuiMemoizedStyles = useEuiMemoizedStyles;
89
+ var withEuiStylesMemoizer = function withEuiStylesMemoizer(Component) {
90
+ var componentName = Component.displayName || Component.name || 'ComponentWithStylesMemoizer';
91
+ var Render = function Render(props, ref) {
92
+ var memoizedStyles = (0, _react.useContext)(EuiThemeMemoizedStylesContext);
93
+ var euiThemeContext = (0, _hooks2.useEuiTheme)();
94
+ var stylesMemoizer = (0, _react.useCallback)(function (stylesGenerator) {
95
+ return getMemoizedStyles(stylesGenerator, memoizedStyles, euiThemeContext);
96
+ }, [memoizedStyles, euiThemeContext]);
97
+ return (0, _react2.jsx)(Component, (0, _extends2.default)({
98
+ stylesMemoizer: stylesMemoizer,
99
+ ref: ref
100
+ }, props));
101
+ };
102
+ var WithEuiStylesMemoizer = /*#__PURE__*/(0, _react.forwardRef)(Render);
103
+ WithEuiStylesMemoizer.displayName = componentName;
104
+ return WithEuiStylesMemoizer;
105
+ };
106
+ exports.withEuiStylesMemoizer = withEuiStylesMemoizer;
@@ -4,11 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.useEuiButtonFocusCSS = exports.useEuiButtonColorCSS = exports.euiButtonSizeMap = exports.euiButtonFillColor = exports.euiButtonEmptyColor = exports.euiButtonColor = exports.BUTTON_COLORS = void 0;
7
+ exports.useEuiButtonFocusCSS = exports.useEuiButtonColorCSS = exports.euiButtonSizeMap = exports.euiButtonFillColor = exports.euiButtonEmptyColor = exports.euiButtonColor = exports.BUTTON_DISPLAYS = exports.BUTTON_COLORS = void 0;
8
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
8
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
10
  var _react = require("@emotion/react");
10
11
  var _global_styling = require("../../../../global_styling");
11
12
  var _services = require("../../../../services");
13
+ var _templateObject;
12
14
  /*
13
15
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
14
16
  * or more contributor license agreements. Licensed under the Elastic License
@@ -16,9 +18,10 @@ var _services = require("../../../../services");
16
18
  * in compliance with, at your election, the Elastic License 2.0 or the Server
17
19
  * Side Public License, v 1.
18
20
  */
19
-
20
21
  var BUTTON_COLORS = ['text', 'accent', 'primary', 'success', 'warning', 'danger'];
21
22
  exports.BUTTON_COLORS = BUTTON_COLORS;
23
+ var BUTTON_DISPLAYS = ['base', 'fill', 'empty'];
24
+ exports.BUTTON_DISPLAYS = BUTTON_DISPLAYS;
22
25
  /**
23
26
  * Creates the `base` version of button styles with proper text contrast.
24
27
  * @param euiThemeContext
@@ -139,43 +142,63 @@ var euiButtonEmptyColor = function euiButtonEmptyColor(euiThemeContext, color) {
139
142
  exports.euiButtonEmptyColor = euiButtonEmptyColor;
140
143
  var useEuiButtonColorCSS = function useEuiButtonColorCSS() {
141
144
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
142
- var euiThemeContext = (0, _services.useEuiTheme)();
143
- function stylesByDisplay(color) {
144
- return {
145
- base: /*#__PURE__*/(0, _react.css)(euiButtonColor(euiThemeContext, color), ";;label:base;"),
146
- fill: /*#__PURE__*/(0, _react.css)(euiButtonFillColor(euiThemeContext, color), "outline-color:", euiThemeContext.colorMode === 'DARK' && color === 'text' ? 'currentColor' : euiThemeContext.euiTheme.colors.fullShade, ";;label:fill;"),
147
- empty: /*#__PURE__*/(0, _react.css)("color:", euiButtonEmptyColor(euiThemeContext, color).color, ";&:focus,&:active{background-color:", euiButtonEmptyColor(euiThemeContext, color).backgroundColor, ";};label:empty;")
148
- };
149
- }
150
- return {
151
- text: /*#__PURE__*/(0, _react.css)(stylesByDisplay('text')[options.display || 'base'], ";label:text;"),
152
- accent: /*#__PURE__*/(0, _react.css)(stylesByDisplay('accent')[options.display || 'base'], ";label:accent;"),
153
- primary: /*#__PURE__*/(0, _react.css)(stylesByDisplay('primary')[options.display || 'base'], ";label:primary;"),
154
- success: /*#__PURE__*/(0, _react.css)(stylesByDisplay('success')[options.display || 'base'], ";label:success;"),
155
- warning: /*#__PURE__*/(0, _react.css)(stylesByDisplay('warning')[options.display || 'base'], ";label:warning;"),
156
- danger: /*#__PURE__*/(0, _react.css)(stylesByDisplay('danger')[options.display || 'base'], ";label:danger;"),
157
- disabled: /*#__PURE__*/(0, _react.css)(stylesByDisplay('disabled')[options.display || 'base'], ";label:disabled;")
158
- };
145
+ var _options$display = options.display,
146
+ display = _options$display === void 0 ? 'base' : _options$display;
147
+ var colorsDisplaysMap = (0, _services.useEuiMemoizedStyles)(euiButtonDisplaysColors);
148
+ return colorsDisplaysMap[display];
149
+ };
150
+ exports.useEuiButtonColorCSS = useEuiButtonColorCSS;
151
+ var euiButtonDisplaysColors = function euiButtonDisplaysColors(euiThemeContext) {
152
+ var COLORS = [].concat(BUTTON_COLORS, ['disabled']);
153
+ var displaysColorsMap = {};
154
+ BUTTON_DISPLAYS.forEach(function (display) {
155
+ displaysColorsMap[display] = {};
156
+ COLORS.forEach(function (color) {
157
+ switch (display) {
158
+ case 'base':
159
+ displaysColorsMap[display][color] = /*#__PURE__*/(0, _react.css)(euiButtonColor(euiThemeContext, color), ";;label:displaysColorsMap-display-color;");
160
+ break;
161
+ case 'fill':
162
+ displaysColorsMap[display][color] = /*#__PURE__*/(0, _react.css)(euiButtonFillColor(euiThemeContext, color), "outline-color:", euiThemeContext.colorMode === 'DARK' && color === 'text' ? 'currentColor' : euiThemeContext.euiTheme.colors.fullShade, ";;label:displaysColorsMap-display-color;");
163
+ break;
164
+ case 'empty':
165
+ displaysColorsMap[display][color] = /*#__PURE__*/(0, _react.css)("color:", euiButtonEmptyColor(euiThemeContext, color).color, ";&:focus,&:active{background-color:", euiButtonEmptyColor(euiThemeContext, color).backgroundColor, ";};label:displaysColorsMap-display-color;");
166
+ break;
167
+ }
168
+
169
+ // Tweak auto-generated Emotion label/className output
170
+ var emotionOutput = displaysColorsMap[display][color];
171
+ emotionOutput.styles = emotionOutput.styles.replace('label:displaysColorsMap-display-color;', "label:".concat(display, "-").concat(color, ";"));
172
+ });
173
+ });
174
+ return displaysColorsMap;
159
175
  };
160
176
 
161
177
  /**
162
178
  * Creates the translate animation when button is in focus.
163
179
  * @returns string
164
180
  */
165
- exports.useEuiButtonColorCSS = useEuiButtonColorCSS;
166
181
  var useEuiButtonFocusCSS = function useEuiButtonFocusCSS() {
167
- var _useEuiTheme = (0, _services.useEuiTheme)(),
168
- euiTheme = _useEuiTheme.euiTheme;
169
- return "\n ".concat(_global_styling.euiCanAnimate, " {\n transition: transform ").concat(euiTheme.animation.normal, " ease-in-out,\n background-color ").concat(euiTheme.animation.normal, " ease-in-out;\n\n &:hover:not(:disabled) {\n transform: translateY(-1px);\n }\n\n &:focus {\n animation: euiButtonActive ").concat(euiTheme.animation.normal, "\n ").concat(euiTheme.animation.bounce, ";\n }\n\n &:active:not(:disabled) {\n transform: translateY(1px);\n }\n }\n ");
182
+ return (0, _services.useEuiMemoizedStyles)(euiButtonFocusCSS);
183
+ };
184
+ exports.useEuiButtonFocusCSS = useEuiButtonFocusCSS;
185
+ var euiButtonFocusAnimation = (0, _react.keyframes)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n 50% {\n transform: translateY(1px);\n }\n"])));
186
+ var euiButtonFocusCSS = function euiButtonFocusCSS(_ref) {
187
+ var euiTheme = _ref.euiTheme;
188
+ var focusCSS = /*#__PURE__*/(0, _react.css)(_global_styling.euiCanAnimate, "{transition:transform ", euiTheme.animation.normal, " ease-in-out,background-color ", euiTheme.animation.normal, " ease-in-out;&:hover:not(:disabled){transform:translateY(-1px);}&:focus{animation:", euiButtonFocusAnimation, " ", euiTheme.animation.normal, " ", euiTheme.animation.bounce, ";}&:active:not(:disabled){transform:translateY(1px);}};label:focusCSS;");
189
+ // Remove the auto-generated label.
190
+ // We could typically avoid a label by using a plain string `` instead of css``,
191
+ // but we need css`` for keyframes`` to work for the focus animation
192
+ focusCSS.styles = focusCSS.styles.replace('label:focusCSS;', '');
193
+ return focusCSS;
170
194
  };
171
195
 
172
196
  /**
173
197
  * Map of `size` props to various sizings/scales
174
198
  * that should remain consistent across all buttons
175
199
  */
176
- exports.useEuiButtonFocusCSS = useEuiButtonFocusCSS;
177
- var euiButtonSizeMap = function euiButtonSizeMap(_ref) {
178
- var euiTheme = _ref.euiTheme;
200
+ var euiButtonSizeMap = function euiButtonSizeMap(_ref2) {
201
+ var euiTheme = _ref2.euiTheme;
179
202
  return {
180
203
  xs: {
181
204
  height: euiTheme.size.l,