@semcore/d3-chart 16.5.0 → 16.6.0-prerelease.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _createForOfIteratorHelper from "@babel/runtime/helpers/createForOfIteratorHelper";
|
|
2
2
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
3
|
+
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
4
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
5
|
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
4
6
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
5
7
|
import _callSuper from "@babel/runtime/helpers/callSuper";
|
|
@@ -13,11 +15,12 @@ import { assignProps as _assignProps } from "@semcore/core";
|
|
|
13
15
|
import { createComponent, Root, sstyled } from '@semcore/core';
|
|
14
16
|
import i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';
|
|
15
17
|
import resolveColorEnhance from '@semcore/core/lib/utils/enhances/resolveColorEnhance';
|
|
18
|
+
import trottle from '@semcore/core/lib/utils/rafTrottle';
|
|
16
19
|
import uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';
|
|
17
20
|
import Divider from '@semcore/divider';
|
|
18
21
|
import { Flex, Box } from '@semcore/flex-box';
|
|
19
22
|
import { Text } from '@semcore/typography';
|
|
20
|
-
import {
|
|
23
|
+
import { scaleThreshold, scaleLinear } from 'd3-scale';
|
|
21
24
|
import React from 'react';
|
|
22
25
|
// @ts-ignore
|
|
23
26
|
import { HoverRect, Plot } from '../..';
|
|
@@ -25,23 +28,66 @@ import { AbstractChart, NOT_A_VALUE } from './AbstractChart';
|
|
|
25
28
|
// @ts-ignore
|
|
26
29
|
import AnimatedClipPath from '../../AnimatedClipPath';
|
|
27
30
|
import { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';
|
|
28
|
-
import {
|
|
31
|
+
import { eventToPoint, interpolateValue } from '../../utils';
|
|
29
32
|
import Cigarette from '../Cigarette/Cigarette';
|
|
30
|
-
var
|
|
33
|
+
var DEFAULT_MINIMAL_BAR_WIDTH = 2;
|
|
34
|
+
var DEFAULT_GAP = 2;
|
|
31
35
|
var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
|
|
32
|
-
function CigaretteChartComponent() {
|
|
36
|
+
function CigaretteChartComponent(props) {
|
|
33
37
|
var _this;
|
|
34
38
|
_classCallCheck(this, CigaretteChartComponent);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
_this = _callSuper(this, CigaretteChartComponent, [].concat(args));
|
|
39
|
+
_this = _callSuper(this, CigaretteChartComponent, [props]);
|
|
40
|
+
_defineProperty(_this, "plotRef", /*#__PURE__*/React.createRef());
|
|
39
41
|
_defineProperty(_this, "plotPadding", 0);
|
|
40
42
|
_defineProperty(_this, "offset", 0);
|
|
43
|
+
_defineProperty(_this, "onPlotMouseMove", trottle(function (event) {
|
|
44
|
+
if (!_this.plotRef.current) return;
|
|
45
|
+
var _eventToPoint = eventToPoint(event, _this.plotRef.current),
|
|
46
|
+
_eventToPoint2 = _slicedToArray(_eventToPoint, 2),
|
|
47
|
+
pX = _eventToPoint2[0],
|
|
48
|
+
pY = _eventToPoint2[1];
|
|
49
|
+
_this.setState(function (prevState) {
|
|
50
|
+
return {
|
|
51
|
+
pX: pX,
|
|
52
|
+
pY: pY
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
}));
|
|
56
|
+
_defineProperty(_this, "onPlotMouseLeave", trottle(function () {
|
|
57
|
+
_this.setState(function (prevState) {
|
|
58
|
+
return {
|
|
59
|
+
pX: null,
|
|
60
|
+
pY: null
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
}));
|
|
64
|
+
_this.state = _objectSpread(_objectSpread({}, _this.state), {}, {
|
|
65
|
+
pX: null,
|
|
66
|
+
pY: null
|
|
67
|
+
});
|
|
41
68
|
return _this;
|
|
42
69
|
}
|
|
43
70
|
_inherits(CigaretteChartComponent, _AbstractChart);
|
|
44
71
|
return _createClass(CigaretteChartComponent, [{
|
|
72
|
+
key: "activeDataDefinitions",
|
|
73
|
+
get: function get() {
|
|
74
|
+
var dataDefinitions = this.state.dataDefinitions;
|
|
75
|
+
return dataDefinitions.filter(function (_ref7) {
|
|
76
|
+
var checked = _ref7.checked;
|
|
77
|
+
return checked;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}, {
|
|
81
|
+
key: "activePositiveDataDefinitions",
|
|
82
|
+
get: function get() {
|
|
83
|
+
var data = this.asProps.data;
|
|
84
|
+
return this.activeDataDefinitions.filter(function (_ref8) {
|
|
85
|
+
var id = _ref8.id;
|
|
86
|
+
var itemValue = data[id];
|
|
87
|
+
return typeof itemValue === 'number' && itemValue > 0;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}, {
|
|
45
91
|
key: "resolveColor",
|
|
46
92
|
value: function resolveColor(id, index) {
|
|
47
93
|
var _this$props$colorMap$, _this$props$colorMap;
|
|
@@ -64,47 +110,141 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
|
|
|
64
110
|
w: 'fit-content'
|
|
65
111
|
};
|
|
66
112
|
}
|
|
113
|
+
}, {
|
|
114
|
+
key: "totalValue",
|
|
115
|
+
value: function totalValue() {
|
|
116
|
+
var data = this.asProps.data;
|
|
117
|
+
return this.activeDataDefinitions.reduce(function (acc, _ref9) {
|
|
118
|
+
var id = _ref9.id;
|
|
119
|
+
var itemValue = data[id];
|
|
120
|
+
if (typeof itemValue === 'number') {
|
|
121
|
+
acc += itemValue;
|
|
122
|
+
}
|
|
123
|
+
return acc;
|
|
124
|
+
}, 0);
|
|
125
|
+
}
|
|
126
|
+
}, {
|
|
127
|
+
key: "computeCigaretteItems",
|
|
128
|
+
value: function computeCigaretteItems() {
|
|
129
|
+
var _this$asProps = this.asProps,
|
|
130
|
+
plotWidth = _this$asProps.plotWidth,
|
|
131
|
+
plotHeight = _this$asProps.plotHeight,
|
|
132
|
+
data = _this$asProps.data,
|
|
133
|
+
invertAxis = _this$asProps.invertAxis,
|
|
134
|
+
minimalBarWidth = _this$asProps.minimalBarWidth;
|
|
135
|
+
var dataDefinitions = invertAxis ? this.activeDataDefinitions : _toConsumableArray(this.activeDataDefinitions).reverse();
|
|
136
|
+
var count = this.activePositiveDataDefinitions.length;
|
|
137
|
+
var totalGapWidth = DEFAULT_GAP * Math.max(0, count - 1);
|
|
138
|
+
var availableSpace = Math.max(0, (invertAxis ? plotWidth : plotHeight) - totalGapWidth);
|
|
139
|
+
var totalValue = this.totalValue();
|
|
140
|
+
var dataDefinitionsItemSize = dataDefinitions.map(function (_ref0) {
|
|
141
|
+
var id = _ref0.id;
|
|
142
|
+
if (totalValue === 0) {
|
|
143
|
+
return 0;
|
|
144
|
+
}
|
|
145
|
+
var itemValue = data[id];
|
|
146
|
+
if (typeof itemValue !== 'number') return 0;
|
|
147
|
+
return itemValue / totalValue * availableSpace;
|
|
148
|
+
});
|
|
149
|
+
var result = dataDefinitions.map(function (dd, index) {
|
|
150
|
+
return _objectSpread(_objectSpread({}, dd), {}, {
|
|
151
|
+
value: data[dd.id],
|
|
152
|
+
dataWidth: dataDefinitionsItemSize[index],
|
|
153
|
+
visualWidth: dataDefinitionsItemSize[index],
|
|
154
|
+
isMinVisible: false
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
var smallItems = result.filter(function (r) {
|
|
158
|
+
var value = r.value,
|
|
159
|
+
dataWidth = r.dataWidth;
|
|
160
|
+
if (typeof value !== 'number') return false;
|
|
161
|
+
return value > 0 && dataWidth < minimalBarWidth;
|
|
162
|
+
});
|
|
163
|
+
if (smallItems.length === 0) return result;
|
|
164
|
+
var extraNeeded = 0;
|
|
165
|
+
var _iterator = _createForOfIteratorHelper(smallItems),
|
|
166
|
+
_step;
|
|
167
|
+
try {
|
|
168
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
169
|
+
var smallItem = _step.value;
|
|
170
|
+
extraNeeded += minimalBarWidth - smallItem.dataWidth;
|
|
171
|
+
smallItem.visualWidth = minimalBarWidth;
|
|
172
|
+
smallItem.isMinVisible = true;
|
|
173
|
+
}
|
|
174
|
+
} catch (err) {
|
|
175
|
+
_iterator.e(err);
|
|
176
|
+
} finally {
|
|
177
|
+
_iterator.f();
|
|
178
|
+
}
|
|
179
|
+
var donors = result.filter(function (r) {
|
|
180
|
+
return !r.isMinVisible && r.dataWidth > minimalBarWidth;
|
|
181
|
+
});
|
|
182
|
+
var donorCapacity = donors.reduce(function (s, d) {
|
|
183
|
+
return s + (d.dataWidth - minimalBarWidth);
|
|
184
|
+
}, 0);
|
|
185
|
+
var _iterator2 = _createForOfIteratorHelper(donors),
|
|
186
|
+
_step2;
|
|
187
|
+
try {
|
|
188
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
189
|
+
var donor = _step2.value;
|
|
190
|
+
var available = donor.dataWidth - minimalBarWidth;
|
|
191
|
+
var share = available / donorCapacity;
|
|
192
|
+
var taken = share * extraNeeded;
|
|
193
|
+
donor.visualWidth = donor.dataWidth - taken;
|
|
194
|
+
}
|
|
195
|
+
} catch (err) {
|
|
196
|
+
_iterator2.e(err);
|
|
197
|
+
} finally {
|
|
198
|
+
_iterator2.f();
|
|
199
|
+
}
|
|
200
|
+
return result;
|
|
201
|
+
}
|
|
67
202
|
}, {
|
|
68
203
|
key: "xScale",
|
|
69
204
|
get: function get() {
|
|
70
|
-
var
|
|
71
|
-
return
|
|
205
|
+
var plotWidth = this.asProps.plotWidth;
|
|
206
|
+
return scaleLinear([0, plotWidth]);
|
|
72
207
|
}
|
|
73
208
|
}, {
|
|
74
209
|
key: "yScale",
|
|
75
210
|
get: function get() {
|
|
76
|
-
var
|
|
77
|
-
return
|
|
211
|
+
var plotHeight = this.asProps.plotHeight;
|
|
212
|
+
return scaleLinear([plotHeight, 0]);
|
|
78
213
|
}
|
|
79
214
|
}, {
|
|
80
215
|
key: "renderChart",
|
|
81
216
|
value: function renderChart() {
|
|
82
217
|
var _this2 = this;
|
|
83
|
-
var _this$
|
|
84
|
-
invertAxis = _this$
|
|
85
|
-
data = _this$
|
|
86
|
-
uid = _this$
|
|
87
|
-
duration = _this$
|
|
88
|
-
patterns = _this$
|
|
89
|
-
plotHeight = _this$
|
|
90
|
-
plotWidth = _this$
|
|
91
|
-
onClick = _this$
|
|
218
|
+
var _this$asProps2 = this.asProps,
|
|
219
|
+
invertAxis = _this$asProps2.invertAxis,
|
|
220
|
+
data = _this$asProps2.data,
|
|
221
|
+
uid = _this$asProps2.uid,
|
|
222
|
+
duration = _this$asProps2.duration,
|
|
223
|
+
patterns = _this$asProps2.patterns,
|
|
224
|
+
plotHeight = _this$asProps2.plotHeight,
|
|
225
|
+
plotWidth = _this$asProps2.plotWidth,
|
|
226
|
+
onClick = _this$asProps2.onClick;
|
|
92
227
|
var _this$state = this.state,
|
|
93
228
|
dataDefinitions = _this$state.dataDefinitions,
|
|
94
229
|
highlightedLine = _this$state.highlightedLine;
|
|
95
230
|
this.offset = 0;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
231
|
+
var items = this.computeCigaretteItems();
|
|
232
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, items.map(function (item, index) {
|
|
233
|
+
var visualWidth = item.visualWidth,
|
|
234
|
+
id = item.id;
|
|
235
|
+
var value = data[id];
|
|
236
|
+
if (value === interpolateValue || value === null) {
|
|
99
237
|
return null;
|
|
100
238
|
}
|
|
101
|
-
var
|
|
102
|
-
var
|
|
103
|
-
var
|
|
104
|
-
var
|
|
105
|
-
var x = index === 0 ? 0 : _this2.offset;
|
|
239
|
+
var height = invertAxis ? plotHeight - DEFAULT_GAP * 2 : plotWidth - DEFAULT_GAP * 2;
|
|
240
|
+
var width = visualWidth;
|
|
241
|
+
var y = DEFAULT_GAP;
|
|
242
|
+
var x = _this2.offset;
|
|
106
243
|
var r = height < 28 ? 2 : 4;
|
|
107
|
-
_this2.offset
|
|
244
|
+
_this2.offset += visualWidth;
|
|
245
|
+
if (index < items.length - 1) {
|
|
246
|
+
_this2.offset += DEFAULT_GAP;
|
|
247
|
+
}
|
|
108
248
|
return /*#__PURE__*/React.createElement(Cigarette, {
|
|
109
249
|
key: item.id,
|
|
110
250
|
dataKey: item.id,
|
|
@@ -138,15 +278,18 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
|
|
|
138
278
|
value: function renderTooltip() {
|
|
139
279
|
var _ref = this.asProps,
|
|
140
280
|
_this3 = this;
|
|
141
|
-
var _this$
|
|
142
|
-
data = _this$
|
|
143
|
-
invertAxis = _this$
|
|
144
|
-
tooltipTitle = _this$
|
|
145
|
-
tooltipViewType = _this$
|
|
146
|
-
showPercentValueInTooltip = _this$
|
|
147
|
-
styles = _this$
|
|
148
|
-
showTooltip = _this$
|
|
149
|
-
var
|
|
281
|
+
var _this$asProps3 = this.asProps,
|
|
282
|
+
data = _this$asProps3.data,
|
|
283
|
+
invertAxis = _this$asProps3.invertAxis,
|
|
284
|
+
tooltipTitle = _this$asProps3.tooltipTitle,
|
|
285
|
+
tooltipViewType = _this$asProps3.tooltipViewType,
|
|
286
|
+
showPercentValueInTooltip = _this$asProps3.showPercentValueInTooltip,
|
|
287
|
+
styles = _this$asProps3.styles,
|
|
288
|
+
showTooltip = _this$asProps3.showTooltip;
|
|
289
|
+
var _this$state2 = this.state,
|
|
290
|
+
dataDefinitions = _this$state2.dataDefinitions,
|
|
291
|
+
pX = _this$state2.pX,
|
|
292
|
+
pY = _this$state2.pY;
|
|
150
293
|
var STooltipChildrenWrapper = Box;
|
|
151
294
|
if (!showTooltip) {
|
|
152
295
|
return null;
|
|
@@ -155,18 +298,22 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
|
|
|
155
298
|
x: invertAxis ? '' : undefined,
|
|
156
299
|
y: invertAxis ? undefined : '',
|
|
157
300
|
wMin: 100,
|
|
158
|
-
hideHoverLine: true
|
|
301
|
+
hideHoverLine: true,
|
|
302
|
+
xIndex: pX !== null ? this.visualScale(pX) : undefined,
|
|
303
|
+
yIndex: pY !== null ? this.visualScale(pY) : undefined
|
|
159
304
|
}, function (tooltipProps) {
|
|
160
305
|
var _ref4;
|
|
161
306
|
var dataKey = invertAxis ? tooltipProps.xIndex : tooltipProps.yIndex;
|
|
162
|
-
var showPercentColumn = showPercentValueInTooltip && _this3.totalValue(
|
|
307
|
+
var showPercentColumn = showPercentValueInTooltip && _this3.totalValue() !== 0;
|
|
163
308
|
if (tooltipViewType === 'single') {
|
|
164
309
|
var _ref3;
|
|
165
310
|
var item = dataDefinitions.find(function (dataDefItem) {
|
|
166
311
|
return dataDefItem.id === dataKey;
|
|
167
312
|
});
|
|
168
313
|
if (!item) {
|
|
169
|
-
return
|
|
314
|
+
return {
|
|
315
|
+
children: null
|
|
316
|
+
};
|
|
170
317
|
}
|
|
171
318
|
return {
|
|
172
319
|
children: (_ref3 = sstyled(styles), /*#__PURE__*/React.createElement(STooltipChildrenWrapper, _ref3.cn("STooltipChildrenWrapper", _objectSpread({}, _assignProps({
|
|
@@ -213,16 +360,32 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
|
|
|
213
360
|
};
|
|
214
361
|
});
|
|
215
362
|
}
|
|
363
|
+
}, {
|
|
364
|
+
key: "percentValue",
|
|
365
|
+
value: function percentValue(data, key) {
|
|
366
|
+
var percentFormatter = this.asProps.percentFormatter;
|
|
367
|
+
var total = this.totalValue();
|
|
368
|
+
var value = data[key];
|
|
369
|
+
if (typeof value === 'number' && total !== 0) {
|
|
370
|
+
var rawPercent = 100 * value / total;
|
|
371
|
+
var formattedPercent = percentFormatter ? percentFormatter(rawPercent) : Math.round(rawPercent);
|
|
372
|
+
return "".concat(formattedPercent, "%");
|
|
373
|
+
}
|
|
374
|
+
if (value === null) {
|
|
375
|
+
return "0%";
|
|
376
|
+
}
|
|
377
|
+
return NOT_A_VALUE;
|
|
378
|
+
}
|
|
216
379
|
}, {
|
|
217
380
|
key: "renderTooltipTotalLine",
|
|
218
381
|
value: function renderTooltipTotalLine(dataItem) {
|
|
219
|
-
var _this$
|
|
220
|
-
showTotalInTooltip = _this$
|
|
221
|
-
showPercentValueInTooltip = _this$
|
|
382
|
+
var _this$asProps4 = this.asProps,
|
|
383
|
+
showTotalInTooltip = _this$asProps4.showTotalInTooltip,
|
|
384
|
+
showPercentValueInTooltip = _this$asProps4.showPercentValueInTooltip;
|
|
222
385
|
if (!showTotalInTooltip) {
|
|
223
386
|
return null;
|
|
224
387
|
}
|
|
225
|
-
var total = this.totalValue(
|
|
388
|
+
var total = this.totalValue();
|
|
226
389
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Box, {
|
|
227
390
|
mt: 2,
|
|
228
391
|
mr: 2
|
|
@@ -248,14 +411,14 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
|
|
|
248
411
|
var _ref2 = this.asProps,
|
|
249
412
|
_ref6;
|
|
250
413
|
var SChart = Flex;
|
|
251
|
-
var _this$
|
|
252
|
-
styles = _this$
|
|
253
|
-
plotWidth = _this$
|
|
254
|
-
plotHeight = _this$
|
|
255
|
-
data = _this$
|
|
256
|
-
patterns = _this$
|
|
257
|
-
invertAxis = _this$
|
|
258
|
-
a11yAltTextConfig = _this$
|
|
414
|
+
var _this$asProps5 = this.asProps,
|
|
415
|
+
styles = _this$asProps5.styles,
|
|
416
|
+
plotWidth = _this$asProps5.plotWidth,
|
|
417
|
+
plotHeight = _this$asProps5.plotHeight,
|
|
418
|
+
data = _this$asProps5.data,
|
|
419
|
+
patterns = _this$asProps5.patterns,
|
|
420
|
+
invertAxis = _this$asProps5.invertAxis,
|
|
421
|
+
a11yAltTextConfig = _this$asProps5.a11yAltTextConfig;
|
|
259
422
|
var header = this.renderHeader();
|
|
260
423
|
if (invertAxis) {
|
|
261
424
|
var _ref5;
|
|
@@ -266,26 +429,32 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
|
|
|
266
429
|
}, _ref2))), /*#__PURE__*/React.createElement(Flex, _ref5.cn("Flex", {
|
|
267
430
|
"direction": 'column'
|
|
268
431
|
}), header, /*#__PURE__*/React.createElement(Plot, _ref5.cn("Plot", {
|
|
432
|
+
"ref": this.plotRef,
|
|
269
433
|
"data": data,
|
|
270
434
|
"scale": [this.xScale, this.yScale],
|
|
271
435
|
"width": plotWidth,
|
|
272
436
|
"height": plotHeight,
|
|
273
437
|
"dataHints": this.dataHints,
|
|
274
438
|
"patterns": patterns,
|
|
275
|
-
"a11yAltTextConfig": a11yAltTextConfig
|
|
439
|
+
"a11yAltTextConfig": a11yAltTextConfig,
|
|
440
|
+
"onMouseMove": this.onPlotMouseMove,
|
|
441
|
+
"onMouseLeave": this.onPlotMouseLeave
|
|
276
442
|
}), this.renderTooltip(), this.renderChart())), this.renderLegend());
|
|
277
443
|
}
|
|
278
444
|
return _ref6 = sstyled(styles), /*#__PURE__*/React.createElement(SChart, _ref6.cn("SChart", _objectSpread({}, _assignProps4({
|
|
279
445
|
"gap": 6,
|
|
280
446
|
"__excludeProps": ['onClick', 'data']
|
|
281
447
|
}, _ref2))), /*#__PURE__*/React.createElement(Plot, _ref6.cn("Plot", {
|
|
448
|
+
"ref": this.plotRef,
|
|
282
449
|
"data": data,
|
|
283
450
|
"scale": [this.xScale, this.yScale],
|
|
284
451
|
"width": plotWidth,
|
|
285
452
|
"height": plotHeight,
|
|
286
453
|
"dataHints": this.dataHints,
|
|
287
454
|
"patterns": patterns,
|
|
288
|
-
"a11yAltTextConfig": a11yAltTextConfig
|
|
455
|
+
"a11yAltTextConfig": a11yAltTextConfig,
|
|
456
|
+
"onMouseMove": this.onPlotMouseMove,
|
|
457
|
+
"onMouseLeave": this.onPlotMouseLeave
|
|
289
458
|
}), this.renderTooltip(), this.renderChart()), /*#__PURE__*/React.createElement(Flex, _ref6.cn("Flex", {
|
|
290
459
|
"direction": 'column',
|
|
291
460
|
"gap": 2
|
|
@@ -299,41 +468,33 @@ var CigaretteChartComponent = /*#__PURE__*/function (_AbstractChart) {
|
|
|
299
468
|
});
|
|
300
469
|
}
|
|
301
470
|
}, {
|
|
302
|
-
key: "
|
|
303
|
-
get: function get() {
|
|
304
|
-
var data = this.asProps.data;
|
|
305
|
-
var dataDefinitions = this.state.dataDefinitions;
|
|
306
|
-
var result = new Map();
|
|
307
|
-
dataDefinitions.forEach(function (dataDefItem) {
|
|
308
|
-
var value = data[dataDefItem.id];
|
|
309
|
-
if (dataDefItem.checked && value !== interpolateValue) {
|
|
310
|
-
result.set(dataDefItem.id, value);
|
|
311
|
-
}
|
|
312
|
-
});
|
|
313
|
-
return result;
|
|
314
|
-
}
|
|
315
|
-
}, {
|
|
316
|
-
key: "categoryScale",
|
|
317
|
-
get: function get() {
|
|
318
|
-
var _this$asProps5 = this.asProps,
|
|
319
|
-
plotWidth = _this$asProps5.plotWidth,
|
|
320
|
-
plotHeight = _this$asProps5.plotHeight,
|
|
321
|
-
invertAxis = _this$asProps5.invertAxis;
|
|
322
|
-
var range = invertAxis ? [plotHeight, 0] : [0, plotWidth];
|
|
323
|
-
return scaleBand([0], range);
|
|
324
|
-
}
|
|
325
|
-
}, {
|
|
326
|
-
key: "valueScale",
|
|
471
|
+
key: "visualScale",
|
|
327
472
|
get: function get() {
|
|
328
|
-
var
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
473
|
+
var cigaretteItems = this.computeCigaretteItems();
|
|
474
|
+
var _cigaretteItems$reduc = cigaretteItems.reduce(function (acc, _ref1, index) {
|
|
475
|
+
var id = _ref1.id,
|
|
476
|
+
visualWidth = _ref1.visualWidth;
|
|
477
|
+
var range = acc.range,
|
|
478
|
+
domain = acc.domain;
|
|
479
|
+
if (visualWidth) {
|
|
480
|
+
range.push(id);
|
|
481
|
+
if (domain.length === 0) {
|
|
482
|
+
domain.push(visualWidth + DEFAULT_GAP);
|
|
483
|
+
return acc;
|
|
484
|
+
}
|
|
485
|
+
if (index !== cigaretteItems.length - 1) {
|
|
486
|
+
var lastAddedDomain = domain[domain.length - 1];
|
|
487
|
+
domain.push(lastAddedDomain + visualWidth + DEFAULT_GAP);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
return acc;
|
|
491
|
+
}, {
|
|
492
|
+
range: [],
|
|
493
|
+
domain: []
|
|
494
|
+
}),
|
|
495
|
+
range = _cigaretteItems$reduc.range,
|
|
496
|
+
domain = _cigaretteItems$reduc.domain;
|
|
497
|
+
return scaleThreshold(domain, range);
|
|
337
498
|
}
|
|
338
499
|
}]);
|
|
339
500
|
}(AbstractChart);
|
|
@@ -352,7 +513,8 @@ _defineProperty(CigaretteChartComponent, "defaultProps", function (props) {
|
|
|
352
513
|
duration: 500,
|
|
353
514
|
plotWidth: !invertAxis && !props.plotWidth ? 44 : props.plotWidth,
|
|
354
515
|
plotHeight: invertAxis && !props.plotHeight ? 28 : props.plotHeight,
|
|
355
|
-
showPercentValueInTooltip: false
|
|
516
|
+
showPercentValueInTooltip: false,
|
|
517
|
+
minimalBarWidth: DEFAULT_MINIMAL_BAR_WIDTH
|
|
356
518
|
};
|
|
357
519
|
});
|
|
358
520
|
_defineProperty(CigaretteChartComponent, "enhance", [resolveColorEnhance(), uniqueIDEnhancement(), i18nEnhance(localizedMessages)]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CigaretteChart.js","names":["createComponent","Root","sstyled","i18nEnhance","resolveColorEnhance","uniqueIDEnhancement","Divider","Flex","Box","Text","scaleBand","scaleLinear","React","HoverRect","Plot","AbstractChart","NOT_A_VALUE","AnimatedClipPath","localizedMessages","interpolateValue","scaleToBand","Cigarette","wMin","CigaretteChartComponent","_AbstractChart","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","concat","_defineProperty","_inherits","_createClass","key","value","resolveColor","id","index","_this$props$colorMap$","_this$props$colorMap","props","colorMap","getDefaultDataDefinitions","dataDefinitions","_superPropGet","map","dataDef","columns","slice","defaultLegendProps","legendType","w","get","invertAxis","asProps","valueScale","categoryScale","renderChart","_this2","_this$asProps","data","uid","duration","patterns","plotHeight","plotWidth","onClick","_this$state","state","highlightedLine","offset","createElement","Fragment","_toConsumableArray","reverse","item","checked","absWidth","Math","abs","max","domain","height","bandwidth","width","y","x","r","dataKey","hide","color","direction","hovered","undefined","renderTooltip","_ref","_this3","_this$asProps2","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","STooltipChildrenWrapper","Tooltip","hideHoverLine","tooltipProps","_ref4","xIndex","yIndex","showPercentColumn","totalValue","_ref3","find","dataDefItem","children","cn","_objectSpread","_assignProps","Dot","mr","label","percentValue","tooltipValueFormatter","Title","_assignProps2","style","opacity","textAlign","bold","renderTooltipTotalLine","dataItem","_this$asProps3","showTotalInTooltip","total","mt","Number","isNaN","renderHeader","_this$asProps$header","header","render","_ref2","_ref6","SChart","_this$asProps4","a11yAltTextConfig","_ref5","_assignProps3","xScale","yScale","dataHints","renderLegend","_assignProps4","getLegendAriaLabel","getI18nText","chartType","result","Map","forEach","set","_this$asProps5","range","_this$asProps6","selectedData","_props$invertAxis","showXAxis","showYAxis","showLegend","marginX","marginY","CigaretteChart"],"sources":["../../../../src/component/Chart/CigaretteChart.tsx"],"sourcesContent":["import { createComponent, Root, sstyled } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport resolveColorEnhance from '@semcore/core/lib/utils/enhances/resolveColorEnhance';\nimport uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';\nimport Divider from '@semcore/divider';\nimport { Flex, Box } from '@semcore/flex-box';\nimport { Text } from '@semcore/typography';\nimport { scaleBand, scaleLinear } from 'd3-scale';\nimport React from 'react';\n\nimport type { CigaretteChartData, CigaretteChartProps, CigaretteChartType } from './CigaretteChart.type';\n// @ts-ignore\nimport { HoverRect, Plot } from '../..';\nimport { AbstractChart, NOT_A_VALUE } from './AbstractChart';\nimport type { ObjectData } from './AbstractChart.type';\n// @ts-ignore\nimport AnimatedClipPath from '../../AnimatedClipPath';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\nimport { interpolateValue, scaleToBand } from '../../utils';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\nimport Cigarette from '../Cigarette/Cigarette';\n\nconst wMin = 2;\n\nclass CigaretteChartComponent extends AbstractChart<\n CigaretteChartData,\n CigaretteChartProps,\n typeof CigaretteChartComponent.enhance\n> {\n static displayName = 'Cigarette.Bar';\n\n static defaultProps: any = (props: CigaretteChartProps) => {\n const invertAxis = props.invertAxis ?? true;\n return {\n invertAxis: invertAxis,\n showXAxis: false,\n showYAxis: false,\n showTooltip: true,\n showLegend: false,\n marginX: 0,\n marginY: 0,\n duration: 500,\n plotWidth: !invertAxis && !props.plotWidth ? 44 : props.plotWidth,\n plotHeight: invertAxis && !props.plotHeight ? 28 : props.plotHeight,\n showPercentValueInTooltip: false,\n };\n };\n\n static enhance = [\n resolveColorEnhance(),\n uniqueIDEnhancement(),\n i18nEnhance(localizedMessages),\n ] as const;\n\n protected override plotPadding = 0;\n\n private offset = 0;\n\n protected override resolveColor(id: string, index: number) {\n return this.props.colorMap?.[id] ?? `blue-${5 - index}00`;\n }\n\n protected override getDefaultDataDefinitions(): Array<\n LegendItem & { columns: React.ReactNode[] }\n > {\n const dataDefinitions = super.getDefaultDataDefinitions();\n\n return dataDefinitions.map((dataDef) => {\n dataDef.columns = dataDef.columns.slice(1);\n return dataDef;\n });\n }\n\n protected override defaultLegendProps() {\n return {\n legendType: 'Table' as const,\n w: 'fit-content',\n };\n }\n\n get xScale() {\n const { invertAxis } = this.asProps;\n\n return invertAxis ? this.valueScale : this.categoryScale;\n }\n\n get yScale() {\n const { invertAxis } = this.asProps;\n\n return invertAxis ? this.categoryScale : this.valueScale;\n }\n\n renderChart() {\n const { invertAxis, data, uid, duration, patterns, plotHeight, plotWidth, onClick } =\n this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n this.offset = 0;\n\n return (\n <>\n {(invertAxis ? dataDefinitions : [...dataDefinitions].reverse()).map((item, index) => {\n const value = data[item.id];\n\n if (!item.checked || value === interpolateValue || value === null) {\n return null;\n }\n\n const absWidth = Math.abs(\n this.valueScale(value) -\n Math.max(this.valueScale(this.valueScale.domain()[0]), this.valueScale(0)),\n );\n const height = scaleToBand(this.categoryScale).bandwidth() - 4;\n const width = value === 0 ? 0 : Math.max(absWidth, wMin * 2) - wMin;\n const y = 2;\n const x = index === 0 ? 0 : this.offset;\n const r = height < 28 ? 2 : 4;\n\n this.offset = this.offset + width + wMin;\n\n return (\n <Cigarette\n key={item.id}\n dataKey={item.id}\n index={index}\n y={invertAxis ? y : x}\n x={invertAxis ? x : y}\n width={invertAxis ? width : height}\n height={invertAxis ? height : width}\n uid={uid}\n hide={!item.checked}\n duration={duration}\n r={index === 0 || index === dataDefinitions.length - 1 ? r : 0}\n color={item.color}\n patterns={patterns}\n direction={invertAxis ? 'horizontal' : 'vertical'}\n onClick={onClick}\n hovered={\n highlightedLine === index ? true : highlightedLine === -1 ? undefined : false\n }\n />\n );\n })}\n\n <AnimatedClipPath\n aria-hidden\n duration={duration}\n id={uid}\n x='0'\n y='0'\n width={invertAxis ? 0 : plotWidth}\n height={invertAxis ? plotHeight : 0}\n />\n </>\n );\n }\n\n renderTooltip(): React.ReactNode {\n const { data, invertAxis, tooltipTitle, tooltipViewType, showPercentValueInTooltip, styles, showTooltip } =\n this.asProps;\n const { dataDefinitions } = this.state;\n const STooltipChildrenWrapper = Root;\n\n if (!showTooltip) {\n return null;\n }\n\n return (\n <HoverRect.Tooltip\n x={invertAxis ? '' : undefined}\n y={invertAxis ? undefined : ''}\n wMin={100}\n hideHoverLine={true}\n >\n {(tooltipProps: any) => {\n const dataKey = invertAxis ? tooltipProps.xIndex : tooltipProps.yIndex;\n const showPercentColumn = showPercentValueInTooltip && this.totalValue(data) !== 0;\n\n if (tooltipViewType === 'single') {\n const item = dataDefinitions.find((dataDefItem) => dataDefItem.id === dataKey);\n if (!item) {\n return null;\n }\n\n return {\n children: sstyled(styles)(\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary'>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold>{this.tooltipValueFormatter(data[item.id])}</Text>\n </STooltipChildrenWrapper>,\n ),\n };\n }\n\n return {\n children: sstyled(styles)(\n <Flex direction='column'>\n {tooltipTitle && (\n <HoverRect.Tooltip.Title>Some tooltip title</HoverRect.Tooltip.Title>\n )}\n\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n {dataDefinitions.map((item) => {\n const style = { opacity: item.id === dataKey ? 1 : 0.3 };\n return (\n item.checked && (\n <React.Fragment key={item.id}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color} style={style}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary' style={style}>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold style={style}>{this.tooltipValueFormatter(data[item.id])}</Text>\n </React.Fragment>\n )\n );\n })}\n\n {this.renderTooltipTotalLine(data)}\n </STooltipChildrenWrapper>\n </Flex>,\n ),\n };\n }}\n </HoverRect.Tooltip>\n );\n }\n\n protected override renderTooltipTotalLine<D extends ObjectData>(dataItem: D) {\n const { showTotalInTooltip, showPercentValueInTooltip } = this.asProps;\n\n if (!showTotalInTooltip) {\n return null;\n }\n\n const total = this.totalValue(dataItem);\n\n return (\n <>\n <Box mt={2} mr={2}>Total</Box>\n { showPercentValueInTooltip && total !== 0 && <Text mt={2} textAlign='end' color='text-secondary'>{Number.isNaN(total) ? NOT_A_VALUE : '100%'}</Text> }\n <Text mt={2} textAlign='end' bold>{Number.isNaN(total) ? NOT_A_VALUE : total}</Text>\n </>\n );\n }\n\n renderHeader() {\n return this.asProps.header ?? null;\n }\n\n override render() {\n const SChart = Root;\n const { styles, plotWidth, plotHeight, data, patterns, invertAxis, a11yAltTextConfig } =\n this.asProps;\n\n const header = this.renderHeader();\n\n if (invertAxis) {\n return sstyled(styles)(\n <SChart render={Flex} gap={6} direction='column' __excludeProps={['onClick', 'data']}>\n <Flex direction='column'>\n {header}\n <Plot\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n </Flex>\n {this.renderLegend()}\n </SChart>,\n );\n }\n\n return sstyled(styles)(\n <SChart render={Flex} gap={6} __excludeProps={['onClick', 'data']}>\n <Plot\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n <Flex direction='column' gap={2}>\n {header && (\n <>\n <Box>{header}</Box>\n <Divider />\n </>\n )}\n {this.renderLegend()}\n </Flex>\n </SChart>,\n );\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Cigarette' });\n }\n\n private get selectedData() {\n const { data } = this.asProps;\n const { dataDefinitions } = this.state;\n\n const result = new Map<string, number>();\n\n dataDefinitions.forEach((dataDefItem) => {\n const value = data[dataDefItem.id];\n if (dataDefItem.checked && value !== interpolateValue) {\n result.set(dataDefItem.id, value);\n }\n });\n\n return result;\n }\n\n private get categoryScale() {\n const { plotWidth, plotHeight, invertAxis } = this.asProps;\n\n const range = invertAxis ? [plotHeight, 0] : [0, plotWidth];\n\n return scaleBand<{}>([0], range);\n }\n\n private get valueScale() {\n const { plotWidth, plotHeight, invertAxis } = this.asProps;\n\n let max = 0;\n\n this.selectedData.forEach((value) => {\n max = max + value;\n });\n\n return scaleLinear()\n .range(invertAxis ? [0, plotWidth] : [plotHeight, 0])\n .domain([0, max]);\n }\n}\n\nexport const CigaretteChart: CigaretteChartType = createComponent(CigaretteChartComponent);\n"],"mappings":";;;;;;;;;;;;AAAA,SAASA,eAAe,EAAEC,IAAI,EAAEC,OAAO,QAAQ,eAAe;AAC9D,OAAOC,WAAW,MAAM,8CAA8C;AACtE,OAAOC,mBAAmB,MAAM,sDAAsD;AACtF,OAAOC,mBAAmB,MAAM,kCAAkC;AAClE,OAAOC,OAAO,MAAM,kBAAkB;AACtC,SAASC,IAAI,EAAEC,GAAG,QAAQ,mBAAmB;AAC7C,SAASC,IAAI,QAAQ,qBAAqB;AAC1C,SAASC,SAAS,EAAEC,WAAW,QAAQ,UAAU;AACjD,OAAOC,KAAK,MAAM,OAAO;AAGzB;AACA,SAASC,SAAS,EAAEC,IAAI,QAAQ,OAAO;AACvC,SAASC,aAAa,EAAEC,WAAW,QAAQ,iBAAiB;AAE5D;AACA,OAAOC,gBAAgB,MAAM,wBAAwB;AACrD,SAASC,iBAAiB,QAAQ,oDAAoD;AACtF,SAASC,gBAAgB,EAAEC,WAAW,QAAQ,aAAa;AAE3D,OAAOC,SAAS,MAAM,wBAAwB;AAE9C,IAAMC,IAAI,GAAG,CAAC;AAAC,IAETC,uBAAuB,0BAAAC,cAAA;EAAA,SAAAD,wBAAA;IAAA,IAAAE,KAAA;IAAAC,eAAA,OAAAH,uBAAA;IAAA,SAAAI,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IAAAP,KAAA,GAAAQ,UAAA,OAAAV,uBAAA,KAAAW,MAAA,CAAAJ,IAAA;IAAAK,eAAA,CAAAV,KAAA,iBA8BM,CAAC;IAAAU,eAAA,CAAAV,KAAA,YAEjB,CAAC;IAAA,OAAAA,KAAA;EAAA;EAAAW,SAAA,CAAAb,uBAAA,EAAAC,cAAA;EAAA,OAAAa,YAAA,CAAAd,uBAAA;IAAAe,GAAA;IAAAC,KAAA,EAElB,SAAmBC,YAAYA,CAACC,EAAU,EAAEC,KAAa,EAAE;MAAA,IAAAC,qBAAA,EAAAC,oBAAA;MACzD,QAAAD,qBAAA,IAAAC,oBAAA,GAAO,IAAI,CAACC,KAAK,CAACC,QAAQ,cAAAF,oBAAA,uBAAnBA,oBAAA,CAAsBH,EAAE,CAAC,cAAAE,qBAAA,cAAAA,qBAAA,WAAAT,MAAA,CAAY,CAAC,GAAGQ,KAAK;IACvD;EAAC;IAAAJ,GAAA;IAAAC,KAAA,EAED,SAAmBQ,yBAAyBA,CAAA,EAE1C;MACA,IAAMC,eAAe,GAAAC,aAAA,CAAA1B,uBAAA,2CAAoC;MAEzD,OAAOyB,eAAe,CAACE,GAAG,CAAC,UAACC,OAAO,EAAK;QACtCA,OAAO,CAACC,OAAO,GAAGD,OAAO,CAACC,OAAO,CAACC,KAAK,CAAC,CAAC,CAAC;QAC1C,OAAOF,OAAO;MAChB,CAAC,CAAC;IACJ;EAAC;IAAAb,GAAA;IAAAC,KAAA,EAED,SAAmBe,kBAAkBA,CAAA,EAAG;MACtC,OAAO;QACLC,UAAU,EAAE,OAAgB;QAC5BC,CAAC,EAAE;MACL,CAAC;IACH;EAAC;IAAAlB,GAAA;IAAAmB,GAAA,EAED,SAAAA,IAAA,EAAa;MACX,IAAQC,UAAU,GAAK,IAAI,CAACC,OAAO,CAA3BD,UAAU;MAElB,OAAOA,UAAU,GAAG,IAAI,CAACE,UAAU,GAAG,IAAI,CAACC,aAAa;IAC1D;EAAC;IAAAvB,GAAA;IAAAmB,GAAA,EAED,SAAAA,IAAA,EAAa;MACX,IAAQC,UAAU,GAAK,IAAI,CAACC,OAAO,CAA3BD,UAAU;MAElB,OAAOA,UAAU,GAAG,IAAI,CAACG,aAAa,GAAG,IAAI,CAACD,UAAU;IAC1D;EAAC;IAAAtB,GAAA;IAAAC,KAAA,EAED,SAAAuB,WAAWA,CAAA,EAAG;MAAA,IAAAC,MAAA;MACZ,IAAAC,aAAA,GACE,IAAI,CAACL,OAAO;QADND,UAAU,GAAAM,aAAA,CAAVN,UAAU;QAAEO,IAAI,GAAAD,aAAA,CAAJC,IAAI;QAAEC,GAAG,GAAAF,aAAA,CAAHE,GAAG;QAAEC,QAAQ,GAAAH,aAAA,CAARG,QAAQ;QAAEC,QAAQ,GAAAJ,aAAA,CAARI,QAAQ;QAAEC,UAAU,GAAAL,aAAA,CAAVK,UAAU;QAAEC,SAAS,GAAAN,aAAA,CAATM,SAAS;QAAEC,OAAO,GAAAP,aAAA,CAAPO,OAAO;MAEjF,IAAAC,WAAA,GAA6C,IAAI,CAACC,KAAK;QAA/CzB,eAAe,GAAAwB,WAAA,CAAfxB,eAAe;QAAE0B,eAAe,GAAAF,WAAA,CAAfE,eAAe;MAExC,IAAI,CAACC,MAAM,GAAG,CAAC;MAEf,oBACE/D,KAAA,CAAAgE,aAAA,CAAAhE,KAAA,CAAAiE,QAAA,QACG,CAACnB,UAAU,GAAGV,eAAe,GAAG8B,kBAAA,CAAI9B,eAAe,EAAE+B,OAAO,CAAC,CAAC,EAAE7B,GAAG,CAAC,UAAC8B,IAAI,EAAEtC,KAAK,EAAK;QACpF,IAAMH,KAAK,GAAG0B,IAAI,CAACe,IAAI,CAACvC,EAAE,CAAC;QAE3B,IAAI,CAACuC,IAAI,CAACC,OAAO,IAAI1C,KAAK,KAAKpB,gBAAgB,IAAIoB,KAAK,KAAK,IAAI,EAAE;UACjE,OAAO,IAAI;QACb;QAEA,IAAM2C,QAAQ,GAAGC,IAAI,CAACC,GAAG,CACvBrB,MAAI,CAACH,UAAU,CAACrB,KAAK,CAAC,GACtB4C,IAAI,CAACE,GAAG,CAACtB,MAAI,CAACH,UAAU,CAACG,MAAI,CAACH,UAAU,CAAC0B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEvB,MAAI,CAACH,UAAU,CAAC,CAAC,CAAC,CAC3E,CAAC;QACD,IAAM2B,MAAM,GAAGnE,WAAW,CAAC2C,MAAI,CAACF,aAAa,CAAC,CAAC2B,SAAS,CAAC,CAAC,GAAG,CAAC;QAC9D,IAAMC,KAAK,GAAGlD,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG4C,IAAI,CAACE,GAAG,CAACH,QAAQ,EAAE5D,IAAI,GAAG,CAAC,CAAC,GAAGA,IAAI;QACnE,IAAMoE,CAAC,GAAG,CAAC;QACX,IAAMC,CAAC,GAAGjD,KAAK,KAAK,CAAC,GAAG,CAAC,GAAGqB,MAAI,CAACY,MAAM;QACvC,IAAMiB,CAAC,GAAGL,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;QAE7BxB,MAAI,CAACY,MAAM,GAAGZ,MAAI,CAACY,MAAM,GAAGc,KAAK,GAAGnE,IAAI;QAExC,oBACEV,KAAA,CAAAgE,aAAA,CAACvD,SAAS;UACRiB,GAAG,EAAE0C,IAAI,CAACvC,EAAG;UACboD,OAAO,EAAEb,IAAI,CAACvC,EAAG;UACjBC,KAAK,EAAEA,KAAM;UACbgD,CAAC,EAAEhC,UAAU,GAAGgC,CAAC,GAAGC,CAAE;UACtBA,CAAC,EAAEjC,UAAU,GAAGiC,CAAC,GAAGD,CAAE;UACtBD,KAAK,EAAE/B,UAAU,GAAG+B,KAAK,GAAGF,MAAO;UACnCA,MAAM,EAAE7B,UAAU,GAAG6B,MAAM,GAAGE,KAAM;UACpCvB,GAAG,EAAEA,GAAI;UACT4B,IAAI,EAAE,CAACd,IAAI,CAACC,OAAQ;UACpBd,QAAQ,EAAEA,QAAS;UACnByB,CAAC,EAAElD,KAAK,KAAK,CAAC,IAAIA,KAAK,KAAKM,eAAe,CAACnB,MAAM,GAAG,CAAC,GAAG+D,CAAC,GAAG,CAAE;UAC/DG,KAAK,EAAEf,IAAI,CAACe,KAAM;UAClB3B,QAAQ,EAAEA,QAAS;UACnB4B,SAAS,EAAEtC,UAAU,GAAG,YAAY,GAAG,UAAW;UAClDa,OAAO,EAAEA,OAAQ;UACjB0B,OAAO,EACLvB,eAAe,KAAKhC,KAAK,GAAG,IAAI,GAAGgC,eAAe,KAAK,CAAC,CAAC,GAAGwB,SAAS,GAAG;QACzE,CACF,CAAC;MAEN,CAAC,CAAC,eAEFtF,KAAA,CAAAgE,aAAA,CAAC3D,gBAAgB;QACf,mBAAW;QACXkD,QAAQ,EAAEA,QAAS;QACnB1B,EAAE,EAAEyB,GAAI;QACRyB,CAAC,EAAC,GAAG;QACLD,CAAC,EAAC,GAAG;QACLD,KAAK,EAAE/B,UAAU,GAAG,CAAC,GAAGY,SAAU;QAClCiB,MAAM,EAAE7B,UAAU,GAAGW,UAAU,GAAG;MAAE,CACrC,CACD,CAAC;IAEP;EAAC;IAAA/B,GAAA;IAAAC,KAAA,EAED,SAAA4D,aAAaA,CAAA,EAAoB;MAAA,IAAAC,IAAA,QAAAzC,OAAA;QAAA0C,MAAA;MAC/B,IAAAC,cAAA,GACE,IAAI,CAAC3C,OAAO;QADNM,IAAI,GAAAqC,cAAA,CAAJrC,IAAI;QAAEP,UAAU,GAAA4C,cAAA,CAAV5C,UAAU;QAAE6C,YAAY,GAAAD,cAAA,CAAZC,YAAY;QAAEC,eAAe,GAAAF,cAAA,CAAfE,eAAe;QAAEC,yBAAyB,GAAAH,cAAA,CAAzBG,yBAAyB;QAAEC,MAAM,GAAAJ,cAAA,CAANI,MAAM;QAAEC,WAAW,GAAAL,cAAA,CAAXK,WAAW;MAEvG,IAAQ3D,eAAe,GAAK,IAAI,CAACyB,KAAK,CAA9BzB,eAAe;MACvB,IAAM4D,uBAAuB,GA2CgBpG,GAAG;MAzChD,IAAI,CAACmG,WAAW,EAAE;QAChB,OAAO,IAAI;MACb;MAEA,oBACE/F,KAAA,CAAAgE,aAAA,CAAC/D,SAAS,CAACgG,OAAO;QAChBlB,CAAC,EAAEjC,UAAU,GAAG,EAAE,GAAGwC,SAAU;QAC/BR,CAAC,EAAEhC,UAAU,GAAGwC,SAAS,GAAG,EAAG;QAC/B5E,IAAI,EAAE,GAAI;QACVwF,aAAa,EAAE;MAAK,GAEnB,UAACC,YAAiB,EAAK;QAAA,IAAAC,KAAA;QACtB,IAAMnB,OAAO,GAAGnC,UAAU,GAAGqD,YAAY,CAACE,MAAM,GAAGF,YAAY,CAACG,MAAM;QACtE,IAAMC,iBAAiB,GAAGV,yBAAyB,IAAIJ,MAAI,CAACe,UAAU,CAACnD,IAAI,CAAC,KAAK,CAAC;QAElF,IAAIuC,eAAe,KAAK,QAAQ,EAAE;UAAA,IAAAa,KAAA;UAChC,IAAMrC,IAAI,GAAGhC,eAAe,CAACsE,IAAI,CAAC,UAACC,WAAW;YAAA,OAAKA,WAAW,CAAC9E,EAAE,KAAKoD,OAAO;UAAA,EAAC;UAC9E,IAAI,CAACb,IAAI,EAAE;YACT,OAAO,IAAI;UACb;UAEA,OAAO;YACLwC,QAAQ,GAAAH,KAAA,GAAEnH,OAAO,CAACwG,MAAM,CAAC,eACvB9F,KAAA,CAAAgE,aAAA,CAACgC,uBAAuB,EAAAS,KAAA,CAAAI,EAAA,4BAAAC,aAAA,KAAAC,YAAA;cAAA,gBAA4BR,iBAAiB,GAAG,GAAG,GAAG,GAAG;cAAA,kBAAkB,CAAC,MAAM;YAAC,GAAAf,IAAA,kBACzGxF,KAAA,CAAAgE,aAAA,CAAC/D,SAAS,CAACgG,OAAO,CAACe,GAAG;cAACC,EAAE,EAAE,CAAE;cAAC9B,KAAK,EAAEf,IAAI,CAACe;YAAM,GAC7Cf,IAAI,CAAC8C,KACe,CAAC,EACtBX,iBAAiB,iBAAIvG,KAAA,CAAAgE,aAAA,CAACnE,IAAI,EAAA4G,KAAA,CAAAI,EAAA;cAAA,aAAW,KAAK;cAAA,SAAO;YAAgB,IAAEpB,MAAI,CAAC0B,YAAY,CAAC9D,IAAI,EAAEe,IAAI,CAACvC,EAAE,CAAQ,CAAC,eAC7G7B,KAAA,CAAAgE,aAAA,CAACnE,IAAI,EAAA4G,KAAA,CAAAI,EAAA;cAAA,aAAW,KAAK;cAAA;YAAA,IAAOpB,MAAI,CAAC2B,qBAAqB,CAAC/D,IAAI,CAACe,IAAI,CAACvC,EAAE,CAAC,CAAQ,CACrD,CAAC;UAE9B,CAAC;QACH;QAEA,OAAO;UACL+E,QAAQ,GAAAR,KAAA,GAAE9G,OAAO,CAACwG,MAAM,CAAC,eACvB9F,KAAA,CAAAgE,aAAA,CAACrE,IAAI,EAAAyG,KAAA,CAAAS,EAAA;YAAA,aAAW;UAAQ,IACrBlB,YAAY,iBACX3F,KAAA,CAAAgE,aAAA,CAAC/D,SAAS,CAACgG,OAAO,CAACoB,KAAK,QAAC,oBAA2C,CACrE,eAEDrH,KAAA,CAAAgE,aAAA,CAACgC,uBAAuB,EAAAI,KAAA,CAAAS,EAAA,4BAAAC,aAAA,KAAAQ,aAAA;YAAA,gBAA4Bf,iBAAiB,GAAG,GAAG,GAAG,GAAG;YAAA,kBAAkB,CAAC,MAAM;UAAC,GAAAf,IAAA,KACxGpD,eAAe,CAACE,GAAG,CAAC,UAAC8B,IAAI,EAAK;YAC7B,IAAMmD,KAAK,GAAG;cAAEC,OAAO,EAAEpD,IAAI,CAACvC,EAAE,KAAKoD,OAAO,GAAG,CAAC,GAAG;YAAI,CAAC;YACxD,OACEb,IAAI,CAACC,OAAO,iBACVrE,KAAA,CAAAgE,aAAA,CAAChE,KAAK,CAACiE,QAAQ;cAACvC,GAAG,EAAE0C,IAAI,CAACvC;YAAG,gBAC3B7B,KAAA,CAAAgE,aAAA,CAAC/D,SAAS,CAACgG,OAAO,CAACe,GAAG;cAACC,EAAE,EAAE,CAAE;cAAC9B,KAAK,EAAEf,IAAI,CAACe,KAAM;cAACoC,KAAK,EAAEA;YAAM,GAC3DnD,IAAI,CAAC8C,KACe,CAAC,EACtBX,iBAAiB,iBAAIvG,KAAA,CAAAgE,aAAA,CAACnE,IAAI;cAAC4H,SAAS,EAAC,KAAK;cAACtC,KAAK,EAAC,gBAAgB;cAACoC,KAAK,EAAEA;YAAM,GAAE9B,MAAI,CAAC0B,YAAY,CAAC9D,IAAI,EAAEe,IAAI,CAACvC,EAAE,CAAQ,CAAC,eAC3H7B,KAAA,CAAAgE,aAAA,CAACnE,IAAI;cAAC4H,SAAS,EAAC,KAAK;cAACC,IAAI;cAACH,KAAK,EAAEA;YAAM,GAAE9B,MAAI,CAAC2B,qBAAqB,CAAC/D,IAAI,CAACe,IAAI,CAACvC,EAAE,CAAC,CAAQ,CAC5E,CACjB;UAEL,CAAC,CAAC,EAED4D,MAAI,CAACkC,sBAAsB,CAACtE,IAAI,CACV,CACrB,CAAC;QAEX,CAAC;MACH,CACiB,CAAC;IAExB;EAAC;IAAA3B,GAAA;IAAAC,KAAA,EAED,SAAmBgG,sBAAsBA,CAAuBC,QAAW,EAAE;MAC3E,IAAAC,cAAA,GAA0D,IAAI,CAAC9E,OAAO;QAA9D+E,kBAAkB,GAAAD,cAAA,CAAlBC,kBAAkB;QAAEjC,yBAAyB,GAAAgC,cAAA,CAAzBhC,yBAAyB;MAErD,IAAI,CAACiC,kBAAkB,EAAE;QACvB,OAAO,IAAI;MACb;MAEA,IAAMC,KAAK,GAAG,IAAI,CAACvB,UAAU,CAACoB,QAAQ,CAAC;MAEvC,oBACE5H,KAAA,CAAAgE,aAAA,CAAAhE,KAAA,CAAAiE,QAAA,qBACEjE,KAAA,CAAAgE,aAAA,CAACpE,GAAG;QAACoI,EAAE,EAAE,CAAE;QAACf,EAAE,EAAE;MAAE,GAAC,OAAU,CAAC,EAC5BpB,yBAAyB,IAAIkC,KAAK,KAAK,CAAC,iBAAI/H,KAAA,CAAAgE,aAAA,CAACnE,IAAI;QAACmI,EAAE,EAAE,CAAE;QAACP,SAAS,EAAC,KAAK;QAACtC,KAAK,EAAC;MAAgB,GAAE8C,MAAM,CAACC,KAAK,CAACH,KAAK,CAAC,GAAG3H,WAAW,GAAG,MAAa,CAAC,eACrJJ,KAAA,CAAAgE,aAAA,CAACnE,IAAI;QAACmI,EAAE,EAAE,CAAE;QAACP,SAAS,EAAC,KAAK;QAACC,IAAI;MAAA,GAAEO,MAAM,CAACC,KAAK,CAACH,KAAK,CAAC,GAAG3H,WAAW,GAAG2H,KAAY,CACnF,CAAC;IAEP;EAAC;IAAArG,GAAA;IAAAC,KAAA,EAED,SAAAwG,YAAYA,CAAA,EAAG;MAAA,IAAAC,oBAAA;MACb,QAAAA,oBAAA,GAAO,IAAI,CAACrF,OAAO,CAACsF,MAAM,cAAAD,oBAAA,cAAAA,oBAAA,GAAI,IAAI;IACpC;EAAC;IAAA1G,GAAA;IAAAC,KAAA,EAED,SAAS2G,MAAMA,CAAA,EAAG;MAAA,IAAAC,KAAA,QAAAxF,OAAA;QAAAyF,KAAA;MAChB,IAAMC,MAAM,GA8BM9I,IAAI;MA7BtB,IAAA+I,cAAA,GACE,IAAI,CAAC3F,OAAO;QADN+C,MAAM,GAAA4C,cAAA,CAAN5C,MAAM;QAAEpC,SAAS,GAAAgF,cAAA,CAAThF,SAAS;QAAED,UAAU,GAAAiF,cAAA,CAAVjF,UAAU;QAAEJ,IAAI,GAAAqF,cAAA,CAAJrF,IAAI;QAAEG,QAAQ,GAAAkF,cAAA,CAARlF,QAAQ;QAAEV,UAAU,GAAA4F,cAAA,CAAV5F,UAAU;QAAE6F,iBAAiB,GAAAD,cAAA,CAAjBC,iBAAiB;MAGpF,IAAMN,MAAM,GAAG,IAAI,CAACF,YAAY,CAAC,CAAC;MAElC,IAAIrF,UAAU,EAAE;QAAA,IAAA8F,KAAA;QACd,OAAAA,KAAA,GAAOtJ,OAAO,CAACwG,MAAM,CAAC,eACpB9F,KAAA,CAAAgE,aAAA,CAACyE,MAAM,EAAAG,KAAA,CAAA/B,EAAA,WAAAC,aAAA,KAAA+B,aAAA;UAAA,OAAoB,CAAC;UAAA,aAAY,QAAQ;UAAA,kBAAiB,CAAC,SAAS,EAAE,MAAM;QAAC,GAAAN,KAAA,kBAClFvI,KAAA,CAAAgE,aAAA,CAACrE,IAAI,EAAAiJ,KAAA,CAAA/B,EAAA;UAAA,aAAW;QAAQ,IACrBwB,MAAM,eACPrI,KAAA,CAAAgE,aAAA,CAAC9D,IAAI,EAAA0I,KAAA,CAAA/B,EAAA;UAAA,QACGxD,IAAI;UAAA,SACH,CAAC,IAAI,CAACyF,MAAM,EAAE,IAAI,CAACC,MAAM,CAAC;UAAA,SAC1BrF,SAAS;UAAA,UACRD,UAAU;UAAA,aACP,IAAI,CAACuF,SAAS;UAAA,YACfxF,QAAQ;UAAA,qBACCmF;QAAiB,IAEnC,IAAI,CAACpD,aAAa,CAAC,CAAC,EACpB,IAAI,CAACrC,WAAW,CAAC,CACd,CACF,CAAC,EACN,IAAI,CAAC+F,YAAY,CAAC,CACb,CAAC;MAEb;MAEA,OAAAT,KAAA,GAAOlJ,OAAO,CAACwG,MAAM,CAAC,eACpB9F,KAAA,CAAAgE,aAAA,CAACyE,MAAM,EAAAD,KAAA,CAAA3B,EAAA,WAAAC,aAAA,KAAAoC,aAAA;QAAA,OAAoB,CAAC;QAAA,kBAAkB,CAAC,SAAS,EAAE,MAAM;MAAC,GAAAX,KAAA,kBAC/DvI,KAAA,CAAAgE,aAAA,CAAC9D,IAAI,EAAAsI,KAAA,CAAA3B,EAAA;QAAA,QACGxD,IAAI;QAAA,SACH,CAAC,IAAI,CAACyF,MAAM,EAAE,IAAI,CAACC,MAAM,CAAC;QAAA,SAC1BrF,SAAS;QAAA,UACRD,UAAU;QAAA,aACP,IAAI,CAACuF,SAAS;QAAA,YACfxF,QAAQ;QAAA,qBACCmF;MAAiB,IAEnC,IAAI,CAACpD,aAAa,CAAC,CAAC,EACpB,IAAI,CAACrC,WAAW,CAAC,CACd,CAAC,eACPlD,KAAA,CAAAgE,aAAA,CAACrE,IAAI,EAAA6I,KAAA,CAAA3B,EAAA;QAAA,aAAW,QAAQ;QAAA,OAAM;MAAC,IAC5BwB,MAAM,iBACLrI,KAAA,CAAAgE,aAAA,CAAAhE,KAAA,CAAAiE,QAAA,qBACEjE,KAAA,CAAAgE,aAAA,CAACpE,GAAG,EAAA4I,KAAA,CAAA3B,EAAA,aAAEwB,MAAY,CAAC,eACnBrI,KAAA,CAAAgE,aAAA,CAACtE,OAAO,EAAA8I,KAAA,CAAA3B,EAAA,eAAE,CACV,CACH,EACA,IAAI,CAACoC,YAAY,CAAC,CACf,CACA,CAAC;IAEb;EAAC;IAAAvH,GAAA;IAAAC,KAAA,EAED,SAAUwH,kBAAkBA,CAAA,EAAW;MACrC,OAAO,IAAI,CAACpG,OAAO,CAACqG,WAAW,CAAC,gBAAgB,EAAE;QAAEC,SAAS,EAAE;MAAY,CAAC,CAAC;IAC/E;EAAC;IAAA3H,GAAA;IAAAmB,GAAA,EAED,SAAAA,IAAA,EAA2B;MACzB,IAAQQ,IAAI,GAAK,IAAI,CAACN,OAAO,CAArBM,IAAI;MACZ,IAAQjB,eAAe,GAAK,IAAI,CAACyB,KAAK,CAA9BzB,eAAe;MAEvB,IAAMkH,MAAM,GAAG,IAAIC,GAAG,CAAiB,CAAC;MAExCnH,eAAe,CAACoH,OAAO,CAAC,UAAC7C,WAAW,EAAK;QACvC,IAAMhF,KAAK,GAAG0B,IAAI,CAACsD,WAAW,CAAC9E,EAAE,CAAC;QAClC,IAAI8E,WAAW,CAACtC,OAAO,IAAI1C,KAAK,KAAKpB,gBAAgB,EAAE;UACrD+I,MAAM,CAACG,GAAG,CAAC9C,WAAW,CAAC9E,EAAE,EAAEF,KAAK,CAAC;QACnC;MACF,CAAC,CAAC;MAEF,OAAO2H,MAAM;IACf;EAAC;IAAA5H,GAAA;IAAAmB,GAAA,EAED,SAAAA,IAAA,EAA4B;MAC1B,IAAA6G,cAAA,GAA8C,IAAI,CAAC3G,OAAO;QAAlDW,SAAS,GAAAgG,cAAA,CAAThG,SAAS;QAAED,UAAU,GAAAiG,cAAA,CAAVjG,UAAU;QAAEX,UAAU,GAAA4G,cAAA,CAAV5G,UAAU;MAEzC,IAAM6G,KAAK,GAAG7G,UAAU,GAAG,CAACW,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAEC,SAAS,CAAC;MAE3D,OAAO5D,SAAS,CAAK,CAAC,CAAC,CAAC,EAAE6J,KAAK,CAAC;IAClC;EAAC;IAAAjI,GAAA;IAAAmB,GAAA,EAED,SAAAA,IAAA,EAAyB;MACvB,IAAA+G,cAAA,GAA8C,IAAI,CAAC7G,OAAO;QAAlDW,SAAS,GAAAkG,cAAA,CAATlG,SAAS;QAAED,UAAU,GAAAmG,cAAA,CAAVnG,UAAU;QAAEX,UAAU,GAAA8G,cAAA,CAAV9G,UAAU;MAEzC,IAAI2B,GAAG,GAAG,CAAC;MAEX,IAAI,CAACoF,YAAY,CAACL,OAAO,CAAC,UAAC7H,KAAK,EAAK;QACnC8C,GAAG,GAAGA,GAAG,GAAG9C,KAAK;MACnB,CAAC,CAAC;MAEF,OAAO5B,WAAW,CAAC,CAAC,CACjB4J,KAAK,CAAC7G,UAAU,GAAG,CAAC,CAAC,EAAEY,SAAS,CAAC,GAAG,CAACD,UAAU,EAAE,CAAC,CAAC,CAAC,CACpDiB,MAAM,CAAC,CAAC,CAAC,EAAED,GAAG,CAAC,CAAC;IACrB;EAAC;AAAA,EArUmCtE,aAAa;AAAAoB,eAAA,CAA7CZ,uBAAuB,iBAKN,eAAe;AAAAY,eAAA,CALhCZ,uBAAuB,kBAOA,UAACsB,KAA0B,EAAK;EAAA,IAAA6H,iBAAA;EACzD,IAAMhH,UAAU,IAAAgH,iBAAA,GAAG7H,KAAK,CAACa,UAAU,cAAAgH,iBAAA,cAAAA,iBAAA,GAAI,IAAI;EAC3C,OAAO;IACLhH,UAAU,EAAEA,UAAU;IACtBiH,SAAS,EAAE,KAAK;IAChBC,SAAS,EAAE,KAAK;IAChBjE,WAAW,EAAE,IAAI;IACjBkE,UAAU,EAAE,KAAK;IACjBC,OAAO,EAAE,CAAC;IACVC,OAAO,EAAE,CAAC;IACV5G,QAAQ,EAAE,GAAG;IACbG,SAAS,EAAE,CAACZ,UAAU,IAAI,CAACb,KAAK,CAACyB,SAAS,GAAG,EAAE,GAAGzB,KAAK,CAACyB,SAAS;IACjED,UAAU,EAAEX,UAAU,IAAI,CAACb,KAAK,CAACwB,UAAU,GAAG,EAAE,GAAGxB,KAAK,CAACwB,UAAU;IACnEoC,yBAAyB,EAAE;EAC7B,CAAC;AACH,CAAC;AAAAtE,eAAA,CAtBGZ,uBAAuB,aAwBV,CACfnB,mBAAmB,CAAC,CAAC,EACrBC,mBAAmB,CAAC,CAAC,EACrBF,WAAW,CAACe,iBAAiB,CAAC,CAC/B;AA4SH,OAAO,IAAM8J,cAAkC,GAAGhL,eAAe,CAACuB,uBAAuB,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CigaretteChart.js","names":["createComponent","Root","sstyled","i18nEnhance","resolveColorEnhance","trottle","uniqueIDEnhancement","Divider","Flex","Box","Text","scaleThreshold","scaleLinear","React","HoverRect","Plot","AbstractChart","NOT_A_VALUE","AnimatedClipPath","localizedMessages","eventToPoint","interpolateValue","Cigarette","DEFAULT_MINIMAL_BAR_WIDTH","DEFAULT_GAP","CigaretteChartComponent","_AbstractChart","props","_this","_classCallCheck","_callSuper","_defineProperty","createRef","event","plotRef","current","_eventToPoint","_eventToPoint2","_slicedToArray","pX","pY","setState","prevState","state","_objectSpread","_inherits","_createClass","key","get","dataDefinitions","filter","_ref7","checked","data","asProps","activeDataDefinitions","_ref8","id","itemValue","value","resolveColor","index","_this$props$colorMap$","_this$props$colorMap","colorMap","concat","getDefaultDataDefinitions","_superPropGet","map","dataDef","columns","slice","defaultLegendProps","legendType","w","totalValue","reduce","acc","_ref9","computeCigaretteItems","_this$asProps","plotWidth","plotHeight","invertAxis","minimalBarWidth","_toConsumableArray","reverse","count","activePositiveDataDefinitions","length","totalGapWidth","Math","max","availableSpace","dataDefinitionsItemSize","_ref0","result","dd","dataWidth","visualWidth","isMinVisible","smallItems","r","extraNeeded","_iterator","_createForOfIteratorHelper","_step","s","n","done","smallItem","err","e","f","donors","donorCapacity","d","_iterator2","_step2","donor","available","share","taken","renderChart","_this2","_this$asProps2","uid","duration","patterns","onClick","_this$state","highlightedLine","offset","items","createElement","Fragment","item","height","width","y","x","dataKey","hide","color","direction","hovered","undefined","renderTooltip","_ref","_this3","_this$asProps3","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","_this$state2","STooltipChildrenWrapper","Tooltip","wMin","hideHoverLine","xIndex","visualScale","yIndex","tooltipProps","_ref4","showPercentColumn","_ref3","find","dataDefItem","children","cn","_assignProps","Dot","mr","label","percentValue","tooltipValueFormatter","Title","_assignProps2","style","opacity","textAlign","bold","renderTooltipTotalLine","percentFormatter","total","rawPercent","formattedPercent","round","dataItem","_this$asProps4","showTotalInTooltip","mt","Number","isNaN","renderHeader","_this$asProps$header","header","render","_ref2","_ref6","SChart","_this$asProps5","a11yAltTextConfig","_ref5","_assignProps3","xScale","yScale","dataHints","onPlotMouseMove","onPlotMouseLeave","renderLegend","_assignProps4","getLegendAriaLabel","getI18nText","chartType","cigaretteItems","_cigaretteItems$reduc","_ref1","range","domain","push","lastAddedDomain","_props$invertAxis","showXAxis","showYAxis","showLegend","marginX","marginY","CigaretteChart"],"sources":["../../../../src/component/Chart/CigaretteChart.tsx"],"sourcesContent":["import { createComponent, Root, sstyled } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport resolveColorEnhance from '@semcore/core/lib/utils/enhances/resolveColorEnhance';\nimport trottle from '@semcore/core/lib/utils/rafTrottle';\nimport uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';\nimport Divider from '@semcore/divider';\nimport { Flex, Box } from '@semcore/flex-box';\nimport { Text } from '@semcore/typography';\nimport { scaleThreshold, scaleLinear, scaleBand } from 'd3-scale';\nimport React from 'react';\n\nimport type { CigaretteChartData, CigaretteChartDataKey, CigaretteChartProps, CigaretteChartType } from './CigaretteChart.type';\n// @ts-ignore\nimport { HoverRect, Plot } from '../..';\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart, NOT_A_VALUE } from './AbstractChart';\nimport type { ObjectData } from './AbstractChart.type';\n// @ts-ignore\nimport AnimatedClipPath from '../../AnimatedClipPath';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\nimport { eventToPoint, interpolateValue } from '../../utils';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\nimport Cigarette from '../Cigarette/Cigarette';\n\nconst DEFAULT_MINIMAL_BAR_WIDTH = 2;\nconst DEFAULT_GAP = 2;\n\ntype ScaleThresholdConfig = { range: Array<CigaretteChartDataKey>; domain: Array<number> };\n\ntype CigaretteChartState = ChartState & {\n pX: number | null;\n pY: number | null;\n};\n\nclass CigaretteChartComponent extends AbstractChart<\n CigaretteChartData,\n CigaretteChartProps,\n typeof CigaretteChartComponent.enhance,\n CigaretteChartState,\n typeof CigaretteChartComponent.defaultProps\n> {\n static displayName = 'Cigarette.Bar';\n\n static defaultProps: any = (props: CigaretteChartProps) => {\n const invertAxis = props.invertAxis ?? true;\n return {\n invertAxis: invertAxis,\n showXAxis: false,\n showYAxis: false,\n showTooltip: true,\n showLegend: false,\n marginX: 0,\n marginY: 0,\n duration: 500,\n plotWidth: !invertAxis && !props.plotWidth ? 44 : props.plotWidth,\n plotHeight: invertAxis && !props.plotHeight ? 28 : props.plotHeight,\n showPercentValueInTooltip: false,\n minimalBarWidth: DEFAULT_MINIMAL_BAR_WIDTH,\n };\n };\n\n static enhance = [\n resolveColorEnhance(),\n uniqueIDEnhancement(),\n i18nEnhance(localizedMessages),\n ] as const;\n\n constructor(props: CigaretteChartProps) {\n super(props);\n\n this.state = {\n ...this.state,\n pX: null,\n pY: null,\n };\n }\n\n private plotRef = React.createRef<SVGElement>();\n\n protected override plotPadding = 0;\n\n private offset = 0;\n\n private get activeDataDefinitions() {\n const { dataDefinitions } = this.state;\n\n return dataDefinitions.filter(({ checked }) => checked);\n }\n\n private get activePositiveDataDefinitions() {\n const { data } = this.asProps;\n\n return this.activeDataDefinitions.filter(({ id }) => {\n const itemValue = data[id];\n\n return typeof itemValue === 'number' && itemValue > 0;\n });\n }\n\n protected override resolveColor(id: string, index: number) {\n return this.props.colorMap?.[id] ?? `blue-${5 - index}00`;\n }\n\n protected override getDefaultDataDefinitions(): Array<\n LegendItem & { columns: React.ReactNode[] }\n > {\n const dataDefinitions = super.getDefaultDataDefinitions();\n\n return dataDefinitions.map((dataDef) => {\n dataDef.columns = dataDef.columns.slice(1);\n return dataDef;\n });\n }\n\n protected override defaultLegendProps() {\n return {\n legendType: 'Table' as const,\n w: 'fit-content',\n };\n }\n\n private onPlotMouseMove = trottle((event: React.MouseEvent<HTMLElement>) => {\n if (!this.plotRef.current) return;\n\n const [pX, pY] = eventToPoint(event, this.plotRef.current);\n\n this.setState((prevState) => ({ pX, pY }));\n });\n\n private onPlotMouseLeave = trottle(() => {\n this.setState((prevState) => ({ pX: null, pY: null }));\n });\n\n protected override totalValue() {\n const { data } = this.asProps;\n\n return this.activeDataDefinitions.reduce((acc, { id }) => {\n const itemValue = data[id];\n\n if (typeof itemValue === 'number') {\n acc += itemValue;\n }\n\n return acc;\n }, 0);\n }\n\n private computeCigaretteItems() {\n const { plotWidth, plotHeight, data, invertAxis, minimalBarWidth } = this.asProps;\n\n const dataDefinitions = invertAxis\n ? this.activeDataDefinitions\n : [...this.activeDataDefinitions].reverse();\n\n const count = this.activePositiveDataDefinitions.length;\n const totalGapWidth = DEFAULT_GAP * Math.max(0, count - 1);\n const availableSpace = Math.max(0, (invertAxis ? plotWidth : plotHeight) - totalGapWidth);\n\n const totalValue = this.totalValue();\n\n const dataDefinitionsItemSize = dataDefinitions.map(({ id }) => {\n if (totalValue === 0) {\n return 0;\n }\n\n const itemValue = data[id];\n\n if (typeof itemValue !== 'number') return 0;\n\n return (itemValue / totalValue) * availableSpace;\n });\n\n const result = dataDefinitions.map((dd, index) => ({\n ...dd,\n value: data[dd.id],\n dataWidth: dataDefinitionsItemSize[index],\n visualWidth: dataDefinitionsItemSize[index],\n isMinVisible: false,\n }));\n\n const smallItems = result.filter((r) => {\n const { value, dataWidth } = r;\n\n if (typeof value !== 'number') return false;\n\n return value > 0 && dataWidth < minimalBarWidth;\n });\n\n if (smallItems.length === 0) return result;\n\n let extraNeeded = 0;\n\n for (const smallItem of smallItems) {\n extraNeeded += minimalBarWidth - smallItem.dataWidth;\n smallItem.visualWidth = minimalBarWidth;\n smallItem.isMinVisible = true;\n }\n\n const donors = result.filter((r) => !r.isMinVisible && r.dataWidth > minimalBarWidth);\n const donorCapacity = donors.reduce(\n (s, d) => s + (d.dataWidth - minimalBarWidth),\n 0,\n );\n\n for (const donor of donors) {\n const available = donor.dataWidth - minimalBarWidth;\n const share = available / donorCapacity;\n const taken = share * extraNeeded;\n donor.visualWidth = donor.dataWidth - taken;\n }\n\n return result;\n };\n\n get xScale() {\n const { plotWidth } = this.asProps;\n\n return scaleLinear([0, plotWidth]);\n }\n\n get yScale() {\n const { plotHeight } = this.asProps;\n\n return scaleLinear([plotHeight, 0]);\n }\n\n renderChart() {\n const { invertAxis, data, uid, duration, patterns, plotHeight, plotWidth, onClick } =\n this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n this.offset = 0;\n\n const items = this.computeCigaretteItems();\n\n return (\n <>\n {items.map((item, index) => {\n const { visualWidth, id } = item;\n const value = data[id];\n\n if (value === interpolateValue || value === null) {\n return null;\n }\n\n const height = invertAxis ? plotHeight - DEFAULT_GAP * 2 : plotWidth - DEFAULT_GAP * 2;\n const width = visualWidth;\n const y = DEFAULT_GAP;\n const x = this.offset;\n const r = height < 28 ? 2 : 4;\n\n this.offset += visualWidth;\n\n if (index < items.length - 1) {\n this.offset += DEFAULT_GAP;\n }\n\n return (\n <Cigarette\n key={item.id}\n dataKey={item.id}\n index={index}\n y={invertAxis ? y : x}\n x={invertAxis ? x : y}\n width={invertAxis ? width : height}\n height={invertAxis ? height : width}\n uid={uid}\n hide={!item.checked}\n duration={duration}\n r={index === 0 || index === dataDefinitions.length - 1 ? r : 0}\n color={item.color}\n patterns={patterns}\n direction={invertAxis ? 'horizontal' : 'vertical'}\n onClick={onClick}\n hovered={\n highlightedLine === index ? true : highlightedLine === -1 ? undefined : false\n }\n />\n );\n })}\n\n <AnimatedClipPath\n aria-hidden\n duration={duration}\n id={uid}\n x='0'\n y='0'\n width={invertAxis ? 0 : plotWidth}\n height={invertAxis ? plotHeight : 0}\n />\n </>\n );\n }\n\n renderTooltip(): React.ReactNode {\n const { data, invertAxis, tooltipTitle, tooltipViewType, showPercentValueInTooltip, styles, showTooltip } =\n this.asProps;\n const { dataDefinitions, pX, pY } = this.state;\n const STooltipChildrenWrapper = Root;\n\n if (!showTooltip) {\n return null;\n }\n\n return (\n <HoverRect.Tooltip\n x={invertAxis ? '' : undefined}\n y={invertAxis ? undefined : ''}\n wMin={100}\n hideHoverLine={true}\n xIndex={pX !== null ? this.visualScale(pX) : undefined}\n yIndex={pY !== null ? this.visualScale(pY) : undefined}\n >\n {(tooltipProps: any) => {\n const dataKey = invertAxis ? tooltipProps.xIndex : tooltipProps.yIndex;\n const showPercentColumn = showPercentValueInTooltip && this.totalValue() !== 0;\n\n if (tooltipViewType === 'single') {\n const item = dataDefinitions.find((dataDefItem) => dataDefItem.id === dataKey);\n if (!item) {\n return {\n children: null,\n };\n }\n\n return {\n children: sstyled(styles)(\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary'>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold>{this.tooltipValueFormatter(data[item.id])}</Text>\n </STooltipChildrenWrapper>,\n ),\n };\n }\n\n return {\n children: sstyled(styles)(\n <Flex direction='column'>\n {tooltipTitle && (\n <HoverRect.Tooltip.Title>Some tooltip title</HoverRect.Tooltip.Title>\n )}\n\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n {dataDefinitions.map((item) => {\n const style = { opacity: item.id === dataKey ? 1 : 0.3 };\n return (\n item.checked && (\n <React.Fragment key={item.id}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color} style={style}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary' style={style}>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold style={style}>{this.tooltipValueFormatter(data[item.id])}</Text>\n </React.Fragment>\n )\n );\n })}\n\n {this.renderTooltipTotalLine(data)}\n </STooltipChildrenWrapper>\n </Flex>,\n ),\n };\n }}\n </HoverRect.Tooltip>\n );\n }\n\n protected percentValue(data: ObjectData, key: string): string {\n const { percentFormatter } = this.asProps;\n\n const total = this.totalValue();\n\n const value = data[key];\n\n if (typeof value === 'number' && total !== 0) {\n const rawPercent = (100 * value) / total;\n const formattedPercent = percentFormatter ? percentFormatter(rawPercent) : Math.round(rawPercent);\n\n return `${formattedPercent}%`;\n }\n\n if (value === null) {\n return `0%`;\n }\n\n return NOT_A_VALUE;\n }\n\n protected override renderTooltipTotalLine<D extends ObjectData>(dataItem: D) {\n const { showTotalInTooltip, showPercentValueInTooltip } = this.asProps;\n\n if (!showTotalInTooltip) {\n return null;\n }\n\n const total = this.totalValue();\n\n return (\n <>\n <Box mt={2} mr={2}>Total</Box>\n { showPercentValueInTooltip && total !== 0 && <Text mt={2} textAlign='end' color='text-secondary'>{Number.isNaN(total) ? NOT_A_VALUE : '100%'}</Text> }\n <Text mt={2} textAlign='end' bold>{Number.isNaN(total) ? NOT_A_VALUE : total}</Text>\n </>\n );\n }\n\n renderHeader() {\n return this.asProps.header ?? null;\n }\n\n override render() {\n const SChart = Root;\n const { styles, plotWidth, plotHeight, data, patterns, invertAxis, a11yAltTextConfig } = this.asProps;\n\n const header = this.renderHeader();\n\n if (invertAxis) {\n return sstyled(styles)(\n <SChart render={Flex} gap={6} direction='column' __excludeProps={['onClick', 'data']}>\n <Flex direction='column'>\n {header}\n <Plot\n ref={this.plotRef}\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n onMouseMove={this.onPlotMouseMove}\n onMouseLeave={this.onPlotMouseLeave}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n </Flex>\n {this.renderLegend()}\n </SChart>,\n );\n }\n\n return sstyled(styles)(\n <SChart render={Flex} gap={6} __excludeProps={['onClick', 'data']}>\n <Plot\n ref={this.plotRef}\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n onMouseMove={this.onPlotMouseMove}\n onMouseLeave={this.onPlotMouseLeave}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n <Flex direction='column' gap={2}>\n {header && (\n <>\n <Box>{header}</Box>\n <Divider />\n </>\n )}\n {this.renderLegend()}\n </Flex>\n </SChart>,\n );\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Cigarette' });\n }\n\n private get visualScale() {\n const cigaretteItems = this.computeCigaretteItems();\n\n const { range, domain } = cigaretteItems.reduce<ScaleThresholdConfig>((acc, { id, visualWidth }, index) => {\n const { range, domain } = acc;\n\n if (visualWidth) {\n range.push(id);\n\n if (domain.length === 0) {\n domain.push(visualWidth + DEFAULT_GAP);\n\n return acc;\n }\n\n if (index !== cigaretteItems.length - 1) {\n const lastAddedDomain = domain[domain.length - 1];\n domain.push(lastAddedDomain + visualWidth + DEFAULT_GAP);\n }\n }\n\n return acc;\n }, { range: [], domain: [] });\n\n return scaleThreshold(domain, range);\n }\n}\n\nexport const CigaretteChart: CigaretteChartType = createComponent(CigaretteChartComponent);\n"],"mappings":"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","ignoreList":[]}
|