@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.
- package/CHANGELOG.md +13 -0
- package/lib/cjs/Area.js +11 -11
- package/lib/cjs/Axis.js +15 -15
- package/lib/cjs/Bar.js +16 -16
- package/lib/cjs/Bubble.js +20 -15
- package/lib/cjs/Bubble.js.map +1 -1
- package/lib/cjs/CompactHorizontalBar.js +16 -16
- package/lib/cjs/Donut.js +9 -9
- package/lib/cjs/Dots.js +8 -8
- package/lib/cjs/HorizontalBar.js +16 -16
- package/lib/cjs/Hover.js +3 -3
- package/lib/cjs/Line.js +9 -9
- package/lib/cjs/Plot.js +3 -3
- package/lib/cjs/Radar.js +19 -19
- package/lib/cjs/RadialTree.js +12 -12
- package/lib/cjs/Reference.js +12 -12
- package/lib/cjs/ScatterPlot.js +9 -9
- package/lib/cjs/Tooltip.js +9 -9
- package/lib/cjs/Venn.js +9 -9
- package/lib/cjs/a11y/PlotA11yModule.js +2 -2
- package/lib/cjs/a11y/PlotA11yView.js +2 -2
- package/lib/cjs/component/Chart/AbstractChart.js +9 -23
- package/lib/cjs/component/Chart/AbstractChart.js.map +1 -1
- package/lib/cjs/component/Chart/CigaretteChart.js +252 -90
- package/lib/cjs/component/Chart/CigaretteChart.js.map +1 -1
- package/lib/cjs/component/Chart/CigaretteChart.type.js.map +1 -1
- package/lib/cjs/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
- package/lib/cjs/component/ChartLegend/LegendItem/LegendItem.js +17 -17
- package/lib/cjs/component/ChartLegend/LegendTable/LegendTable.js +6 -6
- package/lib/cjs/style/bubble.shadow.css +4 -0
- package/lib/cjs/utils.js +3 -2
- package/lib/cjs/utils.js.map +1 -1
- package/lib/es6/Area.js +11 -11
- package/lib/es6/Axis.js +15 -15
- package/lib/es6/Bar.js +16 -16
- package/lib/es6/Bubble.js +20 -15
- package/lib/es6/Bubble.js.map +1 -1
- package/lib/es6/CompactHorizontalBar.js +16 -16
- package/lib/es6/Donut.js +9 -9
- package/lib/es6/Dots.js +8 -8
- package/lib/es6/HorizontalBar.js +16 -16
- package/lib/es6/Hover.js +3 -3
- package/lib/es6/Line.js +9 -9
- package/lib/es6/Plot.js +3 -3
- package/lib/es6/Radar.js +19 -19
- package/lib/es6/RadialTree.js +12 -12
- package/lib/es6/Reference.js +12 -12
- package/lib/es6/ScatterPlot.js +9 -9
- package/lib/es6/Tooltip.js +9 -9
- package/lib/es6/Venn.js +9 -9
- package/lib/es6/a11y/PlotA11yModule.js +2 -2
- package/lib/es6/a11y/PlotA11yView.js +2 -2
- package/lib/es6/component/Chart/AbstractChart.js +9 -23
- package/lib/es6/component/Chart/AbstractChart.js.map +1 -1
- package/lib/es6/component/Chart/CigaretteChart.js +254 -92
- package/lib/es6/component/Chart/CigaretteChart.js.map +1 -1
- package/lib/es6/component/Chart/CigaretteChart.type.js.map +1 -1
- package/lib/es6/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
- package/lib/es6/component/ChartLegend/LegendItem/LegendItem.js +17 -17
- package/lib/es6/component/ChartLegend/LegendTable/LegendTable.js +6 -6
- package/lib/es6/style/bubble.shadow.css +4 -0
- package/lib/es6/utils.js +3 -2
- package/lib/es6/utils.js.map +1 -1
- package/lib/esm/Area.mjs +12 -12
- package/lib/esm/Axis.mjs +16 -16
- package/lib/esm/Bar.mjs +17 -17
- package/lib/esm/Bubble.mjs +20 -17
- package/lib/esm/CompactHorizontalBar.mjs +17 -17
- package/lib/esm/Donut.mjs +10 -10
- package/lib/esm/Dots.mjs +9 -9
- package/lib/esm/HorizontalBar.mjs +17 -17
- package/lib/esm/Hover.mjs +4 -4
- package/lib/esm/Line.mjs +10 -10
- package/lib/esm/Plot.mjs +4 -4
- package/lib/esm/Radar.mjs +20 -20
- package/lib/esm/RadialTree.mjs +13 -13
- package/lib/esm/Reference.mjs +13 -13
- package/lib/esm/ScatterPlot.mjs +10 -10
- package/lib/esm/Tooltip.mjs +10 -10
- package/lib/esm/Venn.mjs +10 -10
- package/lib/esm/a11y/PlotA11yModule.mjs +3 -3
- package/lib/esm/a11y/PlotA11yView.mjs +3 -3
- package/lib/esm/component/Chart/AbstractChart.mjs +10 -24
- package/lib/esm/component/Chart/CigaretteChart.mjs +210 -61
- package/lib/esm/component/ChartLegend/LegendFlex/LegendFlex.mjs +5 -5
- package/lib/esm/component/ChartLegend/LegendItem/LegendItem.mjs +18 -18
- package/lib/esm/component/ChartLegend/LegendTable/LegendTable.mjs +7 -7
- package/lib/esm/style/bubble.shadow.css +4 -0
- package/lib/esm/utils.mjs +2 -2
- package/lib/types/component/Chart/AbstractChart.d.ts +4 -7
- package/lib/types/component/Chart/CigaretteChart.type.d.ts +7 -4
- 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
|
|
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
|
|
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
|
-
|
|
41
|
-
|
|
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
|
|
76
|
-
return
|
|
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
|
|
82
|
-
return
|
|
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$
|
|
89
|
-
invertAxis = _this$
|
|
90
|
-
data = _this$
|
|
91
|
-
uid = _this$
|
|
92
|
-
duration = _this$
|
|
93
|
-
patterns = _this$
|
|
94
|
-
plotHeight = _this$
|
|
95
|
-
plotWidth = _this$
|
|
96
|
-
onClick = _this$
|
|
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
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
|
107
|
-
var
|
|
108
|
-
var
|
|
109
|
-
var
|
|
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
|
|
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$
|
|
147
|
-
data = _this$
|
|
148
|
-
invertAxis = _this$
|
|
149
|
-
tooltipTitle = _this$
|
|
150
|
-
tooltipViewType = _this$
|
|
151
|
-
showPercentValueInTooltip = _this$
|
|
152
|
-
styles = _this$
|
|
153
|
-
showTooltip = _this$
|
|
154
|
-
var
|
|
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(
|
|
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
|
|
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$
|
|
225
|
-
showTotalInTooltip = _this$
|
|
226
|
-
showPercentValueInTooltip = _this$
|
|
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(
|
|
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$
|
|
257
|
-
styles = _this$
|
|
258
|
-
plotWidth = _this$
|
|
259
|
-
plotHeight = _this$
|
|
260
|
-
data = _this$
|
|
261
|
-
patterns = _this$
|
|
262
|
-
invertAxis = _this$
|
|
263
|
-
a11yAltTextConfig = _this$
|
|
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: "
|
|
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
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
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":[]}
|