@semcore/d3-chart 17.0.0-prerelease.9 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/lib/cjs/Bubble.js +20 -15
  3. package/lib/cjs/Bubble.js.map +1 -1
  4. package/lib/cjs/a11y/PlotA11yView.js +5 -5
  5. package/lib/cjs/a11y/PlotA11yView.js.map +1 -1
  6. package/lib/cjs/component/Chart/AbstractChart.js +5 -17
  7. package/lib/cjs/component/Chart/AbstractChart.js.map +1 -1
  8. package/lib/cjs/component/Chart/CigaretteChart.js +197 -57
  9. package/lib/cjs/component/Chart/CigaretteChart.js.map +1 -1
  10. package/lib/cjs/component/Chart/CigaretteChart.type.js.map +1 -1
  11. package/lib/cjs/style/bubble.shadow.css +4 -0
  12. package/lib/cjs/utils.js +3 -2
  13. package/lib/cjs/utils.js.map +1 -1
  14. package/lib/es6/Bubble.js +20 -15
  15. package/lib/es6/Bubble.js.map +1 -1
  16. package/lib/es6/a11y/PlotA11yView.js +4 -3
  17. package/lib/es6/a11y/PlotA11yView.js.map +1 -1
  18. package/lib/es6/component/Chart/AbstractChart.js +5 -17
  19. package/lib/es6/component/Chart/AbstractChart.js.map +1 -1
  20. package/lib/es6/component/Chart/CigaretteChart.js +199 -59
  21. package/lib/es6/component/Chart/CigaretteChart.js.map +1 -1
  22. package/lib/es6/component/Chart/CigaretteChart.type.js.map +1 -1
  23. package/lib/es6/style/bubble.shadow.css +4 -0
  24. package/lib/es6/utils.js +3 -2
  25. package/lib/es6/utils.js.map +1 -1
  26. package/lib/esm/AnimatedClipPath.mjs +1 -1
  27. package/lib/esm/Area.mjs +2 -3
  28. package/lib/esm/Axis.mjs +4 -7
  29. package/lib/esm/Bar.mjs +1 -2
  30. package/lib/esm/Bubble.mjs +24 -21
  31. package/lib/esm/CompactHorizontalBar.mjs +4 -4
  32. package/lib/esm/Donut.mjs +5 -4
  33. package/lib/esm/Dots.mjs +1 -2
  34. package/lib/esm/HorizontalBar.mjs +1 -2
  35. package/lib/esm/Hover.mjs +2 -3
  36. package/lib/esm/Line.mjs +2 -3
  37. package/lib/esm/Pattern.mjs +6 -7
  38. package/lib/esm/Plot.mjs +3 -5
  39. package/lib/esm/Radar.mjs +7 -10
  40. package/lib/esm/RadialTree.mjs +17 -63
  41. package/lib/esm/Reference.mjs +0 -1
  42. package/lib/esm/ResponsiveContainer.mjs +3 -5
  43. package/lib/esm/ScatterPlot.mjs +2 -2
  44. package/lib/esm/StackBar.mjs +2 -2
  45. package/lib/esm/StackedArea.mjs +2 -2
  46. package/lib/esm/Tooltip.mjs +5 -8
  47. package/lib/esm/Venn.mjs +3 -3
  48. package/lib/esm/a11y/DataAccessibilityTable.mjs +2 -4
  49. package/lib/esm/a11y/PlotA11yModule.mjs +2 -2
  50. package/lib/esm/a11y/PlotA11yView.mjs +11 -19
  51. package/lib/esm/a11y/focus.mjs +2 -2
  52. package/lib/esm/a11y/hints.mjs +3 -3
  53. package/lib/esm/a11y/insights.mjs +15 -20
  54. package/lib/esm/a11y/intl.mjs +1 -1
  55. package/lib/esm/a11y/locale.mjs +1 -2
  56. package/lib/esm/a11y/serialize.mjs +17 -17
  57. package/lib/esm/component/Chart/AbstractChart.mjs +20 -34
  58. package/lib/esm/component/Chart/AreaChart.mjs +5 -4
  59. package/lib/esm/component/Chart/BarChart.mjs +4 -3
  60. package/lib/esm/component/Chart/BubbleChart.mjs +8 -8
  61. package/lib/esm/component/Chart/CigaretteChart.mjs +204 -64
  62. package/lib/esm/component/Chart/CompactHorizontalBarChart.mjs +2 -1
  63. package/lib/esm/component/Chart/DonutChart.mjs +3 -2
  64. package/lib/esm/component/Chart/HistogramChart.mjs +5 -4
  65. package/lib/esm/component/Chart/LineChart.mjs +5 -4
  66. package/lib/esm/component/Chart/RadarChart.mjs +4 -5
  67. package/lib/esm/component/Chart/ScatterPlotChart.mjs +3 -2
  68. package/lib/esm/component/Chart/VennChart.mjs +3 -3
  69. package/lib/esm/component/ChartLegend/BaseLegend.mjs +9 -14
  70. package/lib/esm/component/ChartLegend/LegendFlex/LegendFlex.mjs +1 -2
  71. package/lib/esm/component/ChartLegend/LegendItem/LegendItem.mjs +1 -2
  72. package/lib/esm/component/ChartLegend/LegendTable/LegendTable.mjs +2 -4
  73. package/lib/esm/component/ChartLegend/index.mjs +2 -0
  74. package/lib/esm/component/Cigarette/Cigarette.mjs +1 -2
  75. package/lib/esm/component/StackGroupBar/StackGroupBar.mjs +2 -3
  76. package/lib/esm/createElement.mjs +1 -1
  77. package/lib/esm/index.mjs +1 -0
  78. package/lib/esm/style/bubble.shadow.css +4 -0
  79. package/lib/esm/utils.mjs +3 -3
  80. package/lib/types/a11y/PlotA11yView.d.ts +1 -1
  81. package/lib/types/component/Chart/AbstractChart.d.ts +4 -7
  82. package/lib/types/component/Chart/CigaretteChart.type.d.ts +7 -4
  83. package/package.json +17 -17
@@ -10,6 +10,7 @@ var _core = require("@semcore/core");
10
10
  var _baseComponents = require("@semcore/base-components");
11
11
  var _i18nEnhance = _interopRequireDefault(require("@semcore/core/lib/utils/enhances/i18nEnhance"));
12
12
  var _resolveColorEnhance = _interopRequireDefault(require("@semcore/core/lib/utils/enhances/resolveColorEnhance"));
13
+ var _rafTrottle = _interopRequireDefault(require("@semcore/core/lib/utils/rafTrottle"));
13
14
  var _uniqueID = _interopRequireDefault(require("@semcore/core/lib/utils/uniqueID"));
14
15
  var _divider = _interopRequireDefault(require("@semcore/divider"));
15
16
  var _typography = require("@semcore/typography");
@@ -25,12 +26,52 @@ var _Cigarette = _interopRequireDefault(require("../Cigarette/Cigarette"));
25
26
 
26
27
  // @ts-ignore
27
28
 
28
- const wMin = 2;
29
+ const DEFAULT_MINIMAL_BAR_WIDTH = 2;
30
+ const DEFAULT_GAP = 2;
29
31
  class CigaretteChartComponent extends _AbstractChart.AbstractChart {
30
- constructor(...args) {
31
- super(...args);
32
+ constructor(props) {
33
+ super(props);
34
+ (0, _defineProperty2.default)(this, "plotRef", /*#__PURE__*/_react.default.createRef());
32
35
  (0, _defineProperty2.default)(this, "plotPadding", 0);
33
36
  (0, _defineProperty2.default)(this, "offset", 0);
37
+ (0, _defineProperty2.default)(this, "onPlotMouseMove", (0, _rafTrottle.default)(event => {
38
+ if (!this.plotRef.current) return;
39
+ const [pX, pY] = (0, _utils.eventToPoint)(event, this.plotRef.current);
40
+ this.setState(prevState => ({
41
+ pX,
42
+ pY
43
+ }));
44
+ }));
45
+ (0, _defineProperty2.default)(this, "onPlotMouseLeave", (0, _rafTrottle.default)(() => {
46
+ this.setState(prevState => ({
47
+ pX: null,
48
+ pY: null
49
+ }));
50
+ }));
51
+ this.state = {
52
+ ...this.state,
53
+ pX: null,
54
+ pY: null
55
+ };
56
+ }
57
+ get activeDataDefinitions() {
58
+ const {
59
+ dataDefinitions
60
+ } = this.state;
61
+ return dataDefinitions.filter(({
62
+ checked
63
+ }) => checked);
64
+ }
65
+ get activePositiveDataDefinitions() {
66
+ const {
67
+ data
68
+ } = this.asProps;
69
+ return this.activeDataDefinitions.filter(({
70
+ id
71
+ }) => {
72
+ const itemValue = data[id];
73
+ return typeof itemValue === 'number' && itemValue > 0;
74
+ });
34
75
  }
35
76
  resolveColor(id, index) {
36
77
  return this.props.colorMap?.[id] ?? `blue-${5 - index}00`;
@@ -48,17 +89,86 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
48
89
  w: 'fit-content'
49
90
  };
50
91
  }
92
+ totalValue() {
93
+ const {
94
+ data
95
+ } = this.asProps;
96
+ return this.activeDataDefinitions.reduce((acc, {
97
+ id
98
+ }) => {
99
+ const itemValue = data[id];
100
+ if (typeof itemValue === 'number') {
101
+ acc += itemValue;
102
+ }
103
+ return acc;
104
+ }, 0);
105
+ }
106
+ computeCigaretteItems() {
107
+ const {
108
+ plotWidth,
109
+ plotHeight,
110
+ data,
111
+ invertAxis,
112
+ minimalBarWidth
113
+ } = this.asProps;
114
+ const dataDefinitions = invertAxis ? this.activeDataDefinitions : [...this.activeDataDefinitions].reverse();
115
+ const count = this.activePositiveDataDefinitions.length;
116
+ const totalGapWidth = DEFAULT_GAP * Math.max(0, count - 1);
117
+ const availableSpace = Math.max(0, (invertAxis ? plotWidth : plotHeight) - totalGapWidth);
118
+ const totalValue = this.totalValue();
119
+ const dataDefinitionsItemSize = dataDefinitions.map(({
120
+ id
121
+ }) => {
122
+ if (totalValue === 0) {
123
+ return 0;
124
+ }
125
+ const itemValue = data[id];
126
+ if (typeof itemValue !== 'number') return 0;
127
+ return itemValue / totalValue * availableSpace;
128
+ });
129
+ const result = dataDefinitions.map((dd, index) => ({
130
+ ...dd,
131
+ value: data[dd.id],
132
+ dataWidth: dataDefinitionsItemSize[index],
133
+ visualWidth: dataDefinitionsItemSize[index],
134
+ isMinVisible: false
135
+ }));
136
+ const smallItems = result.filter(r => {
137
+ const {
138
+ value,
139
+ dataWidth
140
+ } = r;
141
+ if (typeof value !== 'number') return false;
142
+ return value > 0 && dataWidth < minimalBarWidth;
143
+ });
144
+ if (smallItems.length === 0) return result;
145
+ let extraNeeded = 0;
146
+ for (const smallItem of smallItems) {
147
+ extraNeeded += minimalBarWidth - smallItem.dataWidth;
148
+ smallItem.visualWidth = minimalBarWidth;
149
+ smallItem.isMinVisible = true;
150
+ }
151
+ const donors = result.filter(r => !r.isMinVisible && r.dataWidth > minimalBarWidth);
152
+ const donorCapacity = donors.reduce((s, d) => s + (d.dataWidth - minimalBarWidth), 0);
153
+ for (const donor of donors) {
154
+ const available = donor.dataWidth - minimalBarWidth;
155
+ const share = available / donorCapacity;
156
+ const taken = share * extraNeeded;
157
+ donor.visualWidth = donor.dataWidth - taken;
158
+ }
159
+ return result;
160
+ }
51
161
  get xScale() {
52
162
  const {
53
- invertAxis
163
+ plotWidth
54
164
  } = this.asProps;
55
- return invertAxis ? this.valueScale : this.categoryScale;
165
+ return (0, _d3Scale.scaleLinear)([0, plotWidth]);
56
166
  }
57
167
  get yScale() {
58
168
  const {
59
- invertAxis
169
+ plotHeight
60
170
  } = this.asProps;
61
- return invertAxis ? this.categoryScale : this.valueScale;
171
+ return (0, _d3Scale.scaleLinear)([plotHeight, 0]);
62
172
  }
63
173
  renderChart() {
64
174
  const {
@@ -76,18 +186,25 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
76
186
  highlightedLine
77
187
  } = this.state;
78
188
  this.offset = 0;
79
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, (invertAxis ? dataDefinitions : [...dataDefinitions].reverse()).map((item, index) => {
80
- const value = data[item.id];
81
- if (!item.checked || value === _utils.interpolateValue || value === null) {
189
+ const items = this.computeCigaretteItems();
190
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, items.map((item, index) => {
191
+ const {
192
+ visualWidth,
193
+ id
194
+ } = item;
195
+ const value = data[id];
196
+ if (value === _utils.interpolateValue || value === null) {
82
197
  return null;
83
198
  }
84
- const absWidth = Math.abs(this.valueScale(value) - Math.max(this.valueScale(this.valueScale.domain()[0]), this.valueScale(0)));
85
- const height = (0, _utils.scaleToBand)(this.categoryScale).bandwidth() - 4;
86
- const width = value === 0 ? 0 : Math.max(absWidth, wMin * 2) - wMin;
87
- const y = 2;
88
- const x = index === 0 ? 0 : this.offset;
199
+ const height = invertAxis ? plotHeight - DEFAULT_GAP * 2 : plotWidth - DEFAULT_GAP * 2;
200
+ const width = visualWidth;
201
+ const y = DEFAULT_GAP;
202
+ const x = this.offset;
89
203
  const r = height < 28 ? 2 : 4;
90
- this.offset = this.offset + width + wMin;
204
+ this.offset += visualWidth;
205
+ if (index < items.length - 1) {
206
+ this.offset += DEFAULT_GAP;
207
+ }
91
208
  return /*#__PURE__*/_react.default.createElement(_Cigarette.default, {
92
209
  key: item.id,
93
210
  dataKey: item.id,
@@ -128,7 +245,9 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
128
245
  showTooltip
129
246
  } = this.asProps;
130
247
  const {
131
- dataDefinitions
248
+ dataDefinitions,
249
+ pX,
250
+ pY
132
251
  } = this.state;
133
252
  const STooltipChildrenWrapper = _baseComponents.Box;
134
253
  if (!showTooltip) {
@@ -138,16 +257,20 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
138
257
  x: invertAxis ? '' : undefined,
139
258
  y: invertAxis ? undefined : '',
140
259
  wMin: 100,
141
- hideHoverLine: true
260
+ hideHoverLine: true,
261
+ xIndex: pX !== null ? this.visualScale(pX) : undefined,
262
+ yIndex: pY !== null ? this.visualScale(pY) : undefined
142
263
  }, tooltipProps => {
143
264
  var _ref4;
144
265
  const dataKey = invertAxis ? tooltipProps.xIndex : tooltipProps.yIndex;
145
- const showPercentColumn = showPercentValueInTooltip && this.totalValue(data) !== 0;
266
+ const showPercentColumn = showPercentValueInTooltip && this.totalValue() !== 0;
146
267
  if (tooltipViewType === 'single') {
147
268
  var _ref3;
148
269
  const item = dataDefinitions.find(dataDefItem => dataDefItem.id === dataKey);
149
270
  if (!item) {
150
- return null;
271
+ return {
272
+ children: null
273
+ };
151
274
  }
152
275
  return {
153
276
  children: (_ref3 = (0, _core.sstyled)(styles), /*#__PURE__*/_react.default.createElement(STooltipChildrenWrapper, _ref3.cn("STooltipChildrenWrapper", {
@@ -198,6 +321,22 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
198
321
  };
199
322
  });
200
323
  }
324
+ percentValue(data, key) {
325
+ const {
326
+ percentFormatter
327
+ } = this.asProps;
328
+ const total = this.totalValue();
329
+ const value = data[key];
330
+ if (typeof value === 'number' && total !== 0) {
331
+ const rawPercent = 100 * value / total;
332
+ const formattedPercent = percentFormatter ? percentFormatter(rawPercent) : Math.round(rawPercent);
333
+ return `${formattedPercent}%`;
334
+ }
335
+ if (value === null) {
336
+ return `0%`;
337
+ }
338
+ return _AbstractChart.NOT_A_VALUE;
339
+ }
201
340
  renderTooltipTotalLine(dataItem) {
202
341
  const {
203
342
  showTotalInTooltip,
@@ -206,7 +345,7 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
206
345
  if (!showTotalInTooltip) {
207
346
  return null;
208
347
  }
209
- const total = this.totalValue(dataItem);
348
+ const total = this.totalValue();
210
349
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_baseComponents.Box, {
211
350
  mt: 2,
212
351
  mr: 2
@@ -248,13 +387,16 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
248
387
  }), /*#__PURE__*/_react.default.createElement(_baseComponents.Flex, _ref5.cn("Flex", {
249
388
  "direction": 'column'
250
389
  }), header, /*#__PURE__*/_react.default.createElement(_.Plot, _ref5.cn("Plot", {
390
+ "ref": this.plotRef,
251
391
  "data": data,
252
392
  "scale": [this.xScale, this.yScale],
253
393
  "width": plotWidth,
254
394
  "height": plotHeight,
255
395
  "dataHints": this.dataHints,
256
396
  "patterns": patterns,
257
- "a11yAltTextConfig": a11yAltTextConfig
397
+ "a11yAltTextConfig": a11yAltTextConfig,
398
+ "onMouseMove": this.onPlotMouseMove,
399
+ "onMouseLeave": this.onPlotMouseLeave
258
400
  }), this.renderTooltip(), this.renderChart())), this.renderLegend());
259
401
  }
260
402
  return _ref6 = (0, _core.sstyled)(styles), /*#__PURE__*/_react.default.createElement(SChart, _ref6.cn("SChart", {
@@ -263,13 +405,16 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
263
405
  "__excludeProps": ['onClick', 'data']
264
406
  }, _ref2)
265
407
  }), /*#__PURE__*/_react.default.createElement(_.Plot, _ref6.cn("Plot", {
408
+ "ref": this.plotRef,
266
409
  "data": data,
267
410
  "scale": [this.xScale, this.yScale],
268
411
  "width": plotWidth,
269
412
  "height": plotHeight,
270
413
  "dataHints": this.dataHints,
271
414
  "patterns": patterns,
272
- "a11yAltTextConfig": a11yAltTextConfig
415
+ "a11yAltTextConfig": a11yAltTextConfig,
416
+ "onMouseMove": this.onPlotMouseMove,
417
+ "onMouseLeave": this.onPlotMouseLeave
273
418
  }), this.renderTooltip(), this.renderChart()), /*#__PURE__*/_react.default.createElement(_baseComponents.Flex, _ref6.cn("Flex", {
274
419
  "direction": 'column',
275
420
  "gap": 2
@@ -280,42 +425,36 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
280
425
  chartType: 'Cigarette'
281
426
  });
282
427
  }
283
- get selectedData() {
428
+ get visualScale() {
429
+ const cigaretteItems = this.computeCigaretteItems();
284
430
  const {
285
- data
286
- } = this.asProps;
287
- const {
288
- dataDefinitions
289
- } = this.state;
290
- const result = new Map();
291
- dataDefinitions.forEach(dataDefItem => {
292
- const value = data[dataDefItem.id];
293
- if (dataDefItem.checked && value !== _utils.interpolateValue) {
294
- result.set(dataDefItem.id, value);
431
+ range,
432
+ domain
433
+ } = cigaretteItems.reduce((acc, {
434
+ id,
435
+ visualWidth
436
+ }, index) => {
437
+ const {
438
+ range,
439
+ domain
440
+ } = acc;
441
+ if (visualWidth) {
442
+ range.push(id);
443
+ if (domain.length === 0) {
444
+ domain.push(visualWidth + DEFAULT_GAP);
445
+ return acc;
446
+ }
447
+ if (index !== cigaretteItems.length - 1) {
448
+ const lastAddedDomain = domain[domain.length - 1];
449
+ domain.push(lastAddedDomain + visualWidth + DEFAULT_GAP);
450
+ }
295
451
  }
452
+ return acc;
453
+ }, {
454
+ range: [],
455
+ domain: []
296
456
  });
297
- return result;
298
- }
299
- get categoryScale() {
300
- const {
301
- plotWidth,
302
- plotHeight,
303
- invertAxis
304
- } = this.asProps;
305
- const range = invertAxis ? [plotHeight, 0] : [0, plotWidth];
306
- return (0, _d3Scale.scaleBand)([0], range);
307
- }
308
- get valueScale() {
309
- const {
310
- plotWidth,
311
- plotHeight,
312
- invertAxis
313
- } = this.asProps;
314
- let max = 0;
315
- this.selectedData.forEach(value => {
316
- max = max + value;
317
- });
318
- return (0, _d3Scale.scaleLinear)().range(invertAxis ? [0, plotWidth] : [plotHeight, 0]).domain([0, max]);
457
+ return (0, _d3Scale.scaleThreshold)(domain, range);
319
458
  }
320
459
  }
321
460
  (0, _defineProperty2.default)(CigaretteChartComponent, "displayName", 'Cigarette.Bar');
@@ -332,7 +471,8 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
332
471
  duration: 500,
333
472
  plotWidth: !invertAxis && !props.plotWidth ? 44 : props.plotWidth,
334
473
  plotHeight: invertAxis && !props.plotHeight ? 28 : props.plotHeight,
335
- showPercentValueInTooltip: false
474
+ showPercentValueInTooltip: false,
475
+ minimalBarWidth: DEFAULT_MINIMAL_BAR_WIDTH
336
476
  };
337
477
  });
338
478
  (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","_baseComponents","_i18nEnhance","_interopRequireDefault","_resolveColorEnhance","_uniqueID","_divider","_typography","_d3Scale","_react","_","_AbstractChart","_AnimatedClipPath","_intergalacticDynamicLocales","_utils","_Cigarette","wMin","CigaretteChartComponent","AbstractChart","constructor","args","_defineProperty2","default","resolveColor","id","index","props","colorMap","getDefaultDataDefinitions","dataDefinitions","map","dataDef","columns","slice","defaultLegendProps","legendType","w","xScale","invertAxis","asProps","valueScale","categoryScale","yScale","renderChart","data","uid","duration","patterns","plotHeight","plotWidth","onClick","highlightedLine","state","offset","createElement","Fragment","reverse","item","value","checked","interpolateValue","absWidth","Math","abs","max","domain","height","scaleToBand","bandwidth","width","y","x","r","key","dataKey","hide","length","color","direction","hovered","undefined","renderTooltip","_ref","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","STooltipChildrenWrapper","Box","HoverRect","Tooltip","hideHoverLine","tooltipProps","_ref4","xIndex","yIndex","showPercentColumn","totalValue","_ref3","find","dataDefItem","children","sstyled","cn","assignProps","Dot","mr","label","Text","percentValue","tooltipValueFormatter","Flex","Title","style","opacity","textAlign","bold","renderTooltipTotalLine","dataItem","showTotalInTooltip","total","mt","Number","isNaN","NOT_A_VALUE","renderHeader","header","render","_ref2","_ref6","SChart","a11yAltTextConfig","_ref5","Plot","dataHints","renderLegend","getLegendAriaLabel","getI18nText","chartType","selectedData","result","Map","forEach","set","range","scaleBand","scaleLinear","showXAxis","showYAxis","showLegend","marginX","marginY","resolveColorEnhance","uniqueIDEnhancement","i18nEnhance","localizedMessages","CigaretteChart","exports","createComponent"],"sources":["../../../../src/component/Chart/CigaretteChart.tsx"],"sourcesContent":["import { Box, Flex } from '@semcore/base-components';\nimport { 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 { 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","_baseComponents","_i18nEnhance","_interopRequireDefault","_resolveColorEnhance","_rafTrottle","_uniqueID","_divider","_typography","_d3Scale","_react","_","_AbstractChart","_AnimatedClipPath","_intergalacticDynamicLocales","_utils","_Cigarette","DEFAULT_MINIMAL_BAR_WIDTH","DEFAULT_GAP","CigaretteChartComponent","AbstractChart","constructor","props","_defineProperty2","default","React","createRef","trottle","event","plotRef","current","pX","pY","eventToPoint","setState","prevState","state","activeDataDefinitions","dataDefinitions","filter","checked","activePositiveDataDefinitions","data","asProps","id","itemValue","resolveColor","index","colorMap","getDefaultDataDefinitions","map","dataDef","columns","slice","defaultLegendProps","legendType","w","totalValue","reduce","acc","computeCigaretteItems","plotWidth","plotHeight","invertAxis","minimalBarWidth","reverse","count","length","totalGapWidth","Math","max","availableSpace","dataDefinitionsItemSize","result","dd","value","dataWidth","visualWidth","isMinVisible","smallItems","r","extraNeeded","smallItem","donors","donorCapacity","s","d","donor","available","share","taken","xScale","scaleLinear","yScale","renderChart","uid","duration","patterns","onClick","highlightedLine","offset","items","createElement","Fragment","item","interpolateValue","height","width","y","x","key","dataKey","hide","color","direction","hovered","undefined","renderTooltip","_ref","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","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","showTotalInTooltip","mt","Number","isNaN","renderHeader","header","render","_ref2","_ref6","SChart","a11yAltTextConfig","_ref5","Plot","dataHints","onPlotMouseMove","onPlotMouseLeave","renderLegend","getLegendAriaLabel","getI18nText","chartType","cigaretteItems","range","domain","push","lastAddedDomain","scaleThreshold","showXAxis","showYAxis","showLegend","marginX","marginY","resolveColorEnhance","uniqueIDEnhancement","i18nEnhance","localizedMessages","CigaretteChart","exports","createComponent"],"sources":["../../../../src/component/Chart/CigaretteChart.tsx"],"sourcesContent":["import { Box, Flex } from '@semcore/base-components';\nimport { 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 { 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 typeof CigaretteChartComponent.defaultProps,\n CigaretteChartState\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":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"CigaretteChart.type.js","names":[],"sources":["../../../../src/component/Chart/CigaretteChart.type.ts"],"sourcesContent":["import type { Intergalactic } from '@semcore/core';\nimport type React from 'react';\n\nimport type { BaseChartProps } from './AbstractChart.type';\nimport type { interpolateValue } from '../../utils';\n\ntype DataKey = string;\n\nexport type CigaretteChartData = Record<DataKey, number | typeof interpolateValue>;\n\nexport type CigaretteChartProps = Intergalactic.InternalTypings.EfficientOmit<\n BaseChartProps<CigaretteChartData>,\n 'xScale' | 'yScale'\n> & {\n /** Title text displayed in the tooltip */\n tooltipTitle?: string;\n /** Controls whether the tooltip shows all data or single item data */\n tooltipViewType?: 'all' | 'single';\n /** Show percent value in tooltip */\n showPercentValueInTooltip?: boolean;\n /** Header content for the chart */\n header?: React.ReactNode;\n /** Animation duration in milliseconds */\n duration?: number;\n /** Click handler that receives the data key and event */\n onClick?: (key: DataKey, event: React.SyntheticEvent) => void;\n};\n\nexport type CigaretteChartType = Intergalactic.Component<'div', CigaretteChartProps>;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"CigaretteChart.type.js","names":[],"sources":["../../../../src/component/Chart/CigaretteChart.type.ts"],"sourcesContent":["import type { Intergalactic } from '@semcore/core';\nimport type React from 'react';\n\nimport type { BaseChartProps } from './AbstractChart.type';\nimport type { interpolateValue } from '../../utils';\n\nexport type CigaretteChartDataKey = string;\n\nexport type CigaretteChartData = Record<CigaretteChartDataKey, number | typeof interpolateValue>;\n\nexport type CigaretteChartProps = Intergalactic.InternalTypings.EfficientOmit<\n BaseChartProps<CigaretteChartData>,\n 'xScale' | 'yScale'\n> & {\n /** Title text displayed in the tooltip */\n tooltipTitle?: string;\n /** Controls whether the tooltip shows all data or single item data */\n tooltipViewType?: 'all' | 'single';\n /** Show percent value in tooltip */\n showPercentValueInTooltip?: boolean;\n /** Custom percent formatter. */\n percentFormatter?: (value: number) => number;\n /** Header content for the chart */\n header?: React.ReactNode;\n /** Animation duration in milliseconds */\n duration?: number;\n /** Click handler that receives the data key and event */\n onClick?: (key: CigaretteChartDataKey, event: React.SyntheticEvent) => void;\n /** Minimal bar width in pixels. Default is `2`. */\n minimalBarWidth?: number;\n};\n\nexport type CigaretteChartType = Intergalactic.Component<'div', CigaretteChartProps>;\n"],"mappings":"","ignoreList":[]}
@@ -18,6 +18,10 @@ g[visible='false'] {
18
18
  display: none;
19
19
  }
20
20
 
21
+ SBubble[clickable] {
22
+ cursor: pointer;
23
+ }
24
+
21
25
  SBubble[color] {
22
26
  fill: var(--color);
23
27
  }
package/lib/cjs/utils.js CHANGED
@@ -199,7 +199,8 @@ const getChartDefaultColorName = index => {
199
199
  };
200
200
  exports.getChartDefaultColorName = getChartDefaultColorName;
201
201
  const getBubbleChartValueScale = (data, key) => {
202
- const z = (0, _d3Scale.scaleSqrt)().domain([0, Math.max(...data.map(el => el[key]))]).range([5.5, 50.5]);
202
+ const z = (0, _d3Scale.scaleSqrt)().domain([0, Math.max(...data.map(el => el[key]))]).range([5.5, 50.5]); // min/max radius
203
+
203
204
  return z;
204
205
  };
205
206
  exports.getBubbleChartValueScale = getBubbleChartValueScale;
@@ -235,7 +236,7 @@ const calculateBubbleDomain = (data, key, range) => {
235
236
  const maxValueShift = valueScale(maxestValue) * pixelRatio;
236
237
  min -= minValueShift * 2;
237
238
  max += maxValueShift * 2;
238
- return [min, max];
239
+ return [Math.floor(min), Math.floor(max)];
239
240
  };
240
241
  exports.calculateBubbleDomain = calculateBubbleDomain;
241
242
  const PlotEventEmitter = exports.PlotEventEmitter = _eventEmitter.default;