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

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
@@ -5,8 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.CigaretteChart = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
8
+ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
9
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
13
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
14
  var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
@@ -16,6 +18,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
16
18
  var _core = require("@semcore/core");
17
19
  var _i18nEnhance = _interopRequireDefault(require("@semcore/core/lib/utils/enhances/i18nEnhance"));
18
20
  var _resolveColorEnhance = _interopRequireDefault(require("@semcore/core/lib/utils/enhances/resolveColorEnhance"));
21
+ var _rafTrottle = _interopRequireDefault(require("@semcore/core/lib/utils/rafTrottle"));
19
22
  var _uniqueID = _interopRequireDefault(require("@semcore/core/lib/utils/uniqueID"));
20
23
  var _divider = _interopRequireDefault(require("@semcore/divider"));
21
24
  var _flexBox = require("@semcore/flex-box");
@@ -32,21 +35,64 @@ var _Cigarette = _interopRequireDefault(require("../Cigarette/Cigarette"));
32
35
 
33
36
  // @ts-ignore
34
37
 
35
- var wMin = 2;
38
+ var DEFAULT_MINIMAL_BAR_WIDTH = 2;
39
+ var DEFAULT_GAP = 2;
36
40
  var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
37
- function CigaretteChartComponent() {
41
+ function CigaretteChartComponent(props) {
38
42
  var _this;
39
43
  (0, _classCallCheck2["default"])(this, CigaretteChartComponent);
40
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
41
- args[_key] = arguments[_key];
42
- }
43
- _this = (0, _callSuper2["default"])(this, CigaretteChartComponent, [].concat(args));
44
+ _this = (0, _callSuper2["default"])(this, CigaretteChartComponent, [props]);
45
+ (0, _defineProperty2["default"])(_this, "plotRef", /*#__PURE__*/_react["default"].createRef());
44
46
  (0, _defineProperty2["default"])(_this, "plotPadding", 0);
45
47
  (0, _defineProperty2["default"])(_this, "offset", 0);
48
+ (0, _defineProperty2["default"])(_this, "onPlotMouseMove", (0, _rafTrottle["default"])(function (event) {
49
+ if (!_this.plotRef.current) return;
50
+ var _eventToPoint = (0, _utils.eventToPoint)(event, _this.plotRef.current),
51
+ _eventToPoint2 = (0, _slicedToArray2["default"])(_eventToPoint, 2),
52
+ pX = _eventToPoint2[0],
53
+ pY = _eventToPoint2[1];
54
+ _this.setState(function (prevState) {
55
+ return {
56
+ pX: pX,
57
+ pY: pY
58
+ };
59
+ });
60
+ }));
61
+ (0, _defineProperty2["default"])(_this, "onPlotMouseLeave", (0, _rafTrottle["default"])(function () {
62
+ _this.setState(function (prevState) {
63
+ return {
64
+ pX: null,
65
+ pY: null
66
+ };
67
+ });
68
+ }));
69
+ _this.state = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _this.state), {}, {
70
+ pX: null,
71
+ pY: null
72
+ });
46
73
  return _this;
47
74
  }
48
75
  (0, _inherits2["default"])(CigaretteChartComponent, _AbstractChart);
49
76
  return (0, _createClass2["default"])(CigaretteChartComponent, [{
77
+ key: "activeDataDefinitions",
78
+ get: function get() {
79
+ var dataDefinitions = this.state.dataDefinitions;
80
+ return dataDefinitions.filter(function (_ref7) {
81
+ var checked = _ref7.checked;
82
+ return checked;
83
+ });
84
+ }
85
+ }, {
86
+ key: "activePositiveDataDefinitions",
87
+ get: function get() {
88
+ var data = this.asProps.data;
89
+ return this.activeDataDefinitions.filter(function (_ref8) {
90
+ var id = _ref8.id;
91
+ var itemValue = data[id];
92
+ return typeof itemValue === 'number' && itemValue > 0;
93
+ });
94
+ }
95
+ }, {
50
96
  key: "resolveColor",
51
97
  value: function resolveColor(id, index) {
52
98
  var _this$props$colorMap$, _this$props$colorMap;
@@ -69,47 +115,141 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
69
115
  w: 'fit-content'
70
116
  };
71
117
  }
118
+ }, {
119
+ key: "totalValue",
120
+ value: function totalValue() {
121
+ var data = this.asProps.data;
122
+ return this.activeDataDefinitions.reduce(function (acc, _ref9) {
123
+ var id = _ref9.id;
124
+ var itemValue = data[id];
125
+ if (typeof itemValue === 'number') {
126
+ acc += itemValue;
127
+ }
128
+ return acc;
129
+ }, 0);
130
+ }
131
+ }, {
132
+ key: "computeCigaretteItems",
133
+ value: function computeCigaretteItems() {
134
+ var _this$asProps = this.asProps,
135
+ plotWidth = _this$asProps.plotWidth,
136
+ plotHeight = _this$asProps.plotHeight,
137
+ data = _this$asProps.data,
138
+ invertAxis = _this$asProps.invertAxis,
139
+ minimalBarWidth = _this$asProps.minimalBarWidth;
140
+ var dataDefinitions = invertAxis ? this.activeDataDefinitions : (0, _toConsumableArray2["default"])(this.activeDataDefinitions).reverse();
141
+ var count = this.activePositiveDataDefinitions.length;
142
+ var totalGapWidth = DEFAULT_GAP * Math.max(0, count - 1);
143
+ var availableSpace = Math.max(0, (invertAxis ? plotWidth : plotHeight) - totalGapWidth);
144
+ var totalValue = this.totalValue();
145
+ var dataDefinitionsItemSize = dataDefinitions.map(function (_ref0) {
146
+ var id = _ref0.id;
147
+ if (totalValue === 0) {
148
+ return 0;
149
+ }
150
+ var itemValue = data[id];
151
+ if (typeof itemValue !== 'number') return 0;
152
+ return itemValue / totalValue * availableSpace;
153
+ });
154
+ var result = dataDefinitions.map(function (dd, index) {
155
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, dd), {}, {
156
+ value: data[dd.id],
157
+ dataWidth: dataDefinitionsItemSize[index],
158
+ visualWidth: dataDefinitionsItemSize[index],
159
+ isMinVisible: false
160
+ });
161
+ });
162
+ var smallItems = result.filter(function (r) {
163
+ var value = r.value,
164
+ dataWidth = r.dataWidth;
165
+ if (typeof value !== 'number') return false;
166
+ return value > 0 && dataWidth < minimalBarWidth;
167
+ });
168
+ if (smallItems.length === 0) return result;
169
+ var extraNeeded = 0;
170
+ var _iterator = (0, _createForOfIteratorHelper2["default"])(smallItems),
171
+ _step;
172
+ try {
173
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
174
+ var smallItem = _step.value;
175
+ extraNeeded += minimalBarWidth - smallItem.dataWidth;
176
+ smallItem.visualWidth = minimalBarWidth;
177
+ smallItem.isMinVisible = true;
178
+ }
179
+ } catch (err) {
180
+ _iterator.e(err);
181
+ } finally {
182
+ _iterator.f();
183
+ }
184
+ var donors = result.filter(function (r) {
185
+ return !r.isMinVisible && r.dataWidth > minimalBarWidth;
186
+ });
187
+ var donorCapacity = donors.reduce(function (s, d) {
188
+ return s + (d.dataWidth - minimalBarWidth);
189
+ }, 0);
190
+ var _iterator2 = (0, _createForOfIteratorHelper2["default"])(donors),
191
+ _step2;
192
+ try {
193
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
194
+ var donor = _step2.value;
195
+ var available = donor.dataWidth - minimalBarWidth;
196
+ var share = available / donorCapacity;
197
+ var taken = share * extraNeeded;
198
+ donor.visualWidth = donor.dataWidth - taken;
199
+ }
200
+ } catch (err) {
201
+ _iterator2.e(err);
202
+ } finally {
203
+ _iterator2.f();
204
+ }
205
+ return result;
206
+ }
72
207
  }, {
73
208
  key: "xScale",
74
209
  get: function get() {
75
- var invertAxis = this.asProps.invertAxis;
76
- return invertAxis ? this.valueScale : this.categoryScale;
210
+ var plotWidth = this.asProps.plotWidth;
211
+ return (0, _d3Scale.scaleLinear)([0, plotWidth]);
77
212
  }
78
213
  }, {
79
214
  key: "yScale",
80
215
  get: function get() {
81
- var invertAxis = this.asProps.invertAxis;
82
- return invertAxis ? this.categoryScale : this.valueScale;
216
+ var plotHeight = this.asProps.plotHeight;
217
+ return (0, _d3Scale.scaleLinear)([plotHeight, 0]);
83
218
  }
84
219
  }, {
85
220
  key: "renderChart",
86
221
  value: function renderChart() {
87
222
  var _this2 = this;
88
- var _this$asProps = this.asProps,
89
- invertAxis = _this$asProps.invertAxis,
90
- data = _this$asProps.data,
91
- uid = _this$asProps.uid,
92
- duration = _this$asProps.duration,
93
- patterns = _this$asProps.patterns,
94
- plotHeight = _this$asProps.plotHeight,
95
- plotWidth = _this$asProps.plotWidth,
96
- onClick = _this$asProps.onClick;
223
+ var _this$asProps2 = this.asProps,
224
+ invertAxis = _this$asProps2.invertAxis,
225
+ data = _this$asProps2.data,
226
+ uid = _this$asProps2.uid,
227
+ duration = _this$asProps2.duration,
228
+ patterns = _this$asProps2.patterns,
229
+ plotHeight = _this$asProps2.plotHeight,
230
+ plotWidth = _this$asProps2.plotWidth,
231
+ onClick = _this$asProps2.onClick;
97
232
  var _this$state = this.state,
98
233
  dataDefinitions = _this$state.dataDefinitions,
99
234
  highlightedLine = _this$state.highlightedLine;
100
235
  this.offset = 0;
101
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, (invertAxis ? dataDefinitions : (0, _toConsumableArray2["default"])(dataDefinitions).reverse()).map(function (item, index) {
102
- var value = data[item.id];
103
- if (!item.checked || value === _utils.interpolateValue || value === null) {
236
+ var items = this.computeCigaretteItems();
237
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, items.map(function (item, index) {
238
+ var visualWidth = item.visualWidth,
239
+ id = item.id;
240
+ var value = data[id];
241
+ if (value === _utils.interpolateValue || value === null) {
104
242
  return null;
105
243
  }
106
- var absWidth = Math.abs(_this2.valueScale(value) - Math.max(_this2.valueScale(_this2.valueScale.domain()[0]), _this2.valueScale(0)));
107
- var height = (0, _utils.scaleToBand)(_this2.categoryScale).bandwidth() - 4;
108
- var width = value === 0 ? 0 : Math.max(absWidth, wMin * 2) - wMin;
109
- var y = 2;
110
- var x = index === 0 ? 0 : _this2.offset;
244
+ var height = invertAxis ? plotHeight - DEFAULT_GAP * 2 : plotWidth - DEFAULT_GAP * 2;
245
+ var width = visualWidth;
246
+ var y = DEFAULT_GAP;
247
+ var x = _this2.offset;
111
248
  var r = height < 28 ? 2 : 4;
112
- _this2.offset = _this2.offset + width + wMin;
249
+ _this2.offset += visualWidth;
250
+ if (index < items.length - 1) {
251
+ _this2.offset += DEFAULT_GAP;
252
+ }
113
253
  return /*#__PURE__*/_react["default"].createElement(_Cigarette["default"], {
114
254
  key: item.id,
115
255
  dataKey: item.id,
@@ -143,15 +283,18 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
143
283
  value: function renderTooltip() {
144
284
  var _ref = this.asProps,
145
285
  _this3 = this;
146
- var _this$asProps2 = this.asProps,
147
- data = _this$asProps2.data,
148
- invertAxis = _this$asProps2.invertAxis,
149
- tooltipTitle = _this$asProps2.tooltipTitle,
150
- tooltipViewType = _this$asProps2.tooltipViewType,
151
- showPercentValueInTooltip = _this$asProps2.showPercentValueInTooltip,
152
- styles = _this$asProps2.styles,
153
- showTooltip = _this$asProps2.showTooltip;
154
- var dataDefinitions = this.state.dataDefinitions;
286
+ var _this$asProps3 = this.asProps,
287
+ data = _this$asProps3.data,
288
+ invertAxis = _this$asProps3.invertAxis,
289
+ tooltipTitle = _this$asProps3.tooltipTitle,
290
+ tooltipViewType = _this$asProps3.tooltipViewType,
291
+ showPercentValueInTooltip = _this$asProps3.showPercentValueInTooltip,
292
+ styles = _this$asProps3.styles,
293
+ showTooltip = _this$asProps3.showTooltip;
294
+ var _this$state2 = this.state,
295
+ dataDefinitions = _this$state2.dataDefinitions,
296
+ pX = _this$state2.pX,
297
+ pY = _this$state2.pY;
155
298
  var STooltipChildrenWrapper = _flexBox.Box;
156
299
  if (!showTooltip) {
157
300
  return null;
@@ -160,18 +303,22 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
160
303
  x: invertAxis ? '' : undefined,
161
304
  y: invertAxis ? undefined : '',
162
305
  wMin: 100,
163
- hideHoverLine: true
306
+ hideHoverLine: true,
307
+ xIndex: pX !== null ? this.visualScale(pX) : undefined,
308
+ yIndex: pY !== null ? this.visualScale(pY) : undefined
164
309
  }, function (tooltipProps) {
165
310
  var _ref4;
166
311
  var dataKey = invertAxis ? tooltipProps.xIndex : tooltipProps.yIndex;
167
- var showPercentColumn = showPercentValueInTooltip && _this3.totalValue(data) !== 0;
312
+ var showPercentColumn = showPercentValueInTooltip && _this3.totalValue() !== 0;
168
313
  if (tooltipViewType === 'single') {
169
314
  var _ref3;
170
315
  var item = dataDefinitions.find(function (dataDefItem) {
171
316
  return dataDefItem.id === dataKey;
172
317
  });
173
318
  if (!item) {
174
- return null;
319
+ return {
320
+ children: null
321
+ };
175
322
  }
176
323
  return {
177
324
  children: (_ref3 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(STooltipChildrenWrapper, _ref3.cn("STooltipChildrenWrapper", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
@@ -218,16 +365,32 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
218
365
  };
219
366
  });
220
367
  }
368
+ }, {
369
+ key: "percentValue",
370
+ value: function percentValue(data, key) {
371
+ var percentFormatter = this.asProps.percentFormatter;
372
+ var total = this.totalValue();
373
+ var value = data[key];
374
+ if (typeof value === 'number' && total !== 0) {
375
+ var rawPercent = 100 * value / total;
376
+ var formattedPercent = percentFormatter ? percentFormatter(rawPercent) : Math.round(rawPercent);
377
+ return "".concat(formattedPercent, "%");
378
+ }
379
+ if (value === null) {
380
+ return "0%";
381
+ }
382
+ return _AbstractChart2.NOT_A_VALUE;
383
+ }
221
384
  }, {
222
385
  key: "renderTooltipTotalLine",
223
386
  value: function renderTooltipTotalLine(dataItem) {
224
- var _this$asProps3 = this.asProps,
225
- showTotalInTooltip = _this$asProps3.showTotalInTooltip,
226
- showPercentValueInTooltip = _this$asProps3.showPercentValueInTooltip;
387
+ var _this$asProps4 = this.asProps,
388
+ showTotalInTooltip = _this$asProps4.showTotalInTooltip,
389
+ showPercentValueInTooltip = _this$asProps4.showPercentValueInTooltip;
227
390
  if (!showTotalInTooltip) {
228
391
  return null;
229
392
  }
230
- var total = this.totalValue(dataItem);
393
+ var total = this.totalValue();
231
394
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_flexBox.Box, {
232
395
  mt: 2,
233
396
  mr: 2
@@ -253,14 +416,14 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
253
416
  var _ref2 = this.asProps,
254
417
  _ref6;
255
418
  var SChart = _flexBox.Flex;
256
- var _this$asProps4 = this.asProps,
257
- styles = _this$asProps4.styles,
258
- plotWidth = _this$asProps4.plotWidth,
259
- plotHeight = _this$asProps4.plotHeight,
260
- data = _this$asProps4.data,
261
- patterns = _this$asProps4.patterns,
262
- invertAxis = _this$asProps4.invertAxis,
263
- a11yAltTextConfig = _this$asProps4.a11yAltTextConfig;
419
+ var _this$asProps5 = this.asProps,
420
+ styles = _this$asProps5.styles,
421
+ plotWidth = _this$asProps5.plotWidth,
422
+ plotHeight = _this$asProps5.plotHeight,
423
+ data = _this$asProps5.data,
424
+ patterns = _this$asProps5.patterns,
425
+ invertAxis = _this$asProps5.invertAxis,
426
+ a11yAltTextConfig = _this$asProps5.a11yAltTextConfig;
264
427
  var header = this.renderHeader();
265
428
  if (invertAxis) {
266
429
  var _ref5;
@@ -271,26 +434,32 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
271
434
  }, _ref2))), /*#__PURE__*/_react["default"].createElement(_flexBox.Flex, _ref5.cn("Flex", {
272
435
  "direction": 'column'
273
436
  }), header, /*#__PURE__*/_react["default"].createElement(_.Plot, _ref5.cn("Plot", {
437
+ "ref": this.plotRef,
274
438
  "data": data,
275
439
  "scale": [this.xScale, this.yScale],
276
440
  "width": plotWidth,
277
441
  "height": plotHeight,
278
442
  "dataHints": this.dataHints,
279
443
  "patterns": patterns,
280
- "a11yAltTextConfig": a11yAltTextConfig
444
+ "a11yAltTextConfig": a11yAltTextConfig,
445
+ "onMouseMove": this.onPlotMouseMove,
446
+ "onMouseLeave": this.onPlotMouseLeave
281
447
  }), this.renderTooltip(), this.renderChart())), this.renderLegend());
282
448
  }
283
449
  return _ref6 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SChart, _ref6.cn("SChart", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
284
450
  "gap": 6,
285
451
  "__excludeProps": ['onClick', 'data']
286
452
  }, _ref2))), /*#__PURE__*/_react["default"].createElement(_.Plot, _ref6.cn("Plot", {
453
+ "ref": this.plotRef,
287
454
  "data": data,
288
455
  "scale": [this.xScale, this.yScale],
289
456
  "width": plotWidth,
290
457
  "height": plotHeight,
291
458
  "dataHints": this.dataHints,
292
459
  "patterns": patterns,
293
- "a11yAltTextConfig": a11yAltTextConfig
460
+ "a11yAltTextConfig": a11yAltTextConfig,
461
+ "onMouseMove": this.onPlotMouseMove,
462
+ "onMouseLeave": this.onPlotMouseLeave
294
463
  }), this.renderTooltip(), this.renderChart()), /*#__PURE__*/_react["default"].createElement(_flexBox.Flex, _ref6.cn("Flex", {
295
464
  "direction": 'column',
296
465
  "gap": 2
@@ -304,41 +473,33 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
304
473
  });
305
474
  }
306
475
  }, {
307
- key: "selectedData",
308
- get: function get() {
309
- var data = this.asProps.data;
310
- var dataDefinitions = this.state.dataDefinitions;
311
- var result = new Map();
312
- dataDefinitions.forEach(function (dataDefItem) {
313
- var value = data[dataDefItem.id];
314
- if (dataDefItem.checked && value !== _utils.interpolateValue) {
315
- result.set(dataDefItem.id, value);
316
- }
317
- });
318
- return result;
319
- }
320
- }, {
321
- key: "categoryScale",
322
- get: function get() {
323
- var _this$asProps5 = this.asProps,
324
- plotWidth = _this$asProps5.plotWidth,
325
- plotHeight = _this$asProps5.plotHeight,
326
- invertAxis = _this$asProps5.invertAxis;
327
- var range = invertAxis ? [plotHeight, 0] : [0, plotWidth];
328
- return (0, _d3Scale.scaleBand)([0], range);
329
- }
330
- }, {
331
- key: "valueScale",
476
+ key: "visualScale",
332
477
  get: function get() {
333
- var _this$asProps6 = this.asProps,
334
- plotWidth = _this$asProps6.plotWidth,
335
- plotHeight = _this$asProps6.plotHeight,
336
- invertAxis = _this$asProps6.invertAxis;
337
- var max = 0;
338
- this.selectedData.forEach(function (value) {
339
- max = max + value;
340
- });
341
- return (0, _d3Scale.scaleLinear)().range(invertAxis ? [0, plotWidth] : [plotHeight, 0]).domain([0, max]);
478
+ var cigaretteItems = this.computeCigaretteItems();
479
+ var _cigaretteItems$reduc = cigaretteItems.reduce(function (acc, _ref1, index) {
480
+ var id = _ref1.id,
481
+ visualWidth = _ref1.visualWidth;
482
+ var range = acc.range,
483
+ domain = acc.domain;
484
+ if (visualWidth) {
485
+ range.push(id);
486
+ if (domain.length === 0) {
487
+ domain.push(visualWidth + DEFAULT_GAP);
488
+ return acc;
489
+ }
490
+ if (index !== cigaretteItems.length - 1) {
491
+ var lastAddedDomain = domain[domain.length - 1];
492
+ domain.push(lastAddedDomain + visualWidth + DEFAULT_GAP);
493
+ }
494
+ }
495
+ return acc;
496
+ }, {
497
+ range: [],
498
+ domain: []
499
+ }),
500
+ range = _cigaretteItems$reduc.range,
501
+ domain = _cigaretteItems$reduc.domain;
502
+ return (0, _d3Scale.scaleThreshold)(domain, range);
342
503
  }
343
504
  }]);
344
505
  }(_AbstractChart2.AbstractChart);
@@ -357,7 +518,8 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
357
518
  duration: 500,
358
519
  plotWidth: !invertAxis && !props.plotWidth ? 44 : props.plotWidth,
359
520
  plotHeight: invertAxis && !props.plotHeight ? 28 : props.plotHeight,
360
- showPercentValueInTooltip: false
521
+ showPercentValueInTooltip: false,
522
+ minimalBarWidth: DEFAULT_MINIMAL_BAR_WIDTH
361
523
  };
362
524
  });
363
525
  (0, _defineProperty2["default"])(CigaretteChartComponent, "enhance", [(0, _resolveColorEnhance["default"])(), (0, _uniqueID["default"])(), (0, _i18nEnhance["default"])(_intergalacticDynamicLocales.localizedMessages)]);
@@ -1 +1 @@
1
- {"version":3,"file":"CigaretteChart.js","names":["_core","require","_i18nEnhance","_interopRequireDefault","_resolveColorEnhance","_uniqueID","_divider","_flexBox","_typography","_d3Scale","_react","_","_AbstractChart2","_AnimatedClipPath","_intergalacticDynamicLocales","_utils","_Cigarette","wMin","CigaretteChartComponent","_AbstractChart","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","_callSuper2","concat","_defineProperty2","_inherits2","_createClass2","key","value","resolveColor","id","index","_this$props$colorMap$","_this$props$colorMap","props","colorMap","getDefaultDataDefinitions","dataDefinitions","_superPropGet2","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","_toConsumableArray2","reverse","item","checked","interpolateValue","absWidth","Math","abs","max","domain","height","scaleToBand","bandwidth","width","y","x","r","dataKey","hide","color","direction","hovered","undefined","renderTooltip","_ref","_this3","_this$asProps2","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","STooltipChildrenWrapper","Box","HoverRect","Tooltip","hideHoverLine","tooltipProps","_ref4","xIndex","yIndex","showPercentColumn","totalValue","_ref3","find","dataDefItem","children","sstyled","cn","_objectSpread2","assignProps","Dot","mr","label","Text","percentValue","tooltipValueFormatter","Flex","Title","style","opacity","textAlign","bold","renderTooltipTotalLine","dataItem","_this$asProps3","showTotalInTooltip","total","mt","Number","isNaN","NOT_A_VALUE","renderHeader","_this$asProps$header","header","render","_ref2","_ref6","SChart","_this$asProps4","a11yAltTextConfig","_ref5","Plot","xScale","yScale","dataHints","renderLegend","getLegendAriaLabel","getI18nText","chartType","result","Map","forEach","set","_this$asProps5","range","scaleBand","_this$asProps6","selectedData","scaleLinear","AbstractChart","_props$invertAxis","showXAxis","showYAxis","showLegend","marginX","marginY","resolveColorEnhance","uniqueIDEnhancement","i18nEnhance","localizedMessages","CigaretteChart","exports","createComponent"],"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":["_core","require","_i18nEnhance","_interopRequireDefault","_resolveColorEnhance","_rafTrottle","_uniqueID","_divider","_flexBox","_typography","_d3Scale","_react","_","_AbstractChart2","_AnimatedClipPath","_intergalacticDynamicLocales","_utils","_Cigarette","DEFAULT_MINIMAL_BAR_WIDTH","DEFAULT_GAP","CigaretteChartComponent","_AbstractChart","props","_this","_classCallCheck2","_callSuper2","_defineProperty2","React","createRef","trottle","event","plotRef","current","_eventToPoint","eventToPoint","_eventToPoint2","_slicedToArray2","pX","pY","setState","prevState","state","_objectSpread2","_inherits2","_createClass2","key","get","dataDefinitions","filter","_ref7","checked","data","asProps","activeDataDefinitions","_ref8","id","itemValue","value","resolveColor","index","_this$props$colorMap$","_this$props$colorMap","colorMap","concat","getDefaultDataDefinitions","_superPropGet2","map","dataDef","columns","slice","defaultLegendProps","legendType","w","totalValue","reduce","acc","_ref9","computeCigaretteItems","_this$asProps","plotWidth","plotHeight","invertAxis","minimalBarWidth","_toConsumableArray2","reverse","count","activePositiveDataDefinitions","length","totalGapWidth","Math","max","availableSpace","dataDefinitionsItemSize","_ref0","result","dd","dataWidth","visualWidth","isMinVisible","smallItems","r","extraNeeded","_iterator","_createForOfIteratorHelper2","_step","s","n","done","smallItem","err","e","f","donors","donorCapacity","d","_iterator2","_step2","donor","available","share","taken","scaleLinear","renderChart","_this2","_this$asProps2","uid","duration","patterns","onClick","_this$state","highlightedLine","offset","items","createElement","Fragment","item","interpolateValue","height","width","y","x","dataKey","hide","color","direction","hovered","undefined","renderTooltip","_ref","_this3","_this$asProps3","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","_this$state2","STooltipChildrenWrapper","Box","HoverRect","Tooltip","wMin","hideHoverLine","xIndex","visualScale","yIndex","tooltipProps","_ref4","showPercentColumn","_ref3","find","dataDefItem","children","sstyled","cn","assignProps","Dot","mr","label","Text","percentValue","tooltipValueFormatter","Flex","Title","style","opacity","textAlign","bold","renderTooltipTotalLine","percentFormatter","total","rawPercent","formattedPercent","round","NOT_A_VALUE","dataItem","_this$asProps4","showTotalInTooltip","mt","Number","isNaN","renderHeader","_this$asProps$header","header","render","_ref2","_ref6","SChart","_this$asProps5","a11yAltTextConfig","_ref5","Plot","xScale","yScale","dataHints","onPlotMouseMove","onPlotMouseLeave","renderLegend","getLegendAriaLabel","getI18nText","chartType","cigaretteItems","_cigaretteItems$reduc","_ref1","range","domain","push","lastAddedDomain","scaleThreshold","AbstractChart","_props$invertAxis","showXAxis","showYAxis","showLegend","marginX","marginY","resolveColorEnhance","uniqueIDEnhancement","i18nEnhance","localizedMessages","CigaretteChart","exports","createComponent"],"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":[]}