@semcore/d3-chart 16.5.0 → 16.6.0-prerelease.1

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 (92) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/lib/cjs/Area.js +11 -11
  3. package/lib/cjs/Axis.js +15 -15
  4. package/lib/cjs/Bar.js +16 -16
  5. package/lib/cjs/Bubble.js +20 -15
  6. package/lib/cjs/Bubble.js.map +1 -1
  7. package/lib/cjs/CompactHorizontalBar.js +16 -16
  8. package/lib/cjs/Donut.js +9 -9
  9. package/lib/cjs/Dots.js +8 -8
  10. package/lib/cjs/HorizontalBar.js +16 -16
  11. package/lib/cjs/Hover.js +3 -3
  12. package/lib/cjs/Line.js +9 -9
  13. package/lib/cjs/Plot.js +3 -3
  14. package/lib/cjs/Radar.js +19 -19
  15. package/lib/cjs/RadialTree.js +12 -12
  16. package/lib/cjs/Reference.js +12 -12
  17. package/lib/cjs/ScatterPlot.js +9 -9
  18. package/lib/cjs/Tooltip.js +9 -9
  19. package/lib/cjs/Venn.js +9 -9
  20. package/lib/cjs/a11y/PlotA11yModule.js +2 -2
  21. package/lib/cjs/a11y/PlotA11yView.js +2 -2
  22. package/lib/cjs/component/Chart/AbstractChart.js +9 -23
  23. package/lib/cjs/component/Chart/AbstractChart.js.map +1 -1
  24. package/lib/cjs/component/Chart/CigaretteChart.js +252 -90
  25. package/lib/cjs/component/Chart/CigaretteChart.js.map +1 -1
  26. package/lib/cjs/component/Chart/CigaretteChart.type.js.map +1 -1
  27. package/lib/cjs/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
  28. package/lib/cjs/component/ChartLegend/LegendItem/LegendItem.js +17 -17
  29. package/lib/cjs/component/ChartLegend/LegendTable/LegendTable.js +6 -6
  30. package/lib/cjs/style/bubble.shadow.css +4 -0
  31. package/lib/cjs/utils.js +3 -2
  32. package/lib/cjs/utils.js.map +1 -1
  33. package/lib/es6/Area.js +11 -11
  34. package/lib/es6/Axis.js +15 -15
  35. package/lib/es6/Bar.js +16 -16
  36. package/lib/es6/Bubble.js +20 -15
  37. package/lib/es6/Bubble.js.map +1 -1
  38. package/lib/es6/CompactHorizontalBar.js +16 -16
  39. package/lib/es6/Donut.js +9 -9
  40. package/lib/es6/Dots.js +8 -8
  41. package/lib/es6/HorizontalBar.js +16 -16
  42. package/lib/es6/Hover.js +3 -3
  43. package/lib/es6/Line.js +9 -9
  44. package/lib/es6/Plot.js +3 -3
  45. package/lib/es6/Radar.js +19 -19
  46. package/lib/es6/RadialTree.js +12 -12
  47. package/lib/es6/Reference.js +12 -12
  48. package/lib/es6/ScatterPlot.js +9 -9
  49. package/lib/es6/Tooltip.js +9 -9
  50. package/lib/es6/Venn.js +9 -9
  51. package/lib/es6/a11y/PlotA11yModule.js +2 -2
  52. package/lib/es6/a11y/PlotA11yView.js +2 -2
  53. package/lib/es6/component/Chart/AbstractChart.js +9 -23
  54. package/lib/es6/component/Chart/AbstractChart.js.map +1 -1
  55. package/lib/es6/component/Chart/CigaretteChart.js +254 -92
  56. package/lib/es6/component/Chart/CigaretteChart.js.map +1 -1
  57. package/lib/es6/component/Chart/CigaretteChart.type.js.map +1 -1
  58. package/lib/es6/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
  59. package/lib/es6/component/ChartLegend/LegendItem/LegendItem.js +17 -17
  60. package/lib/es6/component/ChartLegend/LegendTable/LegendTable.js +6 -6
  61. package/lib/es6/style/bubble.shadow.css +4 -0
  62. package/lib/es6/utils.js +3 -2
  63. package/lib/es6/utils.js.map +1 -1
  64. package/lib/esm/Area.mjs +12 -12
  65. package/lib/esm/Axis.mjs +16 -16
  66. package/lib/esm/Bar.mjs +17 -17
  67. package/lib/esm/Bubble.mjs +20 -17
  68. package/lib/esm/CompactHorizontalBar.mjs +17 -17
  69. package/lib/esm/Donut.mjs +10 -10
  70. package/lib/esm/Dots.mjs +9 -9
  71. package/lib/esm/HorizontalBar.mjs +17 -17
  72. package/lib/esm/Hover.mjs +4 -4
  73. package/lib/esm/Line.mjs +10 -10
  74. package/lib/esm/Plot.mjs +4 -4
  75. package/lib/esm/Radar.mjs +20 -20
  76. package/lib/esm/RadialTree.mjs +13 -13
  77. package/lib/esm/Reference.mjs +13 -13
  78. package/lib/esm/ScatterPlot.mjs +10 -10
  79. package/lib/esm/Tooltip.mjs +10 -10
  80. package/lib/esm/Venn.mjs +10 -10
  81. package/lib/esm/a11y/PlotA11yModule.mjs +3 -3
  82. package/lib/esm/a11y/PlotA11yView.mjs +3 -3
  83. package/lib/esm/component/Chart/AbstractChart.mjs +10 -24
  84. package/lib/esm/component/Chart/CigaretteChart.mjs +210 -61
  85. package/lib/esm/component/ChartLegend/LegendFlex/LegendFlex.mjs +5 -5
  86. package/lib/esm/component/ChartLegend/LegendItem/LegendItem.mjs +18 -18
  87. package/lib/esm/component/ChartLegend/LegendTable/LegendTable.mjs +7 -7
  88. package/lib/esm/style/bubble.shadow.css +4 -0
  89. package/lib/esm/utils.mjs +2 -2
  90. package/lib/types/component/Chart/AbstractChart.d.ts +4 -7
  91. package/lib/types/component/Chart/CigaretteChart.type.d.ts +7 -4
  92. package/package.json +6 -6
@@ -1,5 +1,7 @@
1
- import _objectSpread from "@babel/runtime/helpers/objectSpread2";
1
+ import _createForOfIteratorHelper from "@babel/runtime/helpers/createForOfIteratorHelper";
2
2
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
4
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
5
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4
6
  import _createClass from "@babel/runtime/helpers/createClass";
5
7
  import _callSuper from "@babel/runtime/helpers/callSuper";
@@ -13,11 +15,12 @@ import { assignProps as _assignProps } from "@semcore/core";
13
15
  import { createComponent, Root, sstyled } from '@semcore/core';
14
16
  import i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';
15
17
  import resolveColorEnhance from '@semcore/core/lib/utils/enhances/resolveColorEnhance';
18
+ import trottle from '@semcore/core/lib/utils/rafTrottle';
16
19
  import uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';
17
20
  import Divider from '@semcore/divider';
18
21
  import { Flex, Box } from '@semcore/flex-box';
19
22
  import { Text } from '@semcore/typography';
20
- import { scaleBand, scaleLinear } from 'd3-scale';
23
+ import { scaleThreshold, scaleLinear } from 'd3-scale';
21
24
  import React from 'react';
22
25
  // @ts-ignore
23
26
  import { HoverRect, Plot } from '../..';
@@ -25,23 +28,66 @@ import { AbstractChart, NOT_A_VALUE } from './AbstractChart';
25
28
  // @ts-ignore
26
29
  import AnimatedClipPath from '../../AnimatedClipPath';
27
30
  import { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';
28
- import { interpolateValue, scaleToBand } from '../../utils';
31
+ import { eventToPoint, interpolateValue } from '../../utils';
29
32
  import Cigarette from '../Cigarette/Cigarette';
30
- var wMin = 2;
33
+ var DEFAULT_MINIMAL_BAR_WIDTH = 2;
34
+ var DEFAULT_GAP = 2;
31
35
  var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
32
- function CigaretteChartComponent() {
36
+ function CigaretteChartComponent(props) {
33
37
  var _this;
34
38
  _classCallCheck(this, CigaretteChartComponent);
35
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
36
- args[_key] = arguments[_key];
37
- }
38
- _this = _callSuper(this, CigaretteChartComponent, [].concat(args));
39
+ _this = _callSuper(this, CigaretteChartComponent, [props]);
40
+ _defineProperty(_this, "plotRef", /*#__PURE__*/React.createRef());
39
41
  _defineProperty(_this, "plotPadding", 0);
40
42
  _defineProperty(_this, "offset", 0);
43
+ _defineProperty(_this, "onPlotMouseMove", trottle(function (event) {
44
+ if (!_this.plotRef.current) return;
45
+ var _eventToPoint = eventToPoint(event, _this.plotRef.current),
46
+ _eventToPoint2 = _slicedToArray(_eventToPoint, 2),
47
+ pX = _eventToPoint2[0],
48
+ pY = _eventToPoint2[1];
49
+ _this.setState(function (prevState) {
50
+ return {
51
+ pX: pX,
52
+ pY: pY
53
+ };
54
+ });
55
+ }));
56
+ _defineProperty(_this, "onPlotMouseLeave", trottle(function () {
57
+ _this.setState(function (prevState) {
58
+ return {
59
+ pX: null,
60
+ pY: null
61
+ };
62
+ });
63
+ }));
64
+ _this.state = _objectSpread(_objectSpread({}, _this.state), {}, {
65
+ pX: null,
66
+ pY: null
67
+ });
41
68
  return _this;
42
69
  }
43
70
  _inherits(CigaretteChartComponent, _AbstractChart);
44
71
  return _createClass(CigaretteChartComponent, [{
72
+ key: "activeDataDefinitions",
73
+ get: function get() {
74
+ var dataDefinitions = this.state.dataDefinitions;
75
+ return dataDefinitions.filter(function (_ref7) {
76
+ var checked = _ref7.checked;
77
+ return checked;
78
+ });
79
+ }
80
+ }, {
81
+ key: "activePositiveDataDefinitions",
82
+ get: function get() {
83
+ var data = this.asProps.data;
84
+ return this.activeDataDefinitions.filter(function (_ref8) {
85
+ var id = _ref8.id;
86
+ var itemValue = data[id];
87
+ return typeof itemValue === 'number' && itemValue > 0;
88
+ });
89
+ }
90
+ }, {
45
91
  key: "resolveColor",
46
92
  value: function resolveColor(id, index) {
47
93
  var _this$props$colorMap$, _this$props$colorMap;
@@ -64,47 +110,141 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
64
110
  w: 'fit-content'
65
111
  };
66
112
  }
113
+ }, {
114
+ key: "totalValue",
115
+ value: function totalValue() {
116
+ var data = this.asProps.data;
117
+ return this.activeDataDefinitions.reduce(function (acc, _ref9) {
118
+ var id = _ref9.id;
119
+ var itemValue = data[id];
120
+ if (typeof itemValue === 'number') {
121
+ acc += itemValue;
122
+ }
123
+ return acc;
124
+ }, 0);
125
+ }
126
+ }, {
127
+ key: "computeCigaretteItems",
128
+ value: function computeCigaretteItems() {
129
+ var _this$asProps = this.asProps,
130
+ plotWidth = _this$asProps.plotWidth,
131
+ plotHeight = _this$asProps.plotHeight,
132
+ data = _this$asProps.data,
133
+ invertAxis = _this$asProps.invertAxis,
134
+ minimalBarWidth = _this$asProps.minimalBarWidth;
135
+ var dataDefinitions = invertAxis ? this.activeDataDefinitions : _toConsumableArray(this.activeDataDefinitions).reverse();
136
+ var count = this.activePositiveDataDefinitions.length;
137
+ var totalGapWidth = DEFAULT_GAP * Math.max(0, count - 1);
138
+ var availableSpace = Math.max(0, (invertAxis ? plotWidth : plotHeight) - totalGapWidth);
139
+ var totalValue = this.totalValue();
140
+ var dataDefinitionsItemSize = dataDefinitions.map(function (_ref0) {
141
+ var id = _ref0.id;
142
+ if (totalValue === 0) {
143
+ return 0;
144
+ }
145
+ var itemValue = data[id];
146
+ if (typeof itemValue !== 'number') return 0;
147
+ return itemValue / totalValue * availableSpace;
148
+ });
149
+ var result = dataDefinitions.map(function (dd, index) {
150
+ return _objectSpread(_objectSpread({}, dd), {}, {
151
+ value: data[dd.id],
152
+ dataWidth: dataDefinitionsItemSize[index],
153
+ visualWidth: dataDefinitionsItemSize[index],
154
+ isMinVisible: false
155
+ });
156
+ });
157
+ var smallItems = result.filter(function (r) {
158
+ var value = r.value,
159
+ dataWidth = r.dataWidth;
160
+ if (typeof value !== 'number') return false;
161
+ return value > 0 && dataWidth < minimalBarWidth;
162
+ });
163
+ if (smallItems.length === 0) return result;
164
+ var extraNeeded = 0;
165
+ var _iterator = _createForOfIteratorHelper(smallItems),
166
+ _step;
167
+ try {
168
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
169
+ var smallItem = _step.value;
170
+ extraNeeded += minimalBarWidth - smallItem.dataWidth;
171
+ smallItem.visualWidth = minimalBarWidth;
172
+ smallItem.isMinVisible = true;
173
+ }
174
+ } catch (err) {
175
+ _iterator.e(err);
176
+ } finally {
177
+ _iterator.f();
178
+ }
179
+ var donors = result.filter(function (r) {
180
+ return !r.isMinVisible && r.dataWidth > minimalBarWidth;
181
+ });
182
+ var donorCapacity = donors.reduce(function (s, d) {
183
+ return s + (d.dataWidth - minimalBarWidth);
184
+ }, 0);
185
+ var _iterator2 = _createForOfIteratorHelper(donors),
186
+ _step2;
187
+ try {
188
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
189
+ var donor = _step2.value;
190
+ var available = donor.dataWidth - minimalBarWidth;
191
+ var share = available / donorCapacity;
192
+ var taken = share * extraNeeded;
193
+ donor.visualWidth = donor.dataWidth - taken;
194
+ }
195
+ } catch (err) {
196
+ _iterator2.e(err);
197
+ } finally {
198
+ _iterator2.f();
199
+ }
200
+ return result;
201
+ }
67
202
  }, {
68
203
  key: "xScale",
69
204
  get: function get() {
70
- var invertAxis = this.asProps.invertAxis;
71
- return invertAxis ? this.valueScale : this.categoryScale;
205
+ var plotWidth = this.asProps.plotWidth;
206
+ return scaleLinear([0, plotWidth]);
72
207
  }
73
208
  }, {
74
209
  key: "yScale",
75
210
  get: function get() {
76
- var invertAxis = this.asProps.invertAxis;
77
- return invertAxis ? this.categoryScale : this.valueScale;
211
+ var plotHeight = this.asProps.plotHeight;
212
+ return scaleLinear([plotHeight, 0]);
78
213
  }
79
214
  }, {
80
215
  key: "renderChart",
81
216
  value: function renderChart() {
82
217
  var _this2 = this;
83
- var _this$asProps = this.asProps,
84
- invertAxis = _this$asProps.invertAxis,
85
- data = _this$asProps.data,
86
- uid = _this$asProps.uid,
87
- duration = _this$asProps.duration,
88
- patterns = _this$asProps.patterns,
89
- plotHeight = _this$asProps.plotHeight,
90
- plotWidth = _this$asProps.plotWidth,
91
- onClick = _this$asProps.onClick;
218
+ var _this$asProps2 = this.asProps,
219
+ invertAxis = _this$asProps2.invertAxis,
220
+ data = _this$asProps2.data,
221
+ uid = _this$asProps2.uid,
222
+ duration = _this$asProps2.duration,
223
+ patterns = _this$asProps2.patterns,
224
+ plotHeight = _this$asProps2.plotHeight,
225
+ plotWidth = _this$asProps2.plotWidth,
226
+ onClick = _this$asProps2.onClick;
92
227
  var _this$state = this.state,
93
228
  dataDefinitions = _this$state.dataDefinitions,
94
229
  highlightedLine = _this$state.highlightedLine;
95
230
  this.offset = 0;
96
- return /*#__PURE__*/React.createElement(React.Fragment, null, (invertAxis ? dataDefinitions : _toConsumableArray(dataDefinitions).reverse()).map(function (item, index) {
97
- var value = data[item.id];
98
- if (!item.checked || value === interpolateValue || value === null) {
231
+ var items = this.computeCigaretteItems();
232
+ return /*#__PURE__*/React.createElement(React.Fragment, null, items.map(function (item, index) {
233
+ var visualWidth = item.visualWidth,
234
+ id = item.id;
235
+ var value = data[id];
236
+ if (value === interpolateValue || value === null) {
99
237
  return null;
100
238
  }
101
- var absWidth = Math.abs(_this2.valueScale(value) - Math.max(_this2.valueScale(_this2.valueScale.domain()[0]), _this2.valueScale(0)));
102
- var height = scaleToBand(_this2.categoryScale).bandwidth() - 4;
103
- var width = value === 0 ? 0 : Math.max(absWidth, wMin * 2) - wMin;
104
- var y = 2;
105
- var x = index === 0 ? 0 : _this2.offset;
239
+ var height = invertAxis ? plotHeight - DEFAULT_GAP * 2 : plotWidth - DEFAULT_GAP * 2;
240
+ var width = visualWidth;
241
+ var y = DEFAULT_GAP;
242
+ var x = _this2.offset;
106
243
  var r = height < 28 ? 2 : 4;
107
- _this2.offset = _this2.offset + width + wMin;
244
+ _this2.offset += visualWidth;
245
+ if (index < items.length - 1) {
246
+ _this2.offset += DEFAULT_GAP;
247
+ }
108
248
  return /*#__PURE__*/React.createElement(Cigarette, {
109
249
  key: item.id,
110
250
  dataKey: item.id,
@@ -138,15 +278,18 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
138
278
  value: function renderTooltip() {
139
279
  var _ref = this.asProps,
140
280
  _this3 = this;
141
- var _this$asProps2 = this.asProps,
142
- data = _this$asProps2.data,
143
- invertAxis = _this$asProps2.invertAxis,
144
- tooltipTitle = _this$asProps2.tooltipTitle,
145
- tooltipViewType = _this$asProps2.tooltipViewType,
146
- showPercentValueInTooltip = _this$asProps2.showPercentValueInTooltip,
147
- styles = _this$asProps2.styles,
148
- showTooltip = _this$asProps2.showTooltip;
149
- var dataDefinitions = this.state.dataDefinitions;
281
+ var _this$asProps3 = this.asProps,
282
+ data = _this$asProps3.data,
283
+ invertAxis = _this$asProps3.invertAxis,
284
+ tooltipTitle = _this$asProps3.tooltipTitle,
285
+ tooltipViewType = _this$asProps3.tooltipViewType,
286
+ showPercentValueInTooltip = _this$asProps3.showPercentValueInTooltip,
287
+ styles = _this$asProps3.styles,
288
+ showTooltip = _this$asProps3.showTooltip;
289
+ var _this$state2 = this.state,
290
+ dataDefinitions = _this$state2.dataDefinitions,
291
+ pX = _this$state2.pX,
292
+ pY = _this$state2.pY;
150
293
  var STooltipChildrenWrapper = Box;
151
294
  if (!showTooltip) {
152
295
  return null;
@@ -155,18 +298,22 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
155
298
  x: invertAxis ? '' : undefined,
156
299
  y: invertAxis ? undefined : '',
157
300
  wMin: 100,
158
- hideHoverLine: true
301
+ hideHoverLine: true,
302
+ xIndex: pX !== null ? this.visualScale(pX) : undefined,
303
+ yIndex: pY !== null ? this.visualScale(pY) : undefined
159
304
  }, function (tooltipProps) {
160
305
  var _ref4;
161
306
  var dataKey = invertAxis ? tooltipProps.xIndex : tooltipProps.yIndex;
162
- var showPercentColumn = showPercentValueInTooltip && _this3.totalValue(data) !== 0;
307
+ var showPercentColumn = showPercentValueInTooltip && _this3.totalValue() !== 0;
163
308
  if (tooltipViewType === 'single') {
164
309
  var _ref3;
165
310
  var item = dataDefinitions.find(function (dataDefItem) {
166
311
  return dataDefItem.id === dataKey;
167
312
  });
168
313
  if (!item) {
169
- return null;
314
+ return {
315
+ children: null
316
+ };
170
317
  }
171
318
  return {
172
319
  children: (_ref3 = sstyled(styles), /*#__PURE__*/React.createElement(STooltipChildrenWrapper, _ref3.cn("STooltipChildrenWrapper", _objectSpread({}, _assignProps({
@@ -213,16 +360,32 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
213
360
  };
214
361
  });
215
362
  }
363
+ }, {
364
+ key: "percentValue",
365
+ value: function percentValue(data, key) {
366
+ var percentFormatter = this.asProps.percentFormatter;
367
+ var total = this.totalValue();
368
+ var value = data[key];
369
+ if (typeof value === 'number' && total !== 0) {
370
+ var rawPercent = 100 * value / total;
371
+ var formattedPercent = percentFormatter ? percentFormatter(rawPercent) : Math.round(rawPercent);
372
+ return "".concat(formattedPercent, "%");
373
+ }
374
+ if (value === null) {
375
+ return "0%";
376
+ }
377
+ return NOT_A_VALUE;
378
+ }
216
379
  }, {
217
380
  key: "renderTooltipTotalLine",
218
381
  value: function renderTooltipTotalLine(dataItem) {
219
- var _this$asProps3 = this.asProps,
220
- showTotalInTooltip = _this$asProps3.showTotalInTooltip,
221
- showPercentValueInTooltip = _this$asProps3.showPercentValueInTooltip;
382
+ var _this$asProps4 = this.asProps,
383
+ showTotalInTooltip = _this$asProps4.showTotalInTooltip,
384
+ showPercentValueInTooltip = _this$asProps4.showPercentValueInTooltip;
222
385
  if (!showTotalInTooltip) {
223
386
  return null;
224
387
  }
225
- var total = this.totalValue(dataItem);
388
+ var total = this.totalValue();
226
389
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Box, {
227
390
  mt: 2,
228
391
  mr: 2
@@ -248,14 +411,14 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
248
411
  var _ref2 = this.asProps,
249
412
  _ref6;
250
413
  var SChart = Flex;
251
- var _this$asProps4 = this.asProps,
252
- styles = _this$asProps4.styles,
253
- plotWidth = _this$asProps4.plotWidth,
254
- plotHeight = _this$asProps4.plotHeight,
255
- data = _this$asProps4.data,
256
- patterns = _this$asProps4.patterns,
257
- invertAxis = _this$asProps4.invertAxis,
258
- a11yAltTextConfig = _this$asProps4.a11yAltTextConfig;
414
+ var _this$asProps5 = this.asProps,
415
+ styles = _this$asProps5.styles,
416
+ plotWidth = _this$asProps5.plotWidth,
417
+ plotHeight = _this$asProps5.plotHeight,
418
+ data = _this$asProps5.data,
419
+ patterns = _this$asProps5.patterns,
420
+ invertAxis = _this$asProps5.invertAxis,
421
+ a11yAltTextConfig = _this$asProps5.a11yAltTextConfig;
259
422
  var header = this.renderHeader();
260
423
  if (invertAxis) {
261
424
  var _ref5;
@@ -266,26 +429,32 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
266
429
  }, _ref2))), /*#__PURE__*/React.createElement(Flex, _ref5.cn("Flex", {
267
430
  "direction": 'column'
268
431
  }), header, /*#__PURE__*/React.createElement(Plot, _ref5.cn("Plot", {
432
+ "ref": this.plotRef,
269
433
  "data": data,
270
434
  "scale": [this.xScale, this.yScale],
271
435
  "width": plotWidth,
272
436
  "height": plotHeight,
273
437
  "dataHints": this.dataHints,
274
438
  "patterns": patterns,
275
- "a11yAltTextConfig": a11yAltTextConfig
439
+ "a11yAltTextConfig": a11yAltTextConfig,
440
+ "onMouseMove": this.onPlotMouseMove,
441
+ "onMouseLeave": this.onPlotMouseLeave
276
442
  }), this.renderTooltip(), this.renderChart())), this.renderLegend());
277
443
  }
278
444
  return _ref6 = sstyled(styles), /*#__PURE__*/React.createElement(SChart, _ref6.cn("SChart", _objectSpread({}, _assignProps4({
279
445
  "gap": 6,
280
446
  "__excludeProps": ['onClick', 'data']
281
447
  }, _ref2))), /*#__PURE__*/React.createElement(Plot, _ref6.cn("Plot", {
448
+ "ref": this.plotRef,
282
449
  "data": data,
283
450
  "scale": [this.xScale, this.yScale],
284
451
  "width": plotWidth,
285
452
  "height": plotHeight,
286
453
  "dataHints": this.dataHints,
287
454
  "patterns": patterns,
288
- "a11yAltTextConfig": a11yAltTextConfig
455
+ "a11yAltTextConfig": a11yAltTextConfig,
456
+ "onMouseMove": this.onPlotMouseMove,
457
+ "onMouseLeave": this.onPlotMouseLeave
289
458
  }), this.renderTooltip(), this.renderChart()), /*#__PURE__*/React.createElement(Flex, _ref6.cn("Flex", {
290
459
  "direction": 'column',
291
460
  "gap": 2
@@ -299,41 +468,33 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
299
468
  });
300
469
  }
301
470
  }, {
302
- key: "selectedData",
303
- get: function get() {
304
- var data = this.asProps.data;
305
- var dataDefinitions = this.state.dataDefinitions;
306
- var result = new Map();
307
- dataDefinitions.forEach(function (dataDefItem) {
308
- var value = data[dataDefItem.id];
309
- if (dataDefItem.checked && value !== interpolateValue) {
310
- result.set(dataDefItem.id, value);
311
- }
312
- });
313
- return result;
314
- }
315
- }, {
316
- key: "categoryScale",
317
- get: function get() {
318
- var _this$asProps5 = this.asProps,
319
- plotWidth = _this$asProps5.plotWidth,
320
- plotHeight = _this$asProps5.plotHeight,
321
- invertAxis = _this$asProps5.invertAxis;
322
- var range = invertAxis ? [plotHeight, 0] : [0, plotWidth];
323
- return scaleBand([0], range);
324
- }
325
- }, {
326
- key: "valueScale",
471
+ key: "visualScale",
327
472
  get: function get() {
328
- var _this$asProps6 = this.asProps,
329
- plotWidth = _this$asProps6.plotWidth,
330
- plotHeight = _this$asProps6.plotHeight,
331
- invertAxis = _this$asProps6.invertAxis;
332
- var max = 0;
333
- this.selectedData.forEach(function (value) {
334
- max = max + value;
335
- });
336
- return scaleLinear().range(invertAxis ? [0, plotWidth] : [plotHeight, 0]).domain([0, max]);
473
+ var cigaretteItems = this.computeCigaretteItems();
474
+ var _cigaretteItems$reduc = cigaretteItems.reduce(function (acc, _ref1, index) {
475
+ var id = _ref1.id,
476
+ visualWidth = _ref1.visualWidth;
477
+ var range = acc.range,
478
+ domain = acc.domain;
479
+ if (visualWidth) {
480
+ range.push(id);
481
+ if (domain.length === 0) {
482
+ domain.push(visualWidth + DEFAULT_GAP);
483
+ return acc;
484
+ }
485
+ if (index !== cigaretteItems.length - 1) {
486
+ var lastAddedDomain = domain[domain.length - 1];
487
+ domain.push(lastAddedDomain + visualWidth + DEFAULT_GAP);
488
+ }
489
+ }
490
+ return acc;
491
+ }, {
492
+ range: [],
493
+ domain: []
494
+ }),
495
+ range = _cigaretteItems$reduc.range,
496
+ domain = _cigaretteItems$reduc.domain;
497
+ return scaleThreshold(domain, range);
337
498
  }
338
499
  }]);
339
500
  }(AbstractChart);
@@ -352,7 +513,8 @@ _defineProperty(CigaretteChartComponent, "defaultProps", function (props) {
352
513
  duration: 500,
353
514
  plotWidth: !invertAxis && !props.plotWidth ? 44 : props.plotWidth,
354
515
  plotHeight: invertAxis && !props.plotHeight ? 28 : props.plotHeight,
355
- showPercentValueInTooltip: false
516
+ showPercentValueInTooltip: false,
517
+ minimalBarWidth: DEFAULT_MINIMAL_BAR_WIDTH
356
518
  };
357
519
  });
358
520
  _defineProperty(CigaretteChartComponent, "enhance", [resolveColorEnhance(), uniqueIDEnhancement(), i18nEnhance(localizedMessages)]);
@@ -1 +1 @@
1
- {"version":3,"file":"CigaretteChart.js","names":["createComponent","Root","sstyled","i18nEnhance","resolveColorEnhance","uniqueIDEnhancement","Divider","Flex","Box","Text","scaleBand","scaleLinear","React","HoverRect","Plot","AbstractChart","NOT_A_VALUE","AnimatedClipPath","localizedMessages","interpolateValue","scaleToBand","Cigarette","wMin","CigaretteChartComponent","_AbstractChart","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","concat","_defineProperty","_inherits","_createClass","key","value","resolveColor","id","index","_this$props$colorMap$","_this$props$colorMap","props","colorMap","getDefaultDataDefinitions","dataDefinitions","_superPropGet","map","dataDef","columns","slice","defaultLegendProps","legendType","w","get","invertAxis","asProps","valueScale","categoryScale","renderChart","_this2","_this$asProps","data","uid","duration","patterns","plotHeight","plotWidth","onClick","_this$state","state","highlightedLine","offset","createElement","Fragment","_toConsumableArray","reverse","item","checked","absWidth","Math","abs","max","domain","height","bandwidth","width","y","x","r","dataKey","hide","color","direction","hovered","undefined","renderTooltip","_ref","_this3","_this$asProps2","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","STooltipChildrenWrapper","Tooltip","hideHoverLine","tooltipProps","_ref4","xIndex","yIndex","showPercentColumn","totalValue","_ref3","find","dataDefItem","children","cn","_objectSpread","_assignProps","Dot","mr","label","percentValue","tooltipValueFormatter","Title","_assignProps2","style","opacity","textAlign","bold","renderTooltipTotalLine","dataItem","_this$asProps3","showTotalInTooltip","total","mt","Number","isNaN","renderHeader","_this$asProps$header","header","render","_ref2","_ref6","SChart","_this$asProps4","a11yAltTextConfig","_ref5","_assignProps3","xScale","yScale","dataHints","renderLegend","_assignProps4","getLegendAriaLabel","getI18nText","chartType","result","Map","forEach","set","_this$asProps5","range","_this$asProps6","selectedData","_props$invertAxis","showXAxis","showYAxis","showLegend","marginX","marginY","CigaretteChart"],"sources":["../../../../src/component/Chart/CigaretteChart.tsx"],"sourcesContent":["import { createComponent, Root, sstyled } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport resolveColorEnhance from '@semcore/core/lib/utils/enhances/resolveColorEnhance';\nimport uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';\nimport Divider from '@semcore/divider';\nimport { Flex, Box } from '@semcore/flex-box';\nimport { Text } from '@semcore/typography';\nimport { scaleBand, scaleLinear } from 'd3-scale';\nimport React from 'react';\n\nimport type { CigaretteChartData, CigaretteChartProps, CigaretteChartType } from './CigaretteChart.type';\n// @ts-ignore\nimport { HoverRect, Plot } from '../..';\nimport { AbstractChart, NOT_A_VALUE } from './AbstractChart';\nimport type { ObjectData } from './AbstractChart.type';\n// @ts-ignore\nimport AnimatedClipPath from '../../AnimatedClipPath';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\nimport { interpolateValue, scaleToBand } from '../../utils';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\nimport Cigarette from '../Cigarette/Cigarette';\n\nconst wMin = 2;\n\nclass CigaretteChartComponent extends AbstractChart<\n CigaretteChartData,\n CigaretteChartProps,\n typeof CigaretteChartComponent.enhance\n> {\n static displayName = 'Cigarette.Bar';\n\n static defaultProps: any = (props: CigaretteChartProps) => {\n const invertAxis = props.invertAxis ?? true;\n return {\n invertAxis: invertAxis,\n showXAxis: false,\n showYAxis: false,\n showTooltip: true,\n showLegend: false,\n marginX: 0,\n marginY: 0,\n duration: 500,\n plotWidth: !invertAxis && !props.plotWidth ? 44 : props.plotWidth,\n plotHeight: invertAxis && !props.plotHeight ? 28 : props.plotHeight,\n showPercentValueInTooltip: false,\n };\n };\n\n static enhance = [\n resolveColorEnhance(),\n uniqueIDEnhancement(),\n i18nEnhance(localizedMessages),\n ] as const;\n\n protected override plotPadding = 0;\n\n private offset = 0;\n\n protected override resolveColor(id: string, index: number) {\n return this.props.colorMap?.[id] ?? `blue-${5 - index}00`;\n }\n\n protected override getDefaultDataDefinitions(): Array<\n LegendItem & { columns: React.ReactNode[] }\n > {\n const dataDefinitions = super.getDefaultDataDefinitions();\n\n return dataDefinitions.map((dataDef) => {\n dataDef.columns = dataDef.columns.slice(1);\n return dataDef;\n });\n }\n\n protected override defaultLegendProps() {\n return {\n legendType: 'Table' as const,\n w: 'fit-content',\n };\n }\n\n get xScale() {\n const { invertAxis } = this.asProps;\n\n return invertAxis ? this.valueScale : this.categoryScale;\n }\n\n get yScale() {\n const { invertAxis } = this.asProps;\n\n return invertAxis ? this.categoryScale : this.valueScale;\n }\n\n renderChart() {\n const { invertAxis, data, uid, duration, patterns, plotHeight, plotWidth, onClick } =\n this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n this.offset = 0;\n\n return (\n <>\n {(invertAxis ? dataDefinitions : [...dataDefinitions].reverse()).map((item, index) => {\n const value = data[item.id];\n\n if (!item.checked || value === interpolateValue || value === null) {\n return null;\n }\n\n const absWidth = Math.abs(\n this.valueScale(value) -\n Math.max(this.valueScale(this.valueScale.domain()[0]), this.valueScale(0)),\n );\n const height = scaleToBand(this.categoryScale).bandwidth() - 4;\n const width = value === 0 ? 0 : Math.max(absWidth, wMin * 2) - wMin;\n const y = 2;\n const x = index === 0 ? 0 : this.offset;\n const r = height < 28 ? 2 : 4;\n\n this.offset = this.offset + width + wMin;\n\n return (\n <Cigarette\n key={item.id}\n dataKey={item.id}\n index={index}\n y={invertAxis ? y : x}\n x={invertAxis ? x : y}\n width={invertAxis ? width : height}\n height={invertAxis ? height : width}\n uid={uid}\n hide={!item.checked}\n duration={duration}\n r={index === 0 || index === dataDefinitions.length - 1 ? r : 0}\n color={item.color}\n patterns={patterns}\n direction={invertAxis ? 'horizontal' : 'vertical'}\n onClick={onClick}\n hovered={\n highlightedLine === index ? true : highlightedLine === -1 ? undefined : false\n }\n />\n );\n })}\n\n <AnimatedClipPath\n aria-hidden\n duration={duration}\n id={uid}\n x='0'\n y='0'\n width={invertAxis ? 0 : plotWidth}\n height={invertAxis ? plotHeight : 0}\n />\n </>\n );\n }\n\n renderTooltip(): React.ReactNode {\n const { data, invertAxis, tooltipTitle, tooltipViewType, showPercentValueInTooltip, styles, showTooltip } =\n this.asProps;\n const { dataDefinitions } = this.state;\n const STooltipChildrenWrapper = Root;\n\n if (!showTooltip) {\n return null;\n }\n\n return (\n <HoverRect.Tooltip\n x={invertAxis ? '' : undefined}\n y={invertAxis ? undefined : ''}\n wMin={100}\n hideHoverLine={true}\n >\n {(tooltipProps: any) => {\n const dataKey = invertAxis ? tooltipProps.xIndex : tooltipProps.yIndex;\n const showPercentColumn = showPercentValueInTooltip && this.totalValue(data) !== 0;\n\n if (tooltipViewType === 'single') {\n const item = dataDefinitions.find((dataDefItem) => dataDefItem.id === dataKey);\n if (!item) {\n return null;\n }\n\n return {\n children: sstyled(styles)(\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary'>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold>{this.tooltipValueFormatter(data[item.id])}</Text>\n </STooltipChildrenWrapper>,\n ),\n };\n }\n\n return {\n children: sstyled(styles)(\n <Flex direction='column'>\n {tooltipTitle && (\n <HoverRect.Tooltip.Title>Some tooltip title</HoverRect.Tooltip.Title>\n )}\n\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n {dataDefinitions.map((item) => {\n const style = { opacity: item.id === dataKey ? 1 : 0.3 };\n return (\n item.checked && (\n <React.Fragment key={item.id}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color} style={style}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary' style={style}>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold style={style}>{this.tooltipValueFormatter(data[item.id])}</Text>\n </React.Fragment>\n )\n );\n })}\n\n {this.renderTooltipTotalLine(data)}\n </STooltipChildrenWrapper>\n </Flex>,\n ),\n };\n }}\n </HoverRect.Tooltip>\n );\n }\n\n protected override renderTooltipTotalLine<D extends ObjectData>(dataItem: D) {\n const { showTotalInTooltip, showPercentValueInTooltip } = this.asProps;\n\n if (!showTotalInTooltip) {\n return null;\n }\n\n const total = this.totalValue(dataItem);\n\n return (\n <>\n <Box mt={2} mr={2}>Total</Box>\n { showPercentValueInTooltip && total !== 0 && <Text mt={2} textAlign='end' color='text-secondary'>{Number.isNaN(total) ? NOT_A_VALUE : '100%'}</Text> }\n <Text mt={2} textAlign='end' bold>{Number.isNaN(total) ? NOT_A_VALUE : total}</Text>\n </>\n );\n }\n\n renderHeader() {\n return this.asProps.header ?? null;\n }\n\n override render() {\n const SChart = Root;\n const { styles, plotWidth, plotHeight, data, patterns, invertAxis, a11yAltTextConfig } =\n this.asProps;\n\n const header = this.renderHeader();\n\n if (invertAxis) {\n return sstyled(styles)(\n <SChart render={Flex} gap={6} direction='column' __excludeProps={['onClick', 'data']}>\n <Flex direction='column'>\n {header}\n <Plot\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n </Flex>\n {this.renderLegend()}\n </SChart>,\n );\n }\n\n return sstyled(styles)(\n <SChart render={Flex} gap={6} __excludeProps={['onClick', 'data']}>\n <Plot\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n <Flex direction='column' gap={2}>\n {header && (\n <>\n <Box>{header}</Box>\n <Divider />\n </>\n )}\n {this.renderLegend()}\n </Flex>\n </SChart>,\n );\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Cigarette' });\n }\n\n private get selectedData() {\n const { data } = this.asProps;\n const { dataDefinitions } = this.state;\n\n const result = new Map<string, number>();\n\n dataDefinitions.forEach((dataDefItem) => {\n const value = data[dataDefItem.id];\n if (dataDefItem.checked && value !== interpolateValue) {\n result.set(dataDefItem.id, value);\n }\n });\n\n return result;\n }\n\n private get categoryScale() {\n const { plotWidth, plotHeight, invertAxis } = this.asProps;\n\n const range = invertAxis ? [plotHeight, 0] : [0, plotWidth];\n\n return scaleBand<{}>([0], range);\n }\n\n private get valueScale() {\n const { plotWidth, plotHeight, invertAxis } = this.asProps;\n\n let max = 0;\n\n this.selectedData.forEach((value) => {\n max = max + value;\n });\n\n return scaleLinear()\n .range(invertAxis ? [0, plotWidth] : [plotHeight, 0])\n .domain([0, max]);\n }\n}\n\nexport const CigaretteChart: CigaretteChartType = createComponent(CigaretteChartComponent);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CigaretteChart.js","names":["createComponent","Root","sstyled","i18nEnhance","resolveColorEnhance","trottle","uniqueIDEnhancement","Divider","Flex","Box","Text","scaleThreshold","scaleLinear","React","HoverRect","Plot","AbstractChart","NOT_A_VALUE","AnimatedClipPath","localizedMessages","eventToPoint","interpolateValue","Cigarette","DEFAULT_MINIMAL_BAR_WIDTH","DEFAULT_GAP","CigaretteChartComponent","_AbstractChart","props","_this","_classCallCheck","_callSuper","_defineProperty","createRef","event","plotRef","current","_eventToPoint","_eventToPoint2","_slicedToArray","pX","pY","setState","prevState","state","_objectSpread","_inherits","_createClass","key","get","dataDefinitions","filter","_ref7","checked","data","asProps","activeDataDefinitions","_ref8","id","itemValue","value","resolveColor","index","_this$props$colorMap$","_this$props$colorMap","colorMap","concat","getDefaultDataDefinitions","_superPropGet","map","dataDef","columns","slice","defaultLegendProps","legendType","w","totalValue","reduce","acc","_ref9","computeCigaretteItems","_this$asProps","plotWidth","plotHeight","invertAxis","minimalBarWidth","_toConsumableArray","reverse","count","activePositiveDataDefinitions","length","totalGapWidth","Math","max","availableSpace","dataDefinitionsItemSize","_ref0","result","dd","dataWidth","visualWidth","isMinVisible","smallItems","r","extraNeeded","_iterator","_createForOfIteratorHelper","_step","s","n","done","smallItem","err","e","f","donors","donorCapacity","d","_iterator2","_step2","donor","available","share","taken","renderChart","_this2","_this$asProps2","uid","duration","patterns","onClick","_this$state","highlightedLine","offset","items","createElement","Fragment","item","height","width","y","x","dataKey","hide","color","direction","hovered","undefined","renderTooltip","_ref","_this3","_this$asProps3","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","_this$state2","STooltipChildrenWrapper","Tooltip","wMin","hideHoverLine","xIndex","visualScale","yIndex","tooltipProps","_ref4","showPercentColumn","_ref3","find","dataDefItem","children","cn","_assignProps","Dot","mr","label","percentValue","tooltipValueFormatter","Title","_assignProps2","style","opacity","textAlign","bold","renderTooltipTotalLine","percentFormatter","total","rawPercent","formattedPercent","round","dataItem","_this$asProps4","showTotalInTooltip","mt","Number","isNaN","renderHeader","_this$asProps$header","header","render","_ref2","_ref6","SChart","_this$asProps5","a11yAltTextConfig","_ref5","_assignProps3","xScale","yScale","dataHints","onPlotMouseMove","onPlotMouseLeave","renderLegend","_assignProps4","getLegendAriaLabel","getI18nText","chartType","cigaretteItems","_cigaretteItems$reduc","_ref1","range","domain","push","lastAddedDomain","_props$invertAxis","showXAxis","showYAxis","showLegend","marginX","marginY","CigaretteChart"],"sources":["../../../../src/component/Chart/CigaretteChart.tsx"],"sourcesContent":["import { createComponent, Root, sstyled } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport resolveColorEnhance from '@semcore/core/lib/utils/enhances/resolveColorEnhance';\nimport trottle from '@semcore/core/lib/utils/rafTrottle';\nimport uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';\nimport Divider from '@semcore/divider';\nimport { Flex, Box } from '@semcore/flex-box';\nimport { Text } from '@semcore/typography';\nimport { scaleThreshold, scaleLinear, scaleBand } from 'd3-scale';\nimport React from 'react';\n\nimport type { CigaretteChartData, CigaretteChartDataKey, CigaretteChartProps, CigaretteChartType } from './CigaretteChart.type';\n// @ts-ignore\nimport { HoverRect, Plot } from '../..';\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart, NOT_A_VALUE } from './AbstractChart';\nimport type { ObjectData } from './AbstractChart.type';\n// @ts-ignore\nimport AnimatedClipPath from '../../AnimatedClipPath';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\nimport { eventToPoint, interpolateValue } from '../../utils';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\nimport Cigarette from '../Cigarette/Cigarette';\n\nconst DEFAULT_MINIMAL_BAR_WIDTH = 2;\nconst DEFAULT_GAP = 2;\n\ntype ScaleThresholdConfig = { range: Array<CigaretteChartDataKey>; domain: Array<number> };\n\ntype CigaretteChartState = ChartState & {\n pX: number | null;\n pY: number | null;\n};\n\nclass CigaretteChartComponent extends AbstractChart<\n CigaretteChartData,\n CigaretteChartProps,\n typeof CigaretteChartComponent.enhance,\n CigaretteChartState,\n typeof CigaretteChartComponent.defaultProps\n> {\n static displayName = 'Cigarette.Bar';\n\n static defaultProps: any = (props: CigaretteChartProps) => {\n const invertAxis = props.invertAxis ?? true;\n return {\n invertAxis: invertAxis,\n showXAxis: false,\n showYAxis: false,\n showTooltip: true,\n showLegend: false,\n marginX: 0,\n marginY: 0,\n duration: 500,\n plotWidth: !invertAxis && !props.plotWidth ? 44 : props.plotWidth,\n plotHeight: invertAxis && !props.plotHeight ? 28 : props.plotHeight,\n showPercentValueInTooltip: false,\n minimalBarWidth: DEFAULT_MINIMAL_BAR_WIDTH,\n };\n };\n\n static enhance = [\n resolveColorEnhance(),\n uniqueIDEnhancement(),\n i18nEnhance(localizedMessages),\n ] as const;\n\n constructor(props: CigaretteChartProps) {\n super(props);\n\n this.state = {\n ...this.state,\n pX: null,\n pY: null,\n };\n }\n\n private plotRef = React.createRef<SVGElement>();\n\n protected override plotPadding = 0;\n\n private offset = 0;\n\n private get activeDataDefinitions() {\n const { dataDefinitions } = this.state;\n\n return dataDefinitions.filter(({ checked }) => checked);\n }\n\n private get activePositiveDataDefinitions() {\n const { data } = this.asProps;\n\n return this.activeDataDefinitions.filter(({ id }) => {\n const itemValue = data[id];\n\n return typeof itemValue === 'number' && itemValue > 0;\n });\n }\n\n protected override resolveColor(id: string, index: number) {\n return this.props.colorMap?.[id] ?? `blue-${5 - index}00`;\n }\n\n protected override getDefaultDataDefinitions(): Array<\n LegendItem & { columns: React.ReactNode[] }\n > {\n const dataDefinitions = super.getDefaultDataDefinitions();\n\n return dataDefinitions.map((dataDef) => {\n dataDef.columns = dataDef.columns.slice(1);\n return dataDef;\n });\n }\n\n protected override defaultLegendProps() {\n return {\n legendType: 'Table' as const,\n w: 'fit-content',\n };\n }\n\n private onPlotMouseMove = trottle((event: React.MouseEvent<HTMLElement>) => {\n if (!this.plotRef.current) return;\n\n const [pX, pY] = eventToPoint(event, this.plotRef.current);\n\n this.setState((prevState) => ({ pX, pY }));\n });\n\n private onPlotMouseLeave = trottle(() => {\n this.setState((prevState) => ({ pX: null, pY: null }));\n });\n\n protected override totalValue() {\n const { data } = this.asProps;\n\n return this.activeDataDefinitions.reduce((acc, { id }) => {\n const itemValue = data[id];\n\n if (typeof itemValue === 'number') {\n acc += itemValue;\n }\n\n return acc;\n }, 0);\n }\n\n private computeCigaretteItems() {\n const { plotWidth, plotHeight, data, invertAxis, minimalBarWidth } = this.asProps;\n\n const dataDefinitions = invertAxis\n ? this.activeDataDefinitions\n : [...this.activeDataDefinitions].reverse();\n\n const count = this.activePositiveDataDefinitions.length;\n const totalGapWidth = DEFAULT_GAP * Math.max(0, count - 1);\n const availableSpace = Math.max(0, (invertAxis ? plotWidth : plotHeight) - totalGapWidth);\n\n const totalValue = this.totalValue();\n\n const dataDefinitionsItemSize = dataDefinitions.map(({ id }) => {\n if (totalValue === 0) {\n return 0;\n }\n\n const itemValue = data[id];\n\n if (typeof itemValue !== 'number') return 0;\n\n return (itemValue / totalValue) * availableSpace;\n });\n\n const result = dataDefinitions.map((dd, index) => ({\n ...dd,\n value: data[dd.id],\n dataWidth: dataDefinitionsItemSize[index],\n visualWidth: dataDefinitionsItemSize[index],\n isMinVisible: false,\n }));\n\n const smallItems = result.filter((r) => {\n const { value, dataWidth } = r;\n\n if (typeof value !== 'number') return false;\n\n return value > 0 && dataWidth < minimalBarWidth;\n });\n\n if (smallItems.length === 0) return result;\n\n let extraNeeded = 0;\n\n for (const smallItem of smallItems) {\n extraNeeded += minimalBarWidth - smallItem.dataWidth;\n smallItem.visualWidth = minimalBarWidth;\n smallItem.isMinVisible = true;\n }\n\n const donors = result.filter((r) => !r.isMinVisible && r.dataWidth > minimalBarWidth);\n const donorCapacity = donors.reduce(\n (s, d) => s + (d.dataWidth - minimalBarWidth),\n 0,\n );\n\n for (const donor of donors) {\n const available = donor.dataWidth - minimalBarWidth;\n const share = available / donorCapacity;\n const taken = share * extraNeeded;\n donor.visualWidth = donor.dataWidth - taken;\n }\n\n return result;\n };\n\n get xScale() {\n const { plotWidth } = this.asProps;\n\n return scaleLinear([0, plotWidth]);\n }\n\n get yScale() {\n const { plotHeight } = this.asProps;\n\n return scaleLinear([plotHeight, 0]);\n }\n\n renderChart() {\n const { invertAxis, data, uid, duration, patterns, plotHeight, plotWidth, onClick } =\n this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n this.offset = 0;\n\n const items = this.computeCigaretteItems();\n\n return (\n <>\n {items.map((item, index) => {\n const { visualWidth, id } = item;\n const value = data[id];\n\n if (value === interpolateValue || value === null) {\n return null;\n }\n\n const height = invertAxis ? plotHeight - DEFAULT_GAP * 2 : plotWidth - DEFAULT_GAP * 2;\n const width = visualWidth;\n const y = DEFAULT_GAP;\n const x = this.offset;\n const r = height < 28 ? 2 : 4;\n\n this.offset += visualWidth;\n\n if (index < items.length - 1) {\n this.offset += DEFAULT_GAP;\n }\n\n return (\n <Cigarette\n key={item.id}\n dataKey={item.id}\n index={index}\n y={invertAxis ? y : x}\n x={invertAxis ? x : y}\n width={invertAxis ? width : height}\n height={invertAxis ? height : width}\n uid={uid}\n hide={!item.checked}\n duration={duration}\n r={index === 0 || index === dataDefinitions.length - 1 ? r : 0}\n color={item.color}\n patterns={patterns}\n direction={invertAxis ? 'horizontal' : 'vertical'}\n onClick={onClick}\n hovered={\n highlightedLine === index ? true : highlightedLine === -1 ? undefined : false\n }\n />\n );\n })}\n\n <AnimatedClipPath\n aria-hidden\n duration={duration}\n id={uid}\n x='0'\n y='0'\n width={invertAxis ? 0 : plotWidth}\n height={invertAxis ? plotHeight : 0}\n />\n </>\n );\n }\n\n renderTooltip(): React.ReactNode {\n const { data, invertAxis, tooltipTitle, tooltipViewType, showPercentValueInTooltip, styles, showTooltip } =\n this.asProps;\n const { dataDefinitions, pX, pY } = this.state;\n const STooltipChildrenWrapper = Root;\n\n if (!showTooltip) {\n return null;\n }\n\n return (\n <HoverRect.Tooltip\n x={invertAxis ? '' : undefined}\n y={invertAxis ? undefined : ''}\n wMin={100}\n hideHoverLine={true}\n xIndex={pX !== null ? this.visualScale(pX) : undefined}\n yIndex={pY !== null ? this.visualScale(pY) : undefined}\n >\n {(tooltipProps: any) => {\n const dataKey = invertAxis ? tooltipProps.xIndex : tooltipProps.yIndex;\n const showPercentColumn = showPercentValueInTooltip && this.totalValue() !== 0;\n\n if (tooltipViewType === 'single') {\n const item = dataDefinitions.find((dataDefItem) => dataDefItem.id === dataKey);\n if (!item) {\n return {\n children: null,\n };\n }\n\n return {\n children: sstyled(styles)(\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary'>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold>{this.tooltipValueFormatter(data[item.id])}</Text>\n </STooltipChildrenWrapper>,\n ),\n };\n }\n\n return {\n children: sstyled(styles)(\n <Flex direction='column'>\n {tooltipTitle && (\n <HoverRect.Tooltip.Title>Some tooltip title</HoverRect.Tooltip.Title>\n )}\n\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n {dataDefinitions.map((item) => {\n const style = { opacity: item.id === dataKey ? 1 : 0.3 };\n return (\n item.checked && (\n <React.Fragment key={item.id}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color} style={style}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary' style={style}>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold style={style}>{this.tooltipValueFormatter(data[item.id])}</Text>\n </React.Fragment>\n )\n );\n })}\n\n {this.renderTooltipTotalLine(data)}\n </STooltipChildrenWrapper>\n </Flex>,\n ),\n };\n }}\n </HoverRect.Tooltip>\n );\n }\n\n protected percentValue(data: ObjectData, key: string): string {\n const { percentFormatter } = this.asProps;\n\n const total = this.totalValue();\n\n const value = data[key];\n\n if (typeof value === 'number' && total !== 0) {\n const rawPercent = (100 * value) / total;\n const formattedPercent = percentFormatter ? percentFormatter(rawPercent) : Math.round(rawPercent);\n\n return `${formattedPercent}%`;\n }\n\n if (value === null) {\n return `0%`;\n }\n\n return NOT_A_VALUE;\n }\n\n protected override renderTooltipTotalLine<D extends ObjectData>(dataItem: D) {\n const { showTotalInTooltip, showPercentValueInTooltip } = this.asProps;\n\n if (!showTotalInTooltip) {\n return null;\n }\n\n const total = this.totalValue();\n\n return (\n <>\n <Box mt={2} mr={2}>Total</Box>\n { showPercentValueInTooltip && total !== 0 && <Text mt={2} textAlign='end' color='text-secondary'>{Number.isNaN(total) ? NOT_A_VALUE : '100%'}</Text> }\n <Text mt={2} textAlign='end' bold>{Number.isNaN(total) ? NOT_A_VALUE : total}</Text>\n </>\n );\n }\n\n renderHeader() {\n return this.asProps.header ?? null;\n }\n\n override render() {\n const SChart = Root;\n const { styles, plotWidth, plotHeight, data, patterns, invertAxis, a11yAltTextConfig } = this.asProps;\n\n const header = this.renderHeader();\n\n if (invertAxis) {\n return sstyled(styles)(\n <SChart render={Flex} gap={6} direction='column' __excludeProps={['onClick', 'data']}>\n <Flex direction='column'>\n {header}\n <Plot\n ref={this.plotRef}\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n onMouseMove={this.onPlotMouseMove}\n onMouseLeave={this.onPlotMouseLeave}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n </Flex>\n {this.renderLegend()}\n </SChart>,\n );\n }\n\n return sstyled(styles)(\n <SChart render={Flex} gap={6} __excludeProps={['onClick', 'data']}>\n <Plot\n ref={this.plotRef}\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n onMouseMove={this.onPlotMouseMove}\n onMouseLeave={this.onPlotMouseLeave}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n <Flex direction='column' gap={2}>\n {header && (\n <>\n <Box>{header}</Box>\n <Divider />\n </>\n )}\n {this.renderLegend()}\n </Flex>\n </SChart>,\n );\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Cigarette' });\n }\n\n private get visualScale() {\n const cigaretteItems = this.computeCigaretteItems();\n\n const { range, domain } = cigaretteItems.reduce<ScaleThresholdConfig>((acc, { id, visualWidth }, index) => {\n const { range, domain } = acc;\n\n if (visualWidth) {\n range.push(id);\n\n if (domain.length === 0) {\n domain.push(visualWidth + DEFAULT_GAP);\n\n return acc;\n }\n\n if (index !== cigaretteItems.length - 1) {\n const lastAddedDomain = domain[domain.length - 1];\n domain.push(lastAddedDomain + visualWidth + DEFAULT_GAP);\n }\n }\n\n return acc;\n }, { range: [], domain: [] });\n\n return scaleThreshold(domain, range);\n }\n}\n\nexport const CigaretteChart: CigaretteChartType = createComponent(CigaretteChartComponent);\n"],"mappings":"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","ignoreList":[]}