@elastic/charts 70.1.2 → 71.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 (77) hide show
  1. package/dist/chart_types/metric/renderer/dom/badge.d.ts +2 -0
  2. package/dist/chart_types/metric/renderer/dom/badge.d.ts.map +1 -0
  3. package/dist/chart_types/metric/renderer/dom/badge.js +27 -0
  4. package/dist/chart_types/metric/renderer/dom/badge.js.map +1 -0
  5. package/dist/chart_types/metric/renderer/dom/index.js +16 -8
  6. package/dist/chart_types/metric/renderer/dom/index.js.map +1 -1
  7. package/dist/chart_types/metric/renderer/dom/metric.js +69 -10
  8. package/dist/chart_types/metric/renderer/dom/metric.js.map +1 -1
  9. package/dist/chart_types/metric/renderer/dom/progress.js +51 -13
  10. package/dist/chart_types/metric/renderer/dom/progress.js.map +1 -1
  11. package/dist/chart_types/metric/renderer/dom/secondary_metric.d.ts +2 -0
  12. package/dist/chart_types/metric/renderer/dom/secondary_metric.d.ts.map +1 -0
  13. package/dist/chart_types/metric/renderer/dom/secondary_metric.js +23 -0
  14. package/dist/chart_types/metric/renderer/dom/secondary_metric.js.map +1 -0
  15. package/dist/chart_types/metric/renderer/dom/text.js +73 -56
  16. package/dist/chart_types/metric/renderer/dom/text.js.map +1 -1
  17. package/dist/chart_types/metric/renderer/dom/text_measurements.js +46 -25
  18. package/dist/chart_types/metric/renderer/dom/text_measurements.js.map +1 -1
  19. package/dist/chart_types/metric/renderer/dom/titles.d.ts +2 -0
  20. package/dist/chart_types/metric/renderer/dom/titles.d.ts.map +1 -0
  21. package/dist/chart_types/metric/renderer/dom/titles.js +79 -0
  22. package/dist/chart_types/metric/renderer/dom/titles.js.map +1 -0
  23. package/dist/chart_types/metric/specs/index.d.ts +32 -2
  24. package/dist/chart_types/metric/specs/index.d.ts.map +1 -1
  25. package/dist/chart_types/metric/specs/index.js +9 -1
  26. package/dist/chart_types/metric/specs/index.js.map +1 -1
  27. package/dist/chart_types/specs.d.ts +1 -1
  28. package/dist/chart_types/specs.d.ts.map +1 -1
  29. package/dist/chart_types/specs.js.map +1 -1
  30. package/dist/common/color_calcs.js +37 -0
  31. package/dist/common/color_calcs.js.map +1 -1
  32. package/dist/common/text_utils.d.ts +1 -1
  33. package/dist/common/text_utils.d.ts.map +1 -1
  34. package/dist/common/text_utils.js.map +1 -1
  35. package/dist/legacy/theme_dark.css +1 -0
  36. package/dist/legacy/theme_dark.css.map +1 -0
  37. package/dist/legacy/theme_light.css +1 -0
  38. package/dist/legacy/theme_light.css.map +1 -0
  39. package/dist/legacy/theme_only_dark.css +1 -0
  40. package/dist/legacy/theme_only_dark.css.map +1 -0
  41. package/dist/legacy/theme_only_light.css +1 -0
  42. package/dist/legacy/theme_only_light.css.map +1 -0
  43. package/dist/theme.scss +233 -68
  44. package/dist/theme_dark.css +1 -1
  45. package/dist/theme_dark.css.map +1 -1
  46. package/dist/theme_light.css +1 -1
  47. package/dist/theme_light.css.map +1 -1
  48. package/dist/theme_only_dark.css +1 -1
  49. package/dist/theme_only_dark.css.map +1 -1
  50. package/dist/theme_only_light.css +1 -1
  51. package/dist/theme_only_light.css.map +1 -1
  52. package/dist/utils/themes/amsterdam_dark_theme.d.ts +6 -1
  53. package/dist/utils/themes/amsterdam_dark_theme.d.ts.map +1 -1
  54. package/dist/utils/themes/amsterdam_dark_theme.js +8 -1
  55. package/dist/utils/themes/amsterdam_dark_theme.js.map +1 -1
  56. package/dist/utils/themes/amsterdam_light_theme.d.ts +6 -1
  57. package/dist/utils/themes/amsterdam_light_theme.d.ts.map +1 -1
  58. package/dist/utils/themes/amsterdam_light_theme.js +8 -1
  59. package/dist/utils/themes/amsterdam_light_theme.js.map +1 -1
  60. package/dist/utils/themes/dark_theme.d.ts.map +1 -1
  61. package/dist/utils/themes/dark_theme.js +8 -1
  62. package/dist/utils/themes/dark_theme.js.map +1 -1
  63. package/dist/utils/themes/legacy_dark_theme.d.ts +1 -1
  64. package/dist/utils/themes/legacy_dark_theme.d.ts.map +1 -1
  65. package/dist/utils/themes/legacy_dark_theme.js +8 -1
  66. package/dist/utils/themes/legacy_dark_theme.js.map +1 -1
  67. package/dist/utils/themes/legacy_light_theme.d.ts +1 -1
  68. package/dist/utils/themes/legacy_light_theme.d.ts.map +1 -1
  69. package/dist/utils/themes/legacy_light_theme.js +8 -1
  70. package/dist/utils/themes/legacy_light_theme.js.map +1 -1
  71. package/dist/utils/themes/light_theme.d.ts.map +1 -1
  72. package/dist/utils/themes/light_theme.js +8 -1
  73. package/dist/utils/themes/light_theme.js.map +1 -1
  74. package/dist/utils/themes/theme.d.ts +22 -11
  75. package/dist/utils/themes/theme.d.ts.map +1 -1
  76. package/dist/utils/themes/theme.js.map +1 -1
  77. package/package.json +2 -2
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../../../src/chart_types/metric/renderer/dom/badge.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Badge = exports.BADGE_BORDER = void 0;
7
+ const classnames_1 = __importDefault(require("classnames"));
8
+ const react_1 = __importDefault(require("react"));
9
+ const fill_text_color_1 = require("../../../../common/fill_text_color");
10
+ exports.BADGE_BORDER = 1;
11
+ const ICON_MARGIN = 4;
12
+ const Badge = ({ className, value, backgroundColor, borderColor, icon, iconPosition = 'after', }) => {
13
+ const classes = (0, classnames_1.default)('echBadge__content', className);
14
+ const highContrastColor = (0, fill_text_color_1.fillTextColor)(backgroundColor, backgroundColor);
15
+ const iconStyles = value !== ''
16
+ ? {
17
+ [iconPosition === 'before' ? 'marginInlineEnd' : 'marginInlineStart']: icon ? ICON_MARGIN : undefined,
18
+ }
19
+ : undefined;
20
+ const optionalIcon = icon ? react_1.default.createElement("span", { style: iconStyles }, icon) : null;
21
+ return (react_1.default.createElement("span", { className: classes, style: { backgroundColor, borderColor, color: highContrastColor.color.keyword } },
22
+ iconPosition === 'before' && optionalIcon,
23
+ react_1.default.createElement("span", { className: "echBadge__text" }, value),
24
+ iconPosition === 'after' && optionalIcon));
25
+ };
26
+ exports.Badge = Badge;
27
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../../../src/chart_types/metric/renderer/dom/badge.tsx"],"names":[],"mappings":";;;;;;AAQA,4DAAoC;AACpC,kDAA0B;AAG1B,wEAAmE;AAGtD,QAAA,YAAY,GAAG,CAAC,CAAC;AAE9B,MAAM,WAAW,GAAG,CAAC,CAAC;AAkBf,MAAM,KAAK,GAAyB,CAAC,EAC1C,SAAS,EACT,KAAK,EACL,eAAe,EACf,WAAW,EACX,IAAI,EACJ,YAAY,GAAG,OAAO,GACvB,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,IAAA,+BAAa,EAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAE1E,MAAM,UAAU,GACd,KAAK,KAAK,EAAE;QACV,CAAC,CAAC;YACE,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;SACtG;QACH,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,wCAAM,KAAK,EAAE,UAAU,IAAG,IAAI,CAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAE1E,OAAO,CACL,wCAAM,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE;QACtG,YAAY,KAAK,QAAQ,IAAI,YAAY;QAC1C,wCAAM,SAAS,EAAC,gBAAgB,IAAE,KAAK,CAAQ;QAC9C,YAAY,KAAK,OAAO,IAAI,YAAY,CACpC,CACR,CAAC;AACJ,CAAC,CAAC;AA1BW,QAAA,KAAK,SA0BhB"}
@@ -46,6 +46,16 @@ const light_theme_1 = require("../../../../utils/themes/light_theme");
46
46
  const chart_size_1 = require("../../state/selectors/chart_size");
47
47
  const data_1 = require("../../state/selectors/data");
48
48
  const has_chart_titles_1 = require("../../state/selectors/has_chart_titles");
49
+ function getTextContrastOptions(style) {
50
+ return {
51
+ text: { lightColor: (0, color_library_wrappers_1.colorToRgba)(style.textLightColor), darkColor: (0, color_library_wrappers_1.colorToRgba)(style.textDarkColor) },
52
+ subtitle: {
53
+ lightColor: (0, color_library_wrappers_1.colorToRgba)(style.textSubtitleLightColor),
54
+ darkColor: (0, color_library_wrappers_1.colorToRgba)(style.textSubtitleDarkColor),
55
+ },
56
+ extra: { lightColor: (0, color_library_wrappers_1.colorToRgba)(style.textExtraLightColor), darkColor: (0, color_library_wrappers_1.colorToRgba)(style.textExtraDarkColor) },
57
+ };
58
+ }
49
59
  function Component({ chartId, hasTitles, initialized, size: { width, height }, a11y, specs: [spec], style, backgroundColor, onElementClick, onElementOut, onElementOver, locale, onChartRendered, }) {
50
60
  (0, react_1.useEffect)(() => {
51
61
  onChartRendered();
@@ -57,13 +67,10 @@ function Component({ chartId, hasTitles, initialized, size: { width, height }, a
57
67
  const totalRows = data.length;
58
68
  const maxColumns = data.reduce((acc, row) => Math.max(acc, row.length), 0);
59
69
  const panel = { width: width / maxColumns, height: height / totalRows };
60
- const contrastOptions = {
61
- lightColor: (0, color_library_wrappers_1.colorToRgba)(style.textLightColor),
62
- darkColor: (0, color_library_wrappers_1.colorToRgba)(style.textDarkColor),
63
- };
70
+ const textContrastOptions = getTextContrastOptions(style);
64
71
  const emptyBackgroundRGBA = (0, color_calcs_1.combineColors)((0, color_library_wrappers_1.colorToRgba)(style.emptyBackground), (0, color_library_wrappers_1.colorToRgba)(backgroundColor));
65
72
  const emptyBackground = (0, color_library_wrappers_1.RGBATupleToString)(emptyBackgroundRGBA);
66
- const emptyForegroundColor = (0, color_calcs_1.highContrastColor)(emptyBackgroundRGBA, undefined, contrastOptions).color;
73
+ const emptyForegroundColor = (0, color_calcs_1.highContrastColor)(emptyBackgroundRGBA, undefined, textContrastOptions.text).color;
67
74
  const metricsConfigs = data.reduce((acc, columns, rowIndex) => {
68
75
  acc.configs = acc.configs.concat(columns.map((datum, columnIndex) => {
69
76
  const key = `${columnIndex}-${rowIndex}`;
@@ -79,8 +86,9 @@ function Component({ chartId, hasTitles, initialized, size: { width, height }, a
79
86
  };
80
87
  }
81
88
  const textDimensions = (0, text_measurements_1.getMetricTextPartDimensions)(datum, panel, style, locale);
82
- const fontSize = (0, text_measurements_1.getFitValueFontSize)(textDimensions.heightBasedSizes.valueFontSize, panel.width - textDimensions.progressBarWidth, textDimensions.visibility.gapHeight, textDimensions.textParts, style.minValueFontSize, datum.valueIcon !== undefined);
83
- acc.fittedValueFontSize = Math.min(acc.fittedValueFontSize, fontSize);
89
+ const totalWidth = panel.width - textDimensions.progressBarWidth - textDimensions.iconGridColumnWidth;
90
+ const valueFontSize = (0, text_measurements_1.getFitValueFontSize)(textDimensions.heightBasedSizes.valueFontSize, totalWidth, textDimensions.visibility.gapHeight, textDimensions.textParts, style.minValueFontSize, datum.valueIcon !== undefined);
91
+ acc.fittedValueFontSize = Math.min(acc.fittedValueFontSize, valueFontSize);
84
92
  return {
85
93
  type: 'metric',
86
94
  key,
@@ -119,7 +127,7 @@ function Component({ chartId, hasTitles, initialized, size: { width, height }, a
119
127
  } }, metricsConfigs.configs.map((config) => {
120
128
  return config.type !== 'metric' ? (react_1.default.createElement("li", { key: config.key, role: "presentation" },
121
129
  react_1.default.createElement("div", { className: config.className, style: { borderColor: style.border, backgroundColor: emptyBackground } }, config.type === 'left-empty' && (react_1.default.createElement("div", { className: "echMetricEmpty", style: { borderColor: emptyForegroundColor.keyword } }))))) : (react_1.default.createElement("li", { key: config.key },
122
- react_1.default.createElement(metric_1.Metric, { chartId: chartId, hasTitles: hasTitles, datum: config.datum, totalRows: totalRows, totalColumns: maxColumns, rowIndex: config.rowIndex, columnIndex: config.columnIndex, style: style, backgroundColor: backgroundColor, contrastOptions: contrastOptions, onElementClick: onElementClick, onElementOut: onElementOut, onElementOver: onElementOver, textDimensions: config.textDimensions })));
130
+ react_1.default.createElement(metric_1.Metric, { chartId: chartId, hasTitles: hasTitles, datum: config.datum, totalRows: totalRows, totalColumns: maxColumns, rowIndex: config.rowIndex, columnIndex: config.columnIndex, style: style, backgroundColor: backgroundColor, contrastOptions: textContrastOptions, onElementClick: onElementClick, onElementOut: onElementOut, onElementOver: onElementOver, textDimensions: config.textDimensions })));
123
131
  })));
124
132
  }
125
133
  Component.displayName = 'Metric';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/chart_types/metric/renderer/dom/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/chart_types/metric/renderer/dom/index.tsx"],"names":[],"mappings":"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"}
@@ -38,13 +38,51 @@ const constants_1 = require("../../../../common/constants");
38
38
  const fill_text_color_1 = require("../../../../common/fill_text_color");
39
39
  const common_1 = require("../../../../utils/common");
40
40
  const specs_1 = require("../../specs");
41
+ const progressBarMap = {
42
+ 4: 'small',
43
+ 8: 'medium',
44
+ 16: 'large',
45
+ };
46
+ const getTextColor = ({ metricContext: { backgroundColor, blendedColor, hasProgressBar, hasTrend }, contrastOptions, }) => {
47
+ const highContrastTextColor = (0, fill_text_color_1.fillTextColor)(backgroundColor, hasProgressBar ? backgroundColor : blendedColor, undefined, contrastOptions);
48
+ let finalTextColor = highContrastTextColor.color;
49
+ if (hasTrend) {
50
+ const { ratio, color, shade } = (0, fill_text_color_1.fillTextColor)(backgroundColor, (0, sparkline_1.getSparkLineColor)(blendedColor), undefined, contrastOptions);
51
+ if (shade !== highContrastTextColor.shade && ratio > highContrastTextColor.ratio) {
52
+ finalTextColor = color;
53
+ }
54
+ }
55
+ return finalTextColor.keyword;
56
+ };
57
+ const getTextColors = ({ metricContext, textContrastOptions, }) => {
58
+ return {
59
+ highContrast: getTextColor({
60
+ metricContext,
61
+ contrastOptions: textContrastOptions.text,
62
+ }),
63
+ subtitle: getTextColor({
64
+ metricContext,
65
+ contrastOptions: textContrastOptions.subtitle,
66
+ }),
67
+ extra: getTextColor({
68
+ metricContext,
69
+ contrastOptions: textContrastOptions.extra,
70
+ }),
71
+ };
72
+ };
73
+ const CONTRAST_THRESHOLD = 3.0;
74
+ function isColorContrastOptions(options) {
75
+ return !('text' in options);
76
+ }
41
77
  const Metric = ({ chartId, hasTitles, rowIndex, columnIndex, totalColumns, totalRows, datum, style, backgroundColor: chartBackgroundColor, contrastOptions, textDimensions, onElementClick, onElementOver, onElementOut, }) => {
42
- const progressBarSize = 'small';
78
+ const { progressBarThickness } = textDimensions.heightBasedSizes;
79
+ const progressBarSize = progressBarMap[progressBarThickness] ?? 'medium';
43
80
  const [mouseState, setMouseState] = (0, react_1.useState)('leave');
44
81
  const [lastMouseDownTimestamp, setLastMouseDownTimestamp] = (0, react_1.useState)(0);
45
82
  const metricHTMLId = `echMetric-${chartId}-${rowIndex}-${columnIndex}`;
46
83
  const hasProgressBar = (0, specs_1.isMetricWProgress)(datum);
47
84
  const progressBarDirection = hasProgressBar ? datum.progressBarDirection : undefined;
85
+ const hasTrend = (0, specs_1.isMetricWTrend)(datum);
48
86
  const containerClassName = (0, classnames_1.default)('echMetric', {
49
87
  'echMetric--rightBorder': columnIndex < totalColumns - 1,
50
88
  'echMetric--bottomBorder': rowIndex < totalRows - 1,
@@ -67,16 +105,37 @@ const Metric = ({ chartId, hasTitles, rowIndex, columnIndex, totalColumns, total
67
105
  const datumWithInteractionColor = { ...datum, color: blendedInteractionColor };
68
106
  const event = { type: 'metricElementEvent', rowIndex, columnIndex };
69
107
  const containerStyle = {
70
- backgroundColor: (0, specs_1.isMetricWTrend)(datumWithInteractionColor) ? backgroundColor : datumWithInteractionColor.color,
108
+ backgroundColor: hasTrend ? backgroundColor : datumWithInteractionColor.color,
71
109
  cursor: onElementClick ? 'pointer' : constants_1.DEFAULT_CSS_CURSOR,
72
110
  borderColor: style.border,
73
111
  };
74
- const highContrastTextColor = (0, fill_text_color_1.fillTextColor)(backgroundColor, (0, specs_1.isMetricWProgress)(datum) ? backgroundColor : blendedColor, undefined, contrastOptions);
75
- let finalTextColor = highContrastTextColor.color;
76
- if ((0, specs_1.isMetricWTrend)(datum)) {
77
- const { ratio, color, shade } = (0, fill_text_color_1.fillTextColor)(backgroundColor, (0, sparkline_1.getSparkLineColor)(blendedColor), undefined, contrastOptions);
78
- if (shade !== highContrastTextColor.shade && ratio > highContrastTextColor.ratio) {
79
- finalTextColor = color;
112
+ const textContrastOptions = isColorContrastOptions(contrastOptions)
113
+ ? {
114
+ text: contrastOptions,
115
+ subtitle: contrastOptions,
116
+ extra: contrastOptions,
117
+ }
118
+ : contrastOptions;
119
+ const textColors = getTextColors({
120
+ metricContext: { backgroundColor, blendedColor, hasProgressBar, hasTrend },
121
+ textContrastOptions,
122
+ });
123
+ let badgeBorderColor;
124
+ if ((0, specs_1.isSecondaryMetricProps)(datum.extra) && !!datum.extra.badgeColor && !datum.extra.badgeBorderColor) {
125
+ const metricBackgroundColor = hasProgressBar ? backgroundColor : blendedColor;
126
+ const borderRecommendation = (0, color_calcs_1.getContrastRecommendation)(metricBackgroundColor, datum.extra.badgeColor, {
127
+ contrastThreshold: CONTRAST_THRESHOLD,
128
+ borderOptions: textContrastOptions.extra,
129
+ });
130
+ badgeBorderColor = borderRecommendation.borderColor;
131
+ if (hasTrend) {
132
+ const { shade, borderColor, contrastRatio } = (0, color_calcs_1.getContrastRecommendation)((0, sparkline_1.getSparkLineColor)(blendedColor), datum.extra.badgeColor, {
133
+ contrastThreshold: CONTRAST_THRESHOLD,
134
+ borderOptions: textContrastOptions.extra,
135
+ });
136
+ if (shade !== borderRecommendation.shade && contrastRatio > borderRecommendation.contrastRatio) {
137
+ badgeBorderColor = borderColor;
138
+ }
80
139
  }
81
140
  }
82
141
  const onElementClickHandler = () => onElementClick && onElementClick([event]);
@@ -110,10 +169,10 @@ const Metric = ({ chartId, hasTitles, rowIndex, columnIndex, totalColumns, total
110
169
  }, onClick: (e) => {
111
170
  e.stopPropagation();
112
171
  } },
113
- react_1.default.createElement(text_1.MetricText, { id: metricHTMLId, datum: datumWithInteractionColor, style: style, onElementClick: onElementClick ? onElementClickHandler : undefined, progressBarSize: progressBarSize, highContrastTextColor: finalTextColor.keyword, textDimensions: textDimensions }),
172
+ react_1.default.createElement(text_1.MetricText, { id: metricHTMLId, datum: datumWithInteractionColor, style: style, onElementClick: onElementClick ? onElementClickHandler : undefined, progressBarSize: progressBarSize, textDimensions: textDimensions, colors: textColors, badgeBorderColor: badgeBorderColor }),
114
173
  (0, specs_1.isMetricWTrend)(datumWithInteractionColor) && react_1.default.createElement(sparkline_1.SparkLine, { id: metricHTMLId, datum: datumWithInteractionColor }),
115
174
  (0, specs_1.isMetricWProgress)(datumWithInteractionColor) && (react_1.default.createElement(progress_1.ProgressBar, { datum: datumWithInteractionColor, barBackground: style.barBackground, blendedBarColor: blendedColor, size: progressBarSize })),
116
- react_1.default.createElement("div", { className: "echMetric--outline", style: { color: finalTextColor.keyword } })));
175
+ react_1.default.createElement("div", { className: "echMetric--outline", style: { color: textColors.highContrast } })));
117
176
  };
118
177
  exports.Metric = Metric;
119
178
  //# sourceMappingURL=metric.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metric.js","sourceRoot":"","sources":["../../../../../src/chart_types/metric/renderer/dom/metric.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metric.js","sourceRoot":"","sources":["../../../../../src/chart_types/metric/renderer/dom/metric.tsx"],"names":[],"mappings":"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"}
@@ -7,11 +7,16 @@ exports.ProgressBar = void 0;
7
7
  const classnames_1 = __importDefault(require("classnames"));
8
8
  const d3_scale_1 = require("d3-scale");
9
9
  const react_1 = __importDefault(require("react"));
10
+ const text_measurements_1 = require("./text_measurements");
10
11
  const icon_1 = require("../../../../components/icons/icon");
11
12
  const common_1 = require("../../../../utils/common");
12
13
  const specs_1 = require("../../specs");
13
- const TARGET_SIZE = 8;
14
- const BASELINE_SIZE = 2;
14
+ const PROGRESS_BAR_BORDER_RADIUS = 8;
15
+ const zeroBaselineSizeMap = {
16
+ small: 2,
17
+ medium: 2,
18
+ large: 4,
19
+ };
15
20
  const ProgressBar = ({ datum, barBackground, blendedBarColor, size, }) => {
16
21
  const { title, value, target, valueFormatter, targetFormatter, progressBarDirection } = datum;
17
22
  const isBullet = (0, specs_1.isBulletMetric)(datum);
@@ -25,33 +30,66 @@ const ProgressBar = ({ datum, barBackground, blendedBarColor, size, }) => {
25
30
  const [domainMin, domainMax] = (0, common_1.sortNumbers)(updatedDomain);
26
31
  const scaledValue = scale(value);
27
32
  const [min, max] = (0, common_1.sortNumbers)([scale(0), scaledValue]);
33
+ const endValue = 100 - max;
34
+ const safeStartValue = Math.max(0, min);
35
+ const safeEndValue = Math.max(0, endValue);
28
36
  const positionStyle = isVertical
29
37
  ? {
30
- bottom: `${min}%`,
31
- top: `${100 - max}%`,
38
+ bottom: `${safeStartValue}%`,
39
+ top: `${safeEndValue}%`,
32
40
  }
33
41
  : {
34
- left: `${min}%`,
35
- right: `${100 - max}%`,
42
+ left: `${safeStartValue}%`,
43
+ right: `${safeEndValue}%`,
44
+ };
45
+ let borderRadius = {};
46
+ if (!isVertical && endValue <= 0) {
47
+ borderRadius = {
48
+ ...borderRadius,
49
+ borderTopRightRadius: PROGRESS_BAR_BORDER_RADIUS,
50
+ borderBottomRightRadius: PROGRESS_BAR_BORDER_RADIUS,
36
51
  };
37
- const targetPlacement = (0, common_1.isNil)(target) ? null : `calc(${scale(target)}% - ${TARGET_SIZE / 2}px)`;
38
- const zeroPlacement = domainMin >= 0 || domainMax <= 0 ? null : `calc(${scale(0)}% - ${BASELINE_SIZE / 2}px)`;
52
+ }
53
+ if (!isVertical && min <= 0) {
54
+ borderRadius = {
55
+ ...borderRadius,
56
+ borderTopLeftRadius: PROGRESS_BAR_BORDER_RADIUS,
57
+ borderBottomLeftRadius: PROGRESS_BAR_BORDER_RADIUS,
58
+ };
59
+ }
60
+ if (isVertical && endValue <= 0) {
61
+ borderRadius = {
62
+ ...borderRadius,
63
+ borderTopLeftRadius: PROGRESS_BAR_BORDER_RADIUS,
64
+ borderTopRightRadius: PROGRESS_BAR_BORDER_RADIUS,
65
+ };
66
+ }
67
+ if (isVertical && min <= 0) {
68
+ borderRadius = {
69
+ ...borderRadius,
70
+ borderBottomLeftRadius: PROGRESS_BAR_BORDER_RADIUS,
71
+ borderBottomRightRadius: PROGRESS_BAR_BORDER_RADIUS,
72
+ };
73
+ }
74
+ const zeroBaselineSize = zeroBaselineSizeMap[size];
75
+ const targetPlacement = (0, common_1.isNil)(target) ? null : `calc(${scale(target)}% - ${text_measurements_1.PROGRESS_BAR_TARGET_SIZE / 2}px)`;
76
+ const zeroPlacement = domainMin >= 0 || domainMax <= 0 ? null : `calc(${scale(0)}% - ${zeroBaselineSize / 2}px)`;
39
77
  const labelType = isBullet ? 'Value' : 'Percentage';
40
- return (react_1.default.createElement("div", { className: getDirectionalClasses('Progress', isVertical, size), style: { backgroundColor: size === 'small' ? barBackground : undefined }, title: !isBullet ? '' : `${updatedDomain[0]} to ${updatedDomain[1]}` },
78
+ return (react_1.default.createElement("div", { className: getDirectionalClasses('Progress', isVertical, size), style: { backgroundColor: barBackground }, title: !isBullet ? '' : `${updatedDomain[0]} to ${updatedDomain[1]}` },
41
79
  targetPlacement && (react_1.default.createElement("div", { className: getDirectionalClasses('Target', isVertical, size), style: {
42
80
  [isVertical ? 'bottom' : 'left']: targetPlacement,
43
81
  }, "aria-valuenow": target, title: `${isBullet ? `${datum.valueLabels.target}: ` : ''}${(targetFormatter ?? valueFormatter)(target || 0)}` },
44
- react_1.default.createElement(icon_1.Icon, { height: TARGET_SIZE, width: TARGET_SIZE, type: "downArrow", color: blendedBarColor }))),
82
+ react_1.default.createElement(icon_1.Icon, { height: text_measurements_1.PROGRESS_BAR_TARGET_SIZE, width: text_measurements_1.PROGRESS_BAR_TARGET_SIZE, type: "downArrow", color: blendedBarColor }))),
45
83
  zeroPlacement && (react_1.default.createElement("div", { className: getDirectionalClasses('ZeroBaseline', isVertical, size), style: {
46
84
  backgroundColor: blendedBarColor,
47
85
  [isVertical ? 'bottom' : 'left']: zeroPlacement,
48
86
  } })),
49
- react_1.default.createElement("div", { className: getDirectionalClasses('ProgressBar', isVertical, size), style: { ...positionStyle, backgroundColor: blendedBarColor }, role: "meter", title: isBullet ? `${datum.valueLabels.value}: ${valueFormatter(value)}` : `${scaledValue}%`, "aria-label": title ? `${labelType} of ${title}` : labelType, "aria-valuemin": isBullet ? domainMin : 0, "aria-valuemax": isBullet ? domainMax : 100, "aria-valuenow": isBullet ? value : scaledValue })));
87
+ react_1.default.createElement("div", { className: getDirectionalClasses('ProgressBar', isVertical, size), style: { ...positionStyle, ...borderRadius, backgroundColor: blendedBarColor }, role: "meter", title: isBullet ? `${datum.valueLabels.value}: ${valueFormatter(value)}` : `${scaledValue}%`, "aria-label": title ? `${labelType} of ${title}` : labelType, "aria-valuemin": isBullet ? domainMin : 0, "aria-valuemax": isBullet ? domainMax : 100, "aria-valuenow": isBullet ? value : scaledValue })));
50
88
  };
51
89
  exports.ProgressBar = ProgressBar;
52
- function getDirectionalClasses(element, isVertical, size) {
90
+ function getDirectionalClasses(element, isVertical, progressBarSize) {
53
91
  const base = `echSingleMetric${element}`;
54
- return (0, classnames_1.default)(base, `${base}--${size}`, {
92
+ return (0, classnames_1.default)(base, `${base}--${progressBarSize}`, {
55
93
  [`${base}--vertical`]: isVertical,
56
94
  [`${base}--horizontal`]: !isVertical,
57
95
  });
@@ -1 +1 @@
1
- {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../../../src/chart_types/metric/renderer/dom/progress.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../../../src/chart_types/metric/renderer/dom/progress.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=secondary_metric.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secondary_metric.d.ts","sourceRoot":"","sources":["../../../../../src/chart_types/metric/renderer/dom/secondary_metric.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SecondaryMetric = void 0;
7
+ const classnames_1 = __importDefault(require("classnames"));
8
+ const react_1 = __importDefault(require("react"));
9
+ const badge_1 = require("./badge");
10
+ const SecondaryMetric = ({ value, label, badgeColor, labelPosition = 'before', style, ariaDescription, badgeBorderColor, icon, iconPosition, }) => {
11
+ const hasLabel = !!label;
12
+ const labelNode = hasLabel ? (react_1.default.createElement("span", { className: "echSecondaryMetric__label echSecondaryMetric__truncate" }, label)) : undefined;
13
+ return (react_1.default.createElement("span", { className: "echSecondaryMetric", ...(style ? { style } : {}), ...(ariaDescription ? { 'aria-describedby': ariaDescription } : {}) },
14
+ labelPosition === 'before' && labelNode,
15
+ badgeColor ? (react_1.default.createElement(badge_1.Badge, { className: (0, classnames_1.default)('echSecondaryMetric__value', {
16
+ 'echSecondaryMetric__value--full': !hasLabel,
17
+ }), value: value, backgroundColor: badgeColor, borderColor: badgeBorderColor, icon: icon, iconPosition: iconPosition })) : (react_1.default.createElement("span", { className: (0, classnames_1.default)('echSecondaryMetric__value', 'echSecondaryMetric__truncate', {
18
+ 'echSecondaryMetric__value--full': !hasLabel,
19
+ }) }, value)),
20
+ labelPosition === 'after' && labelNode));
21
+ };
22
+ exports.SecondaryMetric = SecondaryMetric;
23
+ //# sourceMappingURL=secondary_metric.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secondary_metric.js","sourceRoot":"","sources":["../../../../../src/chart_types/metric/renderer/dom/secondary_metric.tsx"],"names":[],"mappings":";;;;;;AAQA,4DAAoC;AACpC,kDAA0B;AAE1B,mCAAgC;AAIzB,MAAM,eAAe,GAAmC,CAAC,EAC9D,KAAK,EACL,KAAK,EACL,UAAU,EACV,aAAa,GAAG,QAAQ,EACxB,KAAK,EACL,eAAe,EACf,gBAAgB,EAChB,IAAI,EACJ,YAAY,GACb,EAAE,EAAE;IACH,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC;IACzB,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAC3B,wCAAM,SAAS,EAAC,wDAAwD,IAAE,KAAK,CAAQ,CACxF,CAAC,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,CACL,wCACE,SAAS,EAAC,oBAAoB,KAC1B,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACxB,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEnE,aAAa,KAAK,QAAQ,IAAI,SAAS;QACvC,UAAU,CAAC,CAAC,CAAC,CACZ,8BAAC,aAAK,IACJ,SAAS,EAAE,IAAA,oBAAU,EAAC,2BAA2B,EAAE;gBACjD,iCAAiC,EAAE,CAAC,QAAQ;aAC7C,CAAC,EACF,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,UAAU,EAC3B,WAAW,EAAE,gBAAgB,EAC7B,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,GAC1B,CACH,CAAC,CAAC,CAAC,CACF,wCACE,SAAS,EAAE,IAAA,oBAAU,EAAC,2BAA2B,EAAE,8BAA8B,EAAE;gBACjF,iCAAiC,EAAE,CAAC,QAAQ;aAC7C,CAAC,IAED,KAAK,CACD,CACR;QACA,aAAa,KAAK,OAAO,IAAI,SAAS,CAClC,CACR,CAAC;AACJ,CAAC,CAAC;AA9CW,QAAA,eAAe,mBA8C1B"}
@@ -6,21 +6,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.MetricText = void 0;
7
7
  const classnames_1 = __importDefault(require("classnames"));
8
8
  const react_1 = __importDefault(require("react"));
9
+ const secondary_metric_1 = require("./secondary_metric");
9
10
  const text_measurements_1 = require("./text_measurements");
11
+ const titles_1 = require("./titles");
10
12
  const common_1 = require("../../../../utils/common");
11
13
  const specs_1 = require("../../specs");
12
- function lineClamp(maxLines) {
13
- return {
14
- textOverflow: 'ellipsis',
15
- display: '-webkit-box',
16
- WebkitLineClamp: maxLines,
17
- lineClamp: maxLines,
18
- WebkitBoxOrient: 'vertical',
19
- overflow: 'hidden',
20
- whiteSpace: 'pre-wrap',
21
- };
22
- }
23
- const MetricText = ({ id, datum, style, onElementClick, highContrastTextColor, progressBarSize, textDimensions }) => {
14
+ const GRID_SPAN_THREE = '1 / span 3';
15
+ const gridRows = {
16
+ top: { value: '1', titles: '2', body: '3', extra: '4' },
17
+ bottom: { value: '4', titles: '1', body: '2', extra: '3' },
18
+ };
19
+ const gridSingleColumn = { value: '1', titles: '1', body: '1', extra: '1' };
20
+ const gridColumnsValuePostitionTop = {
21
+ left: { value: '2 / span 2', titles: GRID_SPAN_THREE, body: GRID_SPAN_THREE, extra: GRID_SPAN_THREE },
22
+ right: { value: '1 / span 2', titles: GRID_SPAN_THREE, body: GRID_SPAN_THREE, extra: GRID_SPAN_THREE },
23
+ };
24
+ const gridColumnsValuePositionBottom = {
25
+ left: { value: GRID_SPAN_THREE, titles: '2 / span 2', body: GRID_SPAN_THREE, extra: GRID_SPAN_THREE },
26
+ right: { value: GRID_SPAN_THREE, titles: '1 / span 2', body: GRID_SPAN_THREE, extra: GRID_SPAN_THREE },
27
+ };
28
+ const gridColumns = {
29
+ top: gridColumnsValuePostitionTop,
30
+ bottom: gridColumnsValuePositionBottom,
31
+ };
32
+ const getGridTemplateColumnsWithIcon = (iconSize) => {
33
+ const iconSizeWithPadding = `${iconSize + text_measurements_1.PADDING}px`;
34
+ return `${iconSizeWithPadding} minmax(0, 1fr) ${iconSizeWithPadding}`;
35
+ };
36
+ const MetricText = ({ id, datum, style, onElementClick, progressBarSize, textDimensions, colors, badgeBorderColor, }) => {
24
37
  const { heightBasedSizes: sizes, hasProgressBar, progressBarDirection, visibility, textParts } = textDimensions;
25
38
  const { extra, body } = datum;
26
39
  const containerClassName = (0, classnames_1.default)('echMetricText', {
@@ -28,53 +41,57 @@ const MetricText = ({ id, datum, style, onElementClick, highContrastTextColor, p
28
41
  'echMetricText--vertical': progressBarDirection === common_1.LayoutDirection.Vertical,
29
42
  'echMetricText--horizontal': progressBarDirection === common_1.LayoutDirection.Horizontal,
30
43
  });
31
- const TitleElement = () => (react_1.default.createElement("span", { style: {
32
- fontSize: sizes.titleFontSize,
33
- textAlign: style.titlesTextAlign,
34
- ...lineClamp(visibility.titleLines.length),
35
- }, title: datum.title }, datum.title));
36
- return (react_1.default.createElement("div", { className: containerClassName, style: { color: highContrastTextColor } },
37
- react_1.default.createElement("div", { className: (0, classnames_1.default)('echMetricText__titlesBlock', `echMetricText__titlesBlock--${style.titlesTextAlign}`), style: datum.icon && {
38
- marginLeft: 'center' === style.titlesTextAlign || style.iconAlign === 'left' ? sizes.iconSize + text_measurements_1.PADDING : 0,
39
- marginRight: 'center' === style.titlesTextAlign || style.iconAlign === 'right' ? sizes.iconSize + text_measurements_1.PADDING : 0,
40
- } },
41
- visibility.title && (react_1.default.createElement("h2", { id: id, className: "echMetricText__title" }, onElementClick ? (react_1.default.createElement("button", { style: { outline: 'none' }, onMouseDown: (e) => e.stopPropagation(), onMouseUp: (e) => e.stopPropagation(), onClick: (e) => {
42
- e.stopPropagation();
43
- onElementClick();
44
- } },
45
- react_1.default.createElement(TitleElement, null))) : (react_1.default.createElement(TitleElement, null)))),
46
- visibility.subtitle && (react_1.default.createElement("p", { className: "echMetricText__subtitle", style: {
47
- fontSize: sizes.subtitleFontSize,
48
- ...lineClamp(visibility.subtitleLines.length),
49
- }, title: datum.subtitle }, datum.subtitle))),
50
- datum.icon && (react_1.default.createElement("div", { className: (0, classnames_1.default)('echMetricText__icon', `echMetricText__icon--${style.iconAlign}`) }, (0, common_1.renderWithProps)(datum.icon, {
44
+ const { valuePosition, iconAlign } = style;
45
+ const isIconVisible = !!datum.icon;
46
+ const gridTemplateColumns = isIconVisible ? getGridTemplateColumnsWithIcon(sizes.iconSize) : undefined;
47
+ const iconGridStyles = isIconVisible ? { gridRow: '1', gridColumn: iconAlign === 'left' ? '1' : '3' } : {};
48
+ const currentGridRows = gridRows[valuePosition];
49
+ let currentGridColumns = isIconVisible ? gridColumns[valuePosition][iconAlign] : gridSingleColumn;
50
+ if (isIconVisible && valuePosition === 'top' && style.valueTextAlign === 'center') {
51
+ currentGridColumns = { ...currentGridColumns, value: '2' };
52
+ }
53
+ if (isIconVisible && valuePosition === 'bottom' && style.titlesTextAlign === 'center') {
54
+ currentGridColumns = { ...currentGridColumns, titles: '2' };
55
+ }
56
+ let extraElement = null;
57
+ if ((0, specs_1.isSecondaryMetricProps)(extra)) {
58
+ const { style: extraStyle = {}, ...secondaryMetricProps } = extra;
59
+ extraElement = (react_1.default.createElement(secondary_metric_1.SecondaryMetric, { style: { ...extraStyle, fontSize: sizes.extraFontSize, color: colors.extra }, badgeBorderColor: badgeBorderColor, ...secondaryMetricProps }));
60
+ }
61
+ else if (react_1.default.isValidElement(extra) || typeof extra === 'function') {
62
+ extraElement = (react_1.default.createElement("p", { className: "echMetricText__extra", style: { fontSize: sizes.extraFontSize } }, (0, common_1.renderWithProps)(extra, { fontSize: sizes.extraFontSize, color: colors.extra })));
63
+ }
64
+ return (react_1.default.createElement("div", { className: containerClassName, style: { color: colors.highContrast, gridTemplateColumns } },
65
+ react_1.default.createElement(titles_1.TitlesBlock, { metricId: id, title: datum.title, subtitle: datum.subtitle, sizes: sizes, visibility: visibility, textAlign: style.titlesTextAlign, titleWeight: style.titleWeight, isIconVisible: isIconVisible, titlesRow: currentGridRows.titles, titlesColumn: currentGridColumns.titles, subtitleColor: colors.subtitle, onElementClick: onElementClick }),
66
+ datum.icon && (react_1.default.createElement("div", { className: (0, classnames_1.default)('echMetricText__icon', `echMetricText__icon--${style.iconAlign}`), style: { ...iconGridStyles } }, (0, common_1.renderWithProps)(datum.icon, {
51
67
  width: sizes.iconSize,
52
68
  height: sizes.iconSize,
53
- color: highContrastTextColor,
69
+ color: colors.highContrast,
54
70
  }))),
55
- react_1.default.createElement("div", { className: "echMetricText__gap" }, body && react_1.default.createElement("div", { className: "echMetricText__body" }, body)),
56
- react_1.default.createElement("div", { className: (0, classnames_1.default)('echMetricText__valuesBlock', `echMetricText__valuesBlock--${style.valuesTextAlign}`) },
57
- react_1.default.createElement("div", null, visibility.extra && (react_1.default.createElement("p", { className: "echMetricText__extra", style: { fontSize: sizes.extraFontSize } }, (0, common_1.renderWithProps)(extra, { fontSize: sizes.extraFontSize, color: highContrastTextColor })))),
58
- react_1.default.createElement("div", { className: "echMetricText__valueGroup" },
59
- react_1.default.createElement("p", { className: "echMetricText__value", style: {
60
- fontSize: sizes.valueFontSize,
61
- textOverflow: (0, specs_1.isMetricWNumber)(datum) ? undefined : 'ellipsis',
62
- color: datum.valueColor,
63
- }, title: textParts.map(({ text }) => text).join('') }, textParts.map(({ emphasis, text }, i) => {
64
- return emphasis === 'small' ? (react_1.default.createElement("span", { key: `${text}${i}`, className: "echMetricText__part", style: {
65
- fontSize: sizes.valuePartFontSize,
66
- } }, text)) : (text);
67
- })),
68
- datum.valueIcon && (react_1.default.createElement("p", { className: "echMetricText__valueIcon", style: {
69
- fontSize: sizes.valueFontSize,
70
- color: datum.valueColor ?? highContrastTextColor,
71
- marginRight: style.valuesTextAlign === 'center' ? -(sizes.valuePartFontSize + text_measurements_1.PADDING) : undefined,
72
- } }, (0, common_1.renderWithProps)(datum.valueIcon, {
73
- width: sizes.valuePartFontSize,
74
- height: sizes.valuePartFontSize,
75
- color: datum.valueColor ?? highContrastTextColor,
76
- verticalAlign: 'middle',
77
- })))))));
71
+ react_1.default.createElement("div", { className: "echMetricText__gap", style: { gridRow: currentGridRows.body, gridColumn: currentGridColumns.body } }, body && react_1.default.createElement("div", { className: "echMetricText__body" }, body)),
72
+ react_1.default.createElement("div", { className: (0, classnames_1.default)('echMetricText__extraBlock', `echMetricText__extraBlock--${style.extraTextAlign}`), style: {
73
+ gridRow: currentGridRows.extra,
74
+ gridColumn: currentGridColumns.extra,
75
+ color: colors.extra,
76
+ } }, visibility.extra && extraElement),
77
+ react_1.default.createElement("div", { className: (0, classnames_1.default)('echMetricText__valueBlock', `echMetricText__valueBlock--${style.valueTextAlign}`), style: { gridRow: currentGridRows.value, gridColumn: currentGridColumns.value } },
78
+ react_1.default.createElement("p", { className: "echMetricText__value", style: {
79
+ fontSize: sizes.valueFontSize,
80
+ textOverflow: (0, specs_1.isMetricWNumber)(datum) ? undefined : 'ellipsis',
81
+ color: datum.valueColor,
82
+ }, title: textParts.map(({ text }) => text).join('') }, textParts.map(({ emphasis, text }, i) => {
83
+ return emphasis === 'small' ? (react_1.default.createElement("span", { key: `${text}${i}`, className: "echMetricText__part", style: { fontSize: sizes.valuePartFontSize } }, text)) : (text);
84
+ })),
85
+ datum.valueIcon && (react_1.default.createElement("p", { className: "echMetricText__valueIcon", style: {
86
+ fontSize: sizes.valueFontSize,
87
+ color: datum.valueColor ?? colors.highContrast,
88
+ marginRight: style.valueTextAlign === 'center' ? -(sizes.valuePartFontSize + text_measurements_1.PADDING) : undefined,
89
+ } }, (0, common_1.renderWithProps)(datum.valueIcon, {
90
+ width: sizes.valuePartFontSize,
91
+ height: sizes.valuePartFontSize,
92
+ color: datum.valueColor ?? colors.highContrast,
93
+ verticalAlign: 'middle',
94
+ }))))));
78
95
  };
79
96
  exports.MetricText = MetricText;
80
97
  //# sourceMappingURL=text.js.map