@elastic/eui 69.0.0 → 70.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/dist/eui_theme_dark.css +0 -375
  2. package/dist/eui_theme_dark.json +0 -27
  3. package/dist/eui_theme_dark.json.d.ts +0 -27
  4. package/dist/eui_theme_dark.min.css +1 -1
  5. package/dist/eui_theme_light.css +0 -375
  6. package/dist/eui_theme_light.json +0 -27
  7. package/dist/eui_theme_light.json.d.ts +0 -27
  8. package/dist/eui_theme_light.min.css +1 -1
  9. package/es/components/basic_table/in_memory_table.js +8 -2
  10. package/es/components/code/code.js +7 -3
  11. package/es/components/code/code.styles.js +32 -0
  12. package/es/components/code/code_block.js +72 -315
  13. package/es/components/code/code_block.styles.js +153 -0
  14. package/es/components/code/code_block_controls.js +29 -0
  15. package/es/components/code/code_block_controls.styles.js +43 -0
  16. package/es/components/code/code_block_copy.js +65 -0
  17. package/es/components/code/code_block_full_screen.js +90 -0
  18. package/es/components/code/code_block_line.styles.js +49 -0
  19. package/es/components/code/code_block_overflow.js +78 -0
  20. package/es/components/code/code_block_virtualized.js +59 -0
  21. package/es/components/code/code_syntax.styles.js +43 -0
  22. package/es/components/code/utils.js +43 -37
  23. package/es/components/collapsible_nav/collapsible_nav.js +0 -5
  24. package/es/components/overlay_mask/overlay_mask.js +8 -14
  25. package/es/components/overlay_mask/overlay_mask.styles.js +4 -14
  26. package/es/components/overlay_mask/overlay_mask_body.styles.js +18 -0
  27. package/es/components/provider/provider.js +1 -5
  28. package/es/components/resizable_container/helpers.js +2 -2
  29. package/es/components/resizable_container/resizable_container.js +6 -9
  30. package/es/components/resizable_container/resizable_container.styles.js +28 -0
  31. package/es/components/resizable_container/resizable_panel.js +25 -48
  32. package/es/components/resizable_container/resizable_panel.styles.js +69 -0
  33. package/es/components/search_bar/query/ast.js +14 -3
  34. package/es/components/tool_tip/tool_tip.js +3 -2
  35. package/es/components/tool_tip/tool_tip.styles.js +17 -22
  36. package/es/components/tool_tip/tool_tip_arrow.js +17 -3
  37. package/es/components/tool_tip/tool_tip_popover.js +7 -7
  38. package/es/components/tour/tour.styles.js +4 -3
  39. package/es/components/tour/tour_step.js +7 -5
  40. package/es/global_styling/functions/logicals.js +5 -3
  41. package/es/global_styling/functions/math.js +37 -19
  42. package/es/global_styling/mixins/_padding.js +13 -9
  43. package/eui.d.ts +291 -37
  44. package/i18ntokens.json +22 -22
  45. package/lib/components/basic_table/in_memory_table.js +8 -2
  46. package/lib/components/code/code.js +9 -3
  47. package/lib/components/code/code.styles.js +35 -0
  48. package/lib/components/code/code_block.js +72 -320
  49. package/lib/components/code/code_block.styles.js +154 -0
  50. package/lib/components/code/code_block_controls.js +48 -0
  51. package/lib/components/code/code_block_controls.styles.js +39 -0
  52. package/lib/components/code/code_block_copy.js +78 -0
  53. package/lib/components/code/code_block_full_screen.js +108 -0
  54. package/lib/components/code/code_block_line.styles.js +45 -0
  55. package/lib/components/code/code_block_overflow.js +82 -0
  56. package/lib/components/code/code_block_virtualized.js +72 -0
  57. package/lib/components/code/code_syntax.styles.js +57 -0
  58. package/lib/components/code/utils.js +40 -39
  59. package/lib/components/collapsible_nav/collapsible_nav.js +0 -5
  60. package/lib/components/overlay_mask/overlay_mask.js +9 -14
  61. package/lib/components/overlay_mask/overlay_mask.styles.js +13 -17
  62. package/lib/components/overlay_mask/overlay_mask_body.styles.js +20 -0
  63. package/lib/components/provider/provider.js +7 -12
  64. package/lib/components/resizable_container/helpers.js +2 -2
  65. package/lib/components/resizable_container/resizable_container.js +7 -9
  66. package/lib/components/resizable_container/resizable_container.styles.js +31 -0
  67. package/lib/components/resizable_container/resizable_panel.js +28 -49
  68. package/lib/components/resizable_container/resizable_panel.styles.js +74 -0
  69. package/lib/components/search_bar/query/ast.js +14 -3
  70. package/lib/components/tool_tip/tool_tip.js +3 -2
  71. package/lib/components/tool_tip/tool_tip.styles.js +18 -26
  72. package/lib/components/tool_tip/tool_tip_arrow.js +19 -4
  73. package/lib/components/tool_tip/tool_tip_popover.js +6 -6
  74. package/lib/components/tour/tour.styles.js +3 -2
  75. package/lib/components/tour/tour_step.js +7 -5
  76. package/lib/global_styling/functions/logicals.js +5 -3
  77. package/lib/global_styling/functions/math.js +37 -19
  78. package/lib/global_styling/mixins/_padding.js +17 -10
  79. package/optimize/es/components/basic_table/in_memory_table.js +1 -1
  80. package/optimize/es/components/code/code.js +7 -3
  81. package/optimize/es/components/code/code.styles.js +32 -0
  82. package/optimize/es/components/code/code_block.js +70 -299
  83. package/optimize/es/components/code/code_block.styles.js +153 -0
  84. package/optimize/es/components/code/code_block_controls.js +29 -0
  85. package/optimize/es/components/code/code_block_controls.styles.js +43 -0
  86. package/optimize/es/components/code/code_block_copy.js +55 -0
  87. package/optimize/es/components/code/code_block_full_screen.js +80 -0
  88. package/optimize/es/components/code/code_block_line.styles.js +49 -0
  89. package/optimize/es/components/code/code_block_overflow.js +67 -0
  90. package/optimize/es/components/code/code_block_virtualized.js +59 -0
  91. package/optimize/es/components/code/code_syntax.styles.js +43 -0
  92. package/optimize/es/components/code/utils.js +43 -37
  93. package/optimize/es/components/overlay_mask/overlay_mask.js +8 -9
  94. package/optimize/es/components/overlay_mask/overlay_mask.styles.js +4 -14
  95. package/optimize/es/components/overlay_mask/overlay_mask_body.styles.js +18 -0
  96. package/optimize/es/components/provider/provider.js +1 -5
  97. package/optimize/es/components/resizable_container/helpers.js +2 -2
  98. package/optimize/es/components/resizable_container/resizable_container.js +6 -9
  99. package/optimize/es/components/resizable_container/resizable_container.styles.js +28 -0
  100. package/optimize/es/components/resizable_container/resizable_panel.js +25 -48
  101. package/optimize/es/components/resizable_container/resizable_panel.styles.js +69 -0
  102. package/optimize/es/components/search_bar/query/ast.js +14 -3
  103. package/optimize/es/components/tool_tip/tool_tip.js +3 -2
  104. package/optimize/es/components/tool_tip/tool_tip.styles.js +17 -22
  105. package/optimize/es/components/tool_tip/tool_tip_arrow.js +9 -3
  106. package/optimize/es/components/tool_tip/tool_tip_popover.js +7 -7
  107. package/optimize/es/components/tour/tour.styles.js +4 -3
  108. package/optimize/es/components/tour/tour_step.js +7 -5
  109. package/optimize/es/global_styling/functions/logicals.js +5 -3
  110. package/optimize/es/global_styling/functions/math.js +35 -17
  111. package/optimize/es/global_styling/mixins/_padding.js +13 -9
  112. package/optimize/lib/components/basic_table/in_memory_table.js +1 -1
  113. package/optimize/lib/components/code/code.js +9 -3
  114. package/optimize/lib/components/code/code.styles.js +35 -0
  115. package/optimize/lib/components/code/code_block.js +71 -306
  116. package/optimize/lib/components/code/code_block.styles.js +156 -0
  117. package/optimize/lib/components/code/code_block_controls.js +48 -0
  118. package/optimize/lib/components/code/code_block_controls.styles.js +39 -0
  119. package/optimize/lib/components/code/code_block_copy.js +78 -0
  120. package/optimize/lib/components/code/code_block_full_screen.js +108 -0
  121. package/optimize/lib/components/code/code_block_line.styles.js +45 -0
  122. package/optimize/lib/components/code/code_block_overflow.js +82 -0
  123. package/optimize/lib/components/code/code_block_virtualized.js +81 -0
  124. package/optimize/lib/components/code/code_syntax.styles.js +57 -0
  125. package/optimize/lib/components/code/utils.js +40 -37
  126. package/optimize/lib/components/overlay_mask/overlay_mask.js +9 -9
  127. package/optimize/lib/components/overlay_mask/overlay_mask.styles.js +13 -17
  128. package/optimize/lib/components/overlay_mask/overlay_mask_body.styles.js +20 -0
  129. package/optimize/lib/components/provider/provider.js +7 -12
  130. package/optimize/lib/components/resizable_container/helpers.js +2 -2
  131. package/optimize/lib/components/resizable_container/resizable_container.js +7 -9
  132. package/optimize/lib/components/resizable_container/resizable_container.styles.js +31 -0
  133. package/optimize/lib/components/resizable_container/resizable_panel.js +28 -49
  134. package/optimize/lib/components/resizable_container/resizable_panel.styles.js +76 -0
  135. package/optimize/lib/components/search_bar/query/ast.js +14 -3
  136. package/optimize/lib/components/tool_tip/tool_tip.js +3 -2
  137. package/optimize/lib/components/tool_tip/tool_tip.styles.js +18 -26
  138. package/optimize/lib/components/tool_tip/tool_tip_arrow.js +10 -10
  139. package/optimize/lib/components/tool_tip/tool_tip_popover.js +6 -6
  140. package/optimize/lib/components/tour/tour.styles.js +3 -2
  141. package/optimize/lib/components/tour/tour_step.js +7 -5
  142. package/optimize/lib/global_styling/functions/logicals.js +4 -10
  143. package/optimize/lib/global_styling/functions/math.js +37 -19
  144. package/optimize/lib/global_styling/mixins/_padding.js +17 -10
  145. package/package.json +8 -7
  146. package/src/components/index.scss +0 -1
  147. package/src/components/resizable_container/_index.scss +0 -2
  148. package/src/global_styling/mixins/_header.scss +1 -1
  149. package/src/global_styling/variables/_index.scss +0 -1
  150. package/src/themes/amsterdam/overrides/_index.scss +0 -1
  151. package/test-env/components/basic_table/in_memory_table.js +8 -2
  152. package/test-env/components/code/code.styles.js +35 -0
  153. package/test-env/components/code/code_block.styles.js +156 -0
  154. package/test-env/components/code/code_block_controls.js +48 -0
  155. package/test-env/components/code/code_block_controls.styles.js +39 -0
  156. package/test-env/components/code/code_block_copy.js +78 -0
  157. package/test-env/components/code/code_block_full_screen.js +108 -0
  158. package/test-env/components/code/code_block_line.styles.js +45 -0
  159. package/test-env/components/code/code_block_overflow.js +82 -0
  160. package/test-env/components/code/code_block_virtualized.js +81 -0
  161. package/test-env/components/code/code_syntax.styles.js +57 -0
  162. package/test-env/components/code/utils.js +40 -37
  163. package/test-env/components/collapsible_nav/collapsible_nav.js +0 -5
  164. package/test-env/components/overlay_mask/overlay_mask.js +9 -14
  165. package/test-env/components/overlay_mask/overlay_mask.styles.js +13 -17
  166. package/test-env/components/overlay_mask/overlay_mask_body.styles.js +20 -0
  167. package/test-env/components/provider/provider.js +7 -12
  168. package/test-env/components/resizable_container/helpers.js +2 -2
  169. package/test-env/components/resizable_container/resizable_container.js +7 -9
  170. package/test-env/components/resizable_container/resizable_container.styles.js +31 -0
  171. package/test-env/components/resizable_container/resizable_panel.js +28 -49
  172. package/test-env/components/resizable_container/resizable_panel.styles.js +76 -0
  173. package/test-env/components/search_bar/query/ast.js +14 -3
  174. package/test-env/components/tool_tip/tool_tip.js +3 -2
  175. package/test-env/components/tool_tip/tool_tip.styles.js +18 -26
  176. package/test-env/components/tool_tip/tool_tip_arrow.js +16 -11
  177. package/test-env/components/tool_tip/tool_tip_popover.js +6 -6
  178. package/test-env/components/tour/tour.styles.js +3 -2
  179. package/test-env/components/tour/tour_step.js +7 -5
  180. package/test-env/global_styling/functions/logicals.js +4 -10
  181. package/test-env/global_styling/functions/math.js +37 -19
  182. package/test-env/global_styling/mixins/_padding.js +17 -10
  183. package/src/components/code/_code.scss +0 -15
  184. package/src/components/code/_code_block.scss +0 -177
  185. package/src/components/code/_index.scss +0 -4
  186. package/src/components/code/_mixins.scss +0 -127
  187. package/src/components/code/_variables.scss +0 -5
  188. package/src/components/resizable_container/_resizable_container.scss +0 -8
  189. package/src/components/resizable_container/_resizable_panel.scss +0 -51
  190. package/src/global_styling/variables/_colors_code.scss +0 -23
  191. package/src/themes/amsterdam/overrides/_code.scss +0 -9
@@ -17,6 +17,10 @@ var _classnames = _interopRequireDefault(require("classnames"));
17
17
 
18
18
  var _utils = require("./utils");
19
19
 
20
+ var _services = require("../../services");
21
+
22
+ var _code = require("./code.styles");
23
+
20
24
  var _react2 = require("@emotion/react");
21
25
 
22
26
  var _excluded = ["transparentBackground", "language", "children", "className"];
@@ -55,11 +59,13 @@ var EuiCode = function EuiCode(_ref) {
55
59
  var content = (0, _react.useMemo)(function () {
56
60
  return (0, _utils.getHtmlContent)(data, children);
57
61
  }, [data, children]);
58
- var classes = (0, _classnames.default)('euiCode', {
59
- 'euiCode--transparentBackground': transparentBackground
60
- }, className);
62
+ var classes = (0, _classnames.default)('euiCode', className);
63
+ var euiTheme = (0, _services.useEuiTheme)();
64
+ var styles = (0, _code.euiCodeStyles)(euiTheme);
65
+ var cssStyles = [styles.euiCode, transparentBackground && styles.transparentBackground];
61
66
  return (0, _react2.jsx)("code", _extends({
62
67
  className: classes,
68
+ css: cssStyles,
63
69
  "data-code-language": language
64
70
  }, rest), content);
65
71
  };
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.euiCodeStyles = void 0;
7
+
8
+ var _react = require("@emotion/react");
9
+
10
+ var _code_syntax = require("./code_syntax.styles");
11
+
12
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
13
+
14
+ var _ref = process.env.NODE_ENV === "production" ? {
15
+ name: "gfiv3z-transparentBackground",
16
+ styles: "background:transparent;label:transparentBackground;"
17
+ } : {
18
+ name: "gfiv3z-transparentBackground",
19
+ styles: "background:transparent;label:transparentBackground;",
20
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
21
+ };
22
+
23
+ var euiCodeStyles = function euiCodeStyles(euiThemeContext) {
24
+ var euiTheme = euiThemeContext.euiTheme;
25
+ var euiCodeSyntax = (0, _code_syntax.euiCodeSyntaxColors)(euiThemeContext);
26
+ return {
27
+ /*
28
+ * 1. Size the code against the text its embedded within.
29
+ */
30
+ euiCode: /*#__PURE__*/(0, _react.css)("font-family:", euiTheme.font.familyCode, ";font-size:0.9em;padding:0.2em 0.5em;background:", euiCodeSyntax.backgroundColor, ";border-radius:", euiTheme.border.radius.small, ";font-weight:", euiTheme.font.weight.bold, ";color:", euiCodeSyntax.inlineCodeColor, ";", (0, _code_syntax.euiCodeSyntaxTokens)(euiThemeContext), ";;label:euiCode;"),
31
+ transparentBackground: _ref
32
+ };
33
+ };
34
+
35
+ exports.euiCodeStyles = euiCodeStyles;
@@ -11,31 +11,21 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
12
  var _classnames = _interopRequireDefault(require("classnames"));
13
13
 
14
- var _reactWindow = require("react-window");
15
-
16
14
  var _services = require("../../services");
17
15
 
18
- var _auto_sizer = require("../auto_sizer");
19
-
20
- var _button = require("../button");
21
-
22
- var _common = require("../common");
23
-
24
- var _copy = require("../copy");
25
-
26
- var _focus_trap = require("../focus_trap");
16
+ var _utils = require("./utils");
27
17
 
28
- var _i18n = require("../i18n");
18
+ var _code_block_overflow = require("./code_block_overflow");
29
19
 
30
- var _inner_text = require("../inner_text");
20
+ var _code_block_copy = require("./code_block_copy");
31
21
 
32
- var _mutation_observer = require("../observer/mutation_observer");
22
+ var _code_block_full_screen = require("./code_block_full_screen");
33
23
 
34
- var _resize_observer = require("../observer/resize_observer");
24
+ var _code_block_controls = require("./code_block_controls");
35
25
 
36
- var _overlay_mask = require("../overlay_mask");
26
+ var _code_block_virtualized = require("./code_block_virtualized");
37
27
 
38
- var _utils = require("./utils");
28
+ var _code_block = require("./code_block.styles");
39
29
 
40
30
  var _react2 = require("@emotion/react");
41
31
 
@@ -79,21 +69,9 @@ var fontSizeToRowHeightMap = {
79
69
  m: 21,
80
70
  l: 24
81
71
  };
82
- var fontSizeToClassNameMap = {
83
- s: 'euiCodeBlock--fontSmall',
84
- m: 'euiCodeBlock--fontMedium',
85
- l: 'euiCodeBlock--fontLarge'
86
- };
87
- var FONT_SIZES = (0, _common.keysOf)(fontSizeToClassNameMap);
72
+ var FONT_SIZES = ['s', 'm', 'l'];
88
73
  exports.FONT_SIZES = FONT_SIZES;
89
- var paddingSizeToClassNameMap = {
90
- none: '',
91
- s: 'euiCodeBlock--paddingSmall',
92
- m: 'euiCodeBlock--paddingMedium',
93
- l: 'euiCodeBlock--paddingLarge'
94
- };
95
- var PADDING_SIZES = (0, _common.keysOf)(paddingSizeToClassNameMap); // This exclusive union enforces specific props based on isVirtualized
96
-
74
+ var PADDING_SIZES = ['none', 's', 'm', 'l'];
97
75
  exports.PADDING_SIZES = PADDING_SIZES;
98
76
 
99
77
  var EuiCodeBlock = function EuiCodeBlock(_ref) {
@@ -117,6 +95,7 @@ var EuiCodeBlock = function EuiCodeBlock(_ref) {
117
95
  lineNumbers = _ref$lineNumbers === void 0 ? false : _ref$lineNumbers,
118
96
  rest = _objectWithoutProperties(_ref, _excluded);
119
97
 
98
+ var euiTheme = (0, _services.useEuiTheme)();
120
99
  var language = (0, _react.useMemo)(function () {
121
100
  return (0, _utils.checkSupportedLanguage)(_language);
122
101
  }, [_language]);
@@ -136,8 +115,8 @@ var EuiCodeBlock = function EuiCodeBlock(_ref) {
136
115
  return [];
137
116
  }
138
117
 
139
- return (0, _utils.highlightByLine)(children, language, lineNumbersConfig);
140
- }, [children, language, lineNumbersConfig]); // Used by `pre` when `isVirtualized=false` or `children` is not parsable
118
+ return (0, _utils.highlightByLine)(children, language, lineNumbersConfig, euiTheme);
119
+ }, [children, language, lineNumbersConfig, euiTheme]); // Used by `pre` when `isVirtualized=false` or `children` is not parsable
141
120
 
142
121
  var content = (0, _react.useMemo)(function () {
143
122
  return (0, _utils.getHtmlContent)(data, children);
@@ -146,112 +125,92 @@ var EuiCodeBlock = function EuiCodeBlock(_ref) {
146
125
  return !!(_isVirtualized && Array.isArray(data));
147
126
  }, [_isVirtualized, data]);
148
127
 
149
- var _useCopy = useCopy({
128
+ var _useCopy = (0, _code_block_copy.useCopy)({
150
129
  isCopyable: isCopyable,
151
130
  isVirtualized: isVirtualized,
152
131
  children: children
153
132
  }),
154
133
  innerTextRef = _useCopy.innerTextRef,
155
- showCopyButton = _useCopy.showCopyButton,
156
- textToCopy = _useCopy.textToCopy;
134
+ copyButton = _useCopy.copyButton;
157
135
 
158
- var _useOverflowDetection = useOverflowDetection(),
159
- setWrapperRef = _useOverflowDetection.setWrapperRef,
160
- tabIndex = _useOverflowDetection.tabIndex;
136
+ var _useOverflow = (0, _code_block_overflow.useOverflow)({
137
+ overflowHeight: overflowHeight
138
+ }),
139
+ setWrapperRef = _useOverflow.setWrapperRef,
140
+ tabIndex = _useOverflow.tabIndex,
141
+ overflowHeightStyles = _useOverflow.overflowHeightStyles;
161
142
 
162
143
  var combinedRef = (0, _services.useCombinedRefs)([innerTextRef, setWrapperRef]);
163
144
 
164
- var _useFullScreen = useFullScreen({
145
+ var _useFullScreen = (0, _code_block_full_screen.useFullScreen)({
165
146
  overflowHeight: overflowHeight
166
147
  }),
167
- showFullScreenButton = _useFullScreen.showFullScreenButton,
168
- onKeyDown = _useFullScreen.onKeyDown,
148
+ fullScreenButton = _useFullScreen.fullScreenButton,
169
149
  isFullScreen = _useFullScreen.isFullScreen,
170
- toggleFullScreen = _useFullScreen.toggleFullScreen; // Classes used in both fullscreen and non-fullscreen mode
171
-
172
-
173
- var wrapperClasses = (0, _classnames.default)(className, 'euiCodeBlock', {
174
- 'euiCodeBlock--hasControl': showCopyButton || showFullScreenButton,
175
- 'euiCodeBlock--hasBothControls': showCopyButton && showFullScreenButton,
176
- 'euiCodeBlock--hasLineNumbers': lineNumbersConfig.show
177
- }); // Classes used in non-fullscreen mode only
150
+ onKeyDown = _useFullScreen.onKeyDown;
151
+
152
+ var hasControls = !!(copyButton || fullScreenButton);
153
+ var hasBothControls = !!(copyButton && fullScreenButton);
154
+ var styles = (0, _code_block.euiCodeBlockStyles)(euiTheme);
155
+ var cssStyles = [styles.euiCodeBlock, styles[fontSize], transparentBackground && styles.transparentBackground, hasControls && (hasBothControls ? styles.hasBothControls[paddingSize] : styles.hasControls[paddingSize])];
156
+
157
+ var _useMemo = (0, _react.useMemo)(function () {
158
+ var isWhiteSpacePre = whiteSpace === 'pre' || isVirtualized;
159
+ var styles = (0, _code_block.euiCodeBlockPreStyles)(euiTheme);
160
+ var cssStyles = [styles.euiCodeBlock__pre, isWhiteSpacePre ? styles.whiteSpace.pre.pre : styles.whiteSpace.preWrap.preWrap];
161
+ var preProps = {
162
+ className: 'euiCodeBlock__pre',
163
+ css: [].concat(cssStyles, [styles.padding[paddingSize], hasControls && (isWhiteSpacePre ? styles.whiteSpace.pre.controlsOffset[paddingSize] : styles.whiteSpace.preWrap.controlsOffset[paddingSize])]),
164
+ tabIndex: isVirtualized ? 0 : tabIndex
165
+ };
166
+ var preFullscreenProps = {
167
+ className: 'euiCodeBlock__pre',
168
+ css: [].concat(cssStyles, [// Force fullscreen to use xl padding
169
+ styles.padding.xl, hasControls && (isWhiteSpacePre ? styles.whiteSpace.pre.controlsOffset.xl : styles.whiteSpace.preWrap.controlsOffset.xl)]),
170
+ tabIndex: 0,
171
+ onKeyDown: onKeyDown
172
+ };
173
+ return [preProps, preFullscreenProps];
174
+ }, [euiTheme, whiteSpace, isVirtualized, hasControls, paddingSize, onKeyDown, tabIndex]),
175
+ _useMemo2 = _slicedToArray(_useMemo, 2),
176
+ preProps = _useMemo2[0],
177
+ preFullscreenProps = _useMemo2[1];
178
178
 
179
- var classes = (0, _classnames.default)(wrapperClasses, fontSizeToClassNameMap[fontSize], paddingSizeToClassNameMap[paddingSize], {
180
- 'euiCodeBlock--transparentBackground': transparentBackground
181
- });
182
179
  var codeProps = (0, _react.useMemo)(function () {
180
+ var styles = (0, _code_block.euiCodeBlockCodeStyles)(euiTheme);
181
+ var cssStyles = [styles.euiCodeBlock__code, isVirtualized && styles.isVirtualized];
183
182
  return _objectSpread({
184
183
  className: 'euiCodeBlock__code',
184
+ css: cssStyles,
185
185
  'data-code-language': language
186
186
  }, rest);
187
- }, [language, rest]);
188
- var preClasses = (0, _classnames.default)('euiCodeBlock__pre', {
189
- 'euiCodeBlock__pre--whiteSpacePre': whiteSpace === 'pre' || isVirtualized,
190
- 'euiCodeBlock__pre--whiteSpacePreWrap': whiteSpace === 'pre-wrap' && !isVirtualized,
191
- 'euiCodeBlock__pre--isVirtualized': isVirtualized
192
- });
193
- var preFullscreenProps = (0, _react.useMemo)(function () {
194
- return {
195
- className: preClasses,
196
- tabIndex: 0,
197
- onKeyDown: onKeyDown
198
- };
199
- }, [preClasses, onKeyDown]);
200
- var overflowHeightStyles = (0, _react.useMemo)(function () {
201
- if (overflowHeight) {
202
- var property = typeof overflowHeight === 'string' ? 'height' : 'maxHeight';
203
- return _defineProperty({}, property, overflowHeight);
204
- }
205
-
206
- return {};
207
- }, [overflowHeight]);
208
- var wrapperProps = (0, _react.useMemo)(function () {
209
- return {
210
- className: classes,
211
- style: overflowHeightStyles
212
- };
213
- }, [classes, overflowHeightStyles]);
214
- var codeBlockControls = (0, _react.useMemo)(function () {
215
- if (showCopyButton || showFullScreenButton) {
216
- return (0, _react2.jsx)("div", {
217
- className: "euiCodeBlock__controls"
218
- }, showFullScreenButton && (0, _react2.jsx)(FullScreenButton, {
219
- isFullScreen: isFullScreen,
220
- toggleFullScreen: toggleFullScreen
221
- }), showCopyButton && (0, _react2.jsx)(CopyButton, {
222
- textToCopy: textToCopy
223
- }));
224
- }
225
- }, [isFullScreen, toggleFullScreen, showCopyButton, showFullScreenButton, textToCopy]);
226
- return (0, _react2.jsx)("div", wrapperProps, isVirtualized ? (0, _react2.jsx)(VirtualizedCodeBlock, {
187
+ }, [language, euiTheme, isVirtualized, rest]);
188
+ return (0, _react2.jsx)("div", {
189
+ css: cssStyles,
190
+ className: (0, _classnames.default)('euiCodeBlock', className),
191
+ style: overflowHeightStyles
192
+ }, isVirtualized ? (0, _react2.jsx)(_code_block_virtualized.EuiCodeBlockVirtualized, {
227
193
  data: data,
228
194
  rowHeight: fontSizeToRowHeightMap[fontSize],
229
195
  overflowHeight: overflowHeight,
230
- preProps: preFullscreenProps // Note: the virtualized codeblock always sets a tabIndex of 0
231
- ,
196
+ preProps: preProps,
232
197
  codeProps: codeProps
233
- }) : (0, _react2.jsx)("pre", {
198
+ }) : (0, _react2.jsx)("pre", _extends({}, preProps, {
234
199
  ref: combinedRef,
235
- style: overflowHeightStyles,
236
- className: preClasses,
237
- tabIndex: tabIndex
238
- }, (0, _react2.jsx)("code", codeProps, content)), codeBlockControls, isFullScreen && (0, _react2.jsx)(FullScreenDisplay, {
239
- className: wrapperClasses
240
- }, isVirtualized ? (0, _react2.jsx)(VirtualizedCodeBlock, {
200
+ style: overflowHeightStyles
201
+ }), (0, _react2.jsx)("code", codeProps, content)), (0, _react2.jsx)(_code_block_controls.EuiCodeBlockControls, {
202
+ controls: [fullScreenButton, copyButton],
203
+ paddingSize: paddingSize
204
+ }), isFullScreen && (0, _react2.jsx)(_code_block_full_screen.EuiCodeBlockFullScreenWrapper, null, isVirtualized ? (0, _react2.jsx)(_code_block_virtualized.EuiCodeBlockVirtualized, {
241
205
  data: data,
242
206
  rowHeight: fontSizeToRowHeightMap.l,
243
207
  preProps: preFullscreenProps,
244
208
  codeProps: codeProps
245
- }) : (0, _react2.jsx)("pre", preFullscreenProps, (0, _react2.jsx)("code", codeProps, content)), codeBlockControls));
209
+ }) : (0, _react2.jsx)("pre", preFullscreenProps, (0, _react2.jsx)("code", codeProps, content)), (0, _react2.jsx)(_code_block_controls.EuiCodeBlockControls, {
210
+ controls: [fullScreenButton, copyButton],
211
+ paddingSize: "l"
212
+ })));
246
213
  };
247
- /**
248
- * Overflow logic
249
- *
250
- * Detects whether the code block overflows and returns a tabIndex of 0 if so,
251
- * which allows keyboard users to use the up/down arrow keys to scroll through
252
- * the container.
253
- */
254
-
255
214
 
256
215
  exports.EuiCodeBlock = EuiCodeBlock;
257
216
  EuiCodeBlock.propTypes = {
@@ -266,8 +225,8 @@ EuiCodeBlock.propTypes = {
266
225
  */
267
226
  language: _propTypes.default.string,
268
227
  transparentBackground: _propTypes.default.bool,
269
- paddingSize: _propTypes.default.oneOf(["none", "s", "m", "l"]),
270
- fontSize: _propTypes.default.oneOf(["s", "m", "l"]),
228
+ paddingSize: _propTypes.default.any,
229
+ fontSize: _propTypes.default.any,
271
230
 
272
231
  /**
273
232
  * Specify how `white-space` inside the element is handled.
@@ -306,211 +265,4 @@ EuiCodeBlock.propTypes = {
306
265
  * `whiteSpace` can only be `pre`.
307
266
  */
308
267
  isVirtualized: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.oneOfType([_propTypes.default.oneOf([true]).isRequired, _propTypes.default.oneOf([false])])])
309
- };
310
-
311
- var useOverflowDetection = function useOverflowDetection() {
312
- var _useState = (0, _react.useState)(null),
313
- _useState2 = _slicedToArray(_useState, 2),
314
- wrapperRef = _useState2[0],
315
- setWrapperRef = _useState2[1];
316
-
317
- var _useState3 = (0, _react.useState)(-1),
318
- _useState4 = _slicedToArray(_useState3, 2),
319
- tabIndex = _useState4[0],
320
- setTabIndex = _useState4[1];
321
-
322
- var _useResizeObserver = (0, _resize_observer.useResizeObserver)(wrapperRef),
323
- width = _useResizeObserver.width,
324
- height = _useResizeObserver.height;
325
-
326
- var doesOverflow = function doesOverflow() {
327
- if (!wrapperRef) return;
328
- var clientWidth = wrapperRef.clientWidth,
329
- clientHeight = wrapperRef.clientHeight,
330
- scrollWidth = wrapperRef.scrollWidth,
331
- scrollHeight = wrapperRef.scrollHeight;
332
- var doesOverflow = scrollHeight > clientHeight || scrollWidth > clientWidth;
333
- setTabIndex(doesOverflow ? 0 : -1);
334
- };
335
-
336
- (0, _mutation_observer.useMutationObserver)(wrapperRef, doesOverflow, {
337
- subtree: true,
338
- childList: true
339
- });
340
- (0, _react.useEffect)(doesOverflow, [width, height, wrapperRef]);
341
- return {
342
- setWrapperRef: setWrapperRef,
343
- tabIndex: tabIndex
344
- };
345
- };
346
- /**
347
- * Copy logic
348
- */
349
-
350
-
351
- var CopyButton = function CopyButton(_ref3) {
352
- var textToCopy = _ref3.textToCopy;
353
- var copyButton = (0, _i18n.useEuiI18n)('euiCodeBlock.copyButton', 'Copy');
354
- return (0, _react2.jsx)("div", {
355
- className: "euiCodeBlock__copyButton"
356
- }, (0, _react2.jsx)(_copy.EuiCopy, {
357
- textToCopy: textToCopy
358
- }, function (copy) {
359
- return (0, _react2.jsx)(_button.EuiButtonIcon, {
360
- onClick: copy,
361
- iconType: "copyClipboard",
362
- color: "text",
363
- "aria-label": copyButton
364
- });
365
- }));
366
- };
367
-
368
- CopyButton.propTypes = {
369
- textToCopy: _propTypes.default.string.isRequired
370
- };
371
-
372
- var useCopy = function useCopy(_ref4) {
373
- var isCopyable = _ref4.isCopyable,
374
- isVirtualized = _ref4.isVirtualized,
375
- children = _ref4.children;
376
-
377
- var _useInnerText = (0, _inner_text.useInnerText)(''),
378
- _useInnerText2 = _slicedToArray(_useInnerText, 2),
379
- innerTextRef = _useInnerText2[0],
380
- _innerText = _useInnerText2[1];
381
-
382
- var innerText = (0, _react.useMemo)(function () {
383
- return (_innerText === null || _innerText === void 0 ? void 0 : _innerText.replace(/[\r\n?]{2}|\n\n/g, '\n')) || '';
384
- }, [_innerText]);
385
- var textToCopy = isVirtualized ? "".concat(children) : innerText; // Virtualized code blocks do not have inner text
386
-
387
- var showCopyButton = isCopyable && textToCopy;
388
- return {
389
- innerTextRef: innerTextRef,
390
- showCopyButton: showCopyButton,
391
- textToCopy: textToCopy
392
- };
393
- };
394
- /**
395
- * Fullscreen logic
396
- */
397
-
398
-
399
- var FullScreenButton = function FullScreenButton(_ref5) {
400
- var isFullScreen = _ref5.isFullScreen,
401
- toggleFullScreen = _ref5.toggleFullScreen;
402
-
403
- var _useEuiI18n = (0, _i18n.useEuiI18n)(['euiCodeBlock.fullscreenCollapse', 'euiCodeBlock.fullscreenExpand'], ['Collapse', 'Expand']),
404
- _useEuiI18n2 = _slicedToArray(_useEuiI18n, 2),
405
- fullscreenCollapse = _useEuiI18n2[0],
406
- fullscreenExpand = _useEuiI18n2[1];
407
-
408
- return (0, _react2.jsx)(_button.EuiButtonIcon, {
409
- className: "euiCodeBlock__fullScreenButton",
410
- onClick: toggleFullScreen,
411
- iconType: isFullScreen ? 'fullScreenExit' : 'fullScreen',
412
- color: "text",
413
- "aria-label": isFullScreen ? fullscreenCollapse : fullscreenExpand
414
- });
415
- };
416
-
417
- FullScreenButton.propTypes = {
418
- isFullScreen: _propTypes.default.bool.isRequired,
419
- toggleFullScreen: _propTypes.default.func.isRequired
420
- };
421
-
422
- var FullScreenDisplay = function FullScreenDisplay(_ref6) {
423
- var children = _ref6.children,
424
- className = _ref6.className;
425
- // Force fullscreen to use large font and padding.
426
- var fullScreenClasses = (0, _classnames.default)(className, 'euiCodeBlock--fontLarge', 'euiCodeBlock--paddingLarge', 'euiCodeBlock-isFullScreen'); // Attaches to the body because of EuiOverlayMask's React portal usage.
427
-
428
- return (0, _react2.jsx)(_overlay_mask.EuiOverlayMask, null, (0, _react2.jsx)(_focus_trap.EuiFocusTrap, {
429
- clickOutsideDisables: true
430
- }, (0, _react2.jsx)("div", {
431
- className: fullScreenClasses
432
- }, children)));
433
- };
434
-
435
- FullScreenDisplay.propTypes = {
436
- className: _propTypes.default.string.isRequired
437
- };
438
-
439
- var useFullScreen = function useFullScreen(_ref7) {
440
- var overflowHeight = _ref7.overflowHeight;
441
-
442
- var _useState5 = (0, _react.useState)(false),
443
- _useState6 = _slicedToArray(_useState5, 2),
444
- isFullScreen = _useState6[0],
445
- setIsFullScreen = _useState6[1];
446
-
447
- var toggleFullScreen = (0, _react.useCallback)(function () {
448
- setIsFullScreen(function (isFullScreen) {
449
- return !isFullScreen;
450
- });
451
- }, []);
452
- var onKeyDown = (0, _react.useCallback)(function (event) {
453
- if (event.key === _services.keys.ESCAPE) {
454
- event.preventDefault();
455
- event.stopPropagation();
456
- setIsFullScreen(false);
457
- }
458
- }, []);
459
- var showFullScreenButton = !!overflowHeight;
460
- return {
461
- showFullScreenButton: showFullScreenButton,
462
- isFullScreen: isFullScreen,
463
- toggleFullScreen: toggleFullScreen,
464
- onKeyDown: onKeyDown
465
- };
466
- };
467
- /**
468
- * Virtualization logic
469
- */
470
-
471
-
472
- var ListRow = function ListRow(_ref8) {
473
- var data = _ref8.data,
474
- index = _ref8.index,
475
- style = _ref8.style;
476
- var row = data[index];
477
- row.properties.style = style;
478
- return (0, _utils.nodeToHtml)(row, index, data, 0);
479
- };
480
-
481
- var VirtualizedCodeBlock = function VirtualizedCodeBlock(_ref9) {
482
- var data = _ref9.data,
483
- rowHeight = _ref9.rowHeight,
484
- overflowHeight = _ref9.overflowHeight,
485
- preProps = _ref9.preProps,
486
- codeProps = _ref9.codeProps;
487
- var VirtualizedOuterElement = (0, _react.useMemo)(function () {
488
- return /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
489
- return (0, _react2.jsx)("pre", _extends({}, props, {
490
- ref: ref
491
- }, preProps));
492
- });
493
- }, [preProps]);
494
- var VirtualizedInnerElement = (0, _react.useMemo)(function () {
495
- return /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
496
- return (0, _react2.jsx)("code", _extends({}, props, {
497
- ref: ref
498
- }, codeProps));
499
- });
500
- }, [codeProps]);
501
- return (0, _react2.jsx)(_auto_sizer.EuiAutoSizer, {
502
- disableHeight: typeof overflowHeight === 'number'
503
- }, function (_ref10) {
504
- var height = _ref10.height,
505
- width = _ref10.width;
506
- return (0, _react2.jsx)(_reactWindow.FixedSizeList, {
507
- height: height !== null && height !== void 0 ? height : overflowHeight,
508
- width: width,
509
- itemData: data,
510
- itemSize: rowHeight,
511
- itemCount: data.length,
512
- outerElementType: VirtualizedOuterElement,
513
- innerElementType: VirtualizedInnerElement
514
- }, ListRow);
515
- });
516
268
  };