@easyv/charts 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/.babelrc +8 -8
  2. package/.husky/commit-msg +3 -3
  3. package/CHANGELOG.md +18 -18
  4. package/commitlint.config.js +1 -1
  5. package/lib/components/AnimateData.js +36 -36
  6. package/lib/components/Axis.js +329 -329
  7. package/lib/components/Background.js +2 -2
  8. package/lib/components/Band.js +173 -173
  9. package/lib/components/Brush.js +201 -201
  10. package/lib/components/Carousel.js +164 -164
  11. package/lib/components/Chart.js +111 -111
  12. package/lib/components/ChartContainer.js +58 -58
  13. package/lib/components/ConicalGradient.js +264 -264
  14. package/lib/components/ExtentData.js +45 -45
  15. package/lib/components/FilterData.js +53 -53
  16. package/lib/components/Indicator.js +2 -2
  17. package/lib/components/Label.js +278 -278
  18. package/lib/components/Legend.js +154 -154
  19. package/lib/components/Lighter.js +179 -179
  20. package/lib/components/Line.js +181 -181
  21. package/lib/components/LinearGradient.js +2 -2
  22. package/lib/components/Mapping.js +127 -127
  23. package/lib/components/PieChart.js +1061 -1061
  24. package/lib/components/StackData.js +45 -45
  25. package/lib/components/StereoBar.js +336 -336
  26. package/lib/components/Tooltip.js +155 -155
  27. package/lib/components/index.js +194 -194
  28. package/lib/css/index.module.css +41 -41
  29. package/lib/css/piechart.module.css +26 -26
  30. package/lib/element/ConicGradient.js +72 -72
  31. package/lib/formatter/legend.js +91 -91
  32. package/lib/hooks/index.js +62 -62
  33. package/lib/hooks/useAnimateData.js +88 -88
  34. package/lib/hooks/useAxes.js +135 -135
  35. package/lib/hooks/useCarouselAxisX.js +184 -184
  36. package/lib/hooks/useExtentData.js +128 -128
  37. package/lib/hooks/useFilterData.js +112 -112
  38. package/lib/hooks/useStackData.js +134 -134
  39. package/lib/hooks/useTooltip.js +10 -10
  40. package/lib/index.js +84 -84
  41. package/lib/utils/index.js +832 -832
  42. package/package.json +51 -51
  43. package/src/components/AnimateData.tsx +24 -24
  44. package/src/components/Axis.tsx +354 -354
  45. package/src/components/Background.tsx +45 -45
  46. package/src/components/Band.tsx +173 -173
  47. package/src/components/Brush.js +159 -159
  48. package/src/components/Carousel.tsx +144 -144
  49. package/src/components/Chart.js +99 -99
  50. package/src/components/ChartContainer.tsx +63 -63
  51. package/src/components/ConicalGradient.js +258 -258
  52. package/src/components/ExtentData.js +17 -17
  53. package/src/components/FilterData.js +23 -23
  54. package/src/components/Indicator.js +13 -13
  55. package/src/components/Label.js +206 -206
  56. package/src/components/Legend.js +158 -158
  57. package/src/components/Lighter.jsx +173 -173
  58. package/src/components/Line.js +144 -144
  59. package/src/components/LinearGradient.js +29 -29
  60. package/src/components/Mapping.js +71 -71
  61. package/src/components/Marquee.js +74 -0
  62. package/src/components/PieChart.js +1097 -1097
  63. package/src/components/StackData.js +20 -20
  64. package/src/components/StereoBar.tsx +310 -310
  65. package/src/components/Tooltip.js +169 -169
  66. package/src/components/index.js +51 -51
  67. package/src/context/index.js +2 -2
  68. package/src/css/index.module.css +41 -41
  69. package/src/css/piechart.module.css +26 -26
  70. package/src/element/ConicGradient.jsx +55 -55
  71. package/src/element/Line.tsx +33 -33
  72. package/src/element/index.ts +3 -3
  73. package/src/formatter/index.js +1 -1
  74. package/src/formatter/legend.js +90 -90
  75. package/src/hooks/index.js +17 -17
  76. package/src/hooks/useAnimateData.ts +67 -67
  77. package/src/hooks/useAxes.js +144 -144
  78. package/src/hooks/useCarouselAxisX.js +163 -163
  79. package/src/hooks/useExtentData.js +88 -88
  80. package/src/hooks/useFilterData.js +72 -72
  81. package/src/hooks/useStackData.js +100 -100
  82. package/src/hooks/useTooltip.ts +96 -96
  83. package/src/index.js +6 -6
  84. package/src/types/index.d.ts +67 -67
  85. package/src/utils/index.js +696 -696
  86. package/tsconfig.json +22 -22
@@ -1,1062 +1,1062 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
-
7
- Object.defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
- exports["default"] = void 0;
11
-
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
-
14
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
-
16
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
-
18
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
-
20
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
21
-
22
- var _react = _interopRequireWildcard(require("react"));
23
-
24
- var _ = require(".");
25
-
26
- var _context = require("../context");
27
-
28
- var _utils = require("../utils");
29
-
30
- var _d3v = require("d3v7");
31
-
32
- var _popmotion = require("popmotion");
33
-
34
- var _LinearGradient = _interopRequireDefault(require("./LinearGradient"));
35
-
36
- var _formatter = require("../formatter");
37
-
38
- var _piechartModule = _interopRequireDefault(require("../css/piechart.module.css"));
39
-
40
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
41
-
42
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
43
-
44
- var PI = Math.PI;
45
- var defaultChart = {
46
- outerRadius: 1,
47
- innerRadius: 0,
48
- cornerRadius: 0,
49
- rose: false,
50
- roseType: 'radius',
51
- baseRadius: 0,
52
- padAngle: 0
53
- };
54
- var defaultAngle = {
55
- startAngle: 0,
56
- endAngle: 360,
57
- antiClockwise: false
58
- };
59
-
60
- var nameDy = function nameDy(showValue, showPercent, mode, dir) {
61
- if (showValue || showPercent) {
62
- if (mode == "vertical") {
63
- return dir == 1 ? "1.1em" : "-2.6em";
64
- } else {
65
- return 0;
66
- }
67
- } else {
68
- if (mode == "vertical") {
69
- return dir * 1.1 + "em";
70
- } else {
71
- return 0;
72
- }
73
- }
74
- };
75
-
76
- var valueDy = function valueDy(value1, mode, dir) {
77
- if (value1) {
78
- if (mode == "vertical") {
79
- return "1.5em";
80
- } else {
81
- return 0;
82
- }
83
- } else {
84
- if (mode == "vertical") {
85
- return dir == 1 ? "1.1em" : "-1.1em";
86
- } else {
87
- return 0;
88
- }
89
- }
90
- };
91
-
92
- var percentDy_ = function percentDy_(showName, showValue, mode, dir) {
93
- if (showValue) {
94
- return 0;
95
- }
96
-
97
- if (showName) {
98
- if (mode == 'vertical') {
99
- return '1.5em';
100
- } else {
101
- return 0;
102
- }
103
- } else {
104
- if (mode == 'vertical') {
105
- return dir * 1.1 + 'em';
106
- } else {
107
- return 0;
108
- }
109
- }
110
- };
111
-
112
- var percentX = function percentX(showName, showValue, mode, x) {
113
- if (showValue) {
114
- return '';
115
- }
116
-
117
- if (showName) {
118
- if (mode == 'vertical') {
119
- return x;
120
- } else {
121
- return '';
122
- }
123
- } else {
124
- return x;
125
- }
126
- };
127
-
128
- var percentDx = function percentDx(showName, showValue, mode) {
129
- if (showValue) {
130
- return '0.5em';
131
- }
132
-
133
- if (showName) {
134
- if (mode == 'vertical') {
135
- return 0;
136
- } else {
137
- return '0.5em';
138
- }
139
- } else {
140
- return 0;
141
- }
142
- };
143
-
144
- var percentDy = function percentDy(showName, showValue, mode) {
145
- if (showValue) {
146
- return 0;
147
- }
148
-
149
- if (showName) {
150
- if (mode == 'vertical') {
151
- return '1.5em';
152
- } else {
153
- return 0;
154
- }
155
- } else {
156
- return 0;
157
- }
158
- };
159
-
160
- var valueDx = function valueDx(showName, mode) {
161
- if (!showName) {
162
- return '';
163
- }
164
-
165
- if (mode == 'vertical') {
166
- return '';
167
- } else {
168
- return '0.5em';
169
- }
170
- };
171
-
172
- var getCoord = function getCoord(deg, radius) {
173
- var x = Math.cos(deg) * radius,
174
- y = Math.sin(deg) * radius;
175
- return [x, y];
176
- };
177
-
178
- var getRoseRadius = function getRoseRadius(_ref) {
179
- var innerRadius = _ref.innerRadius,
180
- baseRadius = _ref.baseRadius;
181
- return innerRadius + (1 - innerRadius) * baseRadius;
182
- };
183
-
184
- var getAngle = function getAngle(_ref2) {
185
- var startAngle = _ref2.startAngle,
186
- endAngle = _ref2.endAngle,
187
- antiClockwise = _ref2.antiClockwise,
188
- rest = (0, _objectWithoutProperties2["default"])(_ref2, ["startAngle", "endAngle", "antiClockwise"]);
189
- if (antiClockwise) return _objectSpread(_objectSpread({}, rest), {}, {
190
- startAngle: endAngle - 180,
191
- endAngle: startAngle - 180
192
- });
193
- return _objectSpread(_objectSpread({}, rest), {}, {
194
- startAngle: startAngle,
195
- endAngle: endAngle
196
- });
197
- };
198
-
199
- var getArc = function getArc(radius, _ref3, series) {
200
- var _ref3$padAngle = _ref3.padAngle,
201
- padAngle = _ref3$padAngle === void 0 ? 0 : _ref3$padAngle,
202
- _ref3$innerRadius = _ref3.innerRadius,
203
- innerRadius = _ref3$innerRadius === void 0 ? 0 : _ref3$innerRadius,
204
- _ref3$outerRadius = _ref3.outerRadius,
205
- outerRadius = _ref3$outerRadius === void 0 ? 1 : _ref3$outerRadius,
206
- _ref3$cornerRadius = _ref3.cornerRadius,
207
- cornerRadius = _ref3$cornerRadius === void 0 ? 0 : _ref3$cornerRadius,
208
- _ref3$startAngle = _ref3.startAngle,
209
- startAngle = _ref3$startAngle === void 0 ? 0 : _ref3$startAngle,
210
- _ref3$endAngle = _ref3.endAngle,
211
- endAngle = _ref3$endAngle === void 0 ? 360 : _ref3$endAngle,
212
- rest = (0, _objectWithoutProperties2["default"])(_ref3, ["padAngle", "innerRadius", "outerRadius", "cornerRadius", "startAngle", "endAngle"]);
213
- return _objectSpread(_objectSpread({}, rest), {}, {
214
- type: 'pie',
215
- fieldName: series.fieldName,
216
- displayName: series.displayName || rest.data.s,
217
- series: series,
218
- innerRadius: innerRadius * radius,
219
- outerRadius: outerRadius * radius,
220
- arc: (0, _d3v.arc)().innerRadius(innerRadius * radius).outerRadius(outerRadius * radius).cornerRadius(cornerRadius).startAngle(startAngle).endAngle(endAngle).padAngle(padAngle)
221
- });
222
- };
223
-
224
- var getCircleScale = function getCircleScale() {
225
- var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : tick,
226
- count = _ref4.count,
227
- color = _ref4.color,
228
- width = _ref4.width,
229
- length = _ref4.length;
230
-
231
- var radius = arguments.length > 1 ? arguments[1] : undefined;
232
- var data = [],
233
- arcs = [],
234
- centroids = [];
235
-
236
- for (var i = 0; i < count; i++) {
237
- data.push(1);
238
- }
239
-
240
- var scaleData = (0, _d3v.pie)()(data);
241
- scaleData.map(function (data) {
242
- var _arc = (0, _d3v.arc)().innerRadius(radius + length / 2).outerRadius(radius + length / 2).startAngle(data.startAngle).endAngle(data.endAngle);
243
-
244
- arcs.push(_arc());
245
- centroids.push(_arc.centroid());
246
- });
247
- return /*#__PURE__*/_react["default"].createElement("g", null, centroids.map(function (center, index) {
248
- var x = center[0],
249
- y = center[1];
250
- var rate = length / Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
251
- return /*#__PURE__*/_react["default"].createElement("path", {
252
- key: index,
253
- d: "M".concat(x, ",").concat(y, "l").concat(x * rate, ",").concat(y * rate),
254
- strokeWidth: width,
255
- stroke: color
256
- });
257
- }));
258
- };
259
-
260
- var Component = /*#__PURE__*/(0, _react.memo)(function (_ref5) {
261
- var _ref5$config = _ref5.config,
262
- _ref5$config$chart = _ref5$config.chart,
263
- _ref5$config$chart$di = _ref5$config$chart.dimension.chartDimension,
264
- width = _ref5$config$chart$di.width,
265
- height = _ref5$config$chart$di.height,
266
- label = _ref5$config$chart.label,
267
- _ref5$config$chart$le = _ref5$config$chart.legend,
268
- _ref5$config$chart$le2 = _ref5$config$chart$le.formatter,
269
- formatter = _ref5$config$chart$le2 === void 0 ? _formatter.pieLegendFormatter : _ref5$config$chart$le2,
270
- legend = (0, _objectWithoutProperties2["default"])(_ref5$config$chart$le, ["formatter"]),
271
- _ref5$config$chart$ma = _ref5$config$chart.margin,
272
- marginLeft = _ref5$config$chart$ma.marginLeft,
273
- marginTop = _ref5$config$chart$ma.marginTop,
274
- _ref5$config$fan = _ref5$config.fan;
275
- _ref5$config$fan = _ref5$config$fan === void 0 ? {} : _ref5$config$fan;
276
- var _ref5$config$fan$char = _ref5$config$fan.chart,
277
- chart = _ref5$config$fan$char === void 0 ? defaultChart : _ref5$config$fan$char,
278
- _ref5$config$fan$char2 = _ref5$config$fan.chart,
279
- _ref5$config$fan$char3 = _ref5$config$fan$char2.outerRadius,
280
- outerRadius = _ref5$config$fan$char3 === void 0 ? defaultChart.outerRadius : _ref5$config$fan$char3,
281
- padAngle = _ref5$config$fan$char2.padAngle,
282
- _ref5$config$fan$angl = _ref5$config$fan.angle,
283
- angle = _ref5$config$fan$angl === void 0 ? defaultAngle : _ref5$config$fan$angl,
284
- _ref5$config$fan$stro = _ref5$config$fan.stroke;
285
- _ref5$config$fan$stro = _ref5$config$fan$stro === void 0 ? {
286
- show: false
287
- } : _ref5$config$fan$stro;
288
- var show = _ref5$config$fan$stro.show,
289
- strokeWidth = _ref5$config$fan$stro.strokeWidth,
290
- color = _ref5$config$fan$stro.color,
291
- decorate = _ref5$config$fan.decorate,
292
- decorate2 = _ref5$config$fan.decorate2,
293
- categoryText = _ref5$config$fan.categoryText,
294
- outerDecorate = _ref5$config$fan.outerDecorate,
295
- current = _ref5$config$fan.current,
296
- order = _ref5$config.order,
297
- series = _ref5$config.series,
298
- _ref5$config$animatio = _ref5$config.animation,
299
- on = _ref5$config$animatio.on,
300
- _ref5$config$animatio2 = _ref5$config$animatio.current,
301
- _ref5$config$animatio3 = _ref5$config$animatio2.heighten,
302
- heighten = _ref5$config$animatio3 === void 0 ? 0 : _ref5$config$animatio3,
303
- _ref5$config$animatio4 = _ref5$config$animatio2.opacity,
304
- opacity = _ref5$config$animatio4 === void 0 ? 0 : _ref5$config$animatio4,
305
- _ref5$config$animatio5 = _ref5$config$animatio2.width,
306
- radiusWidthAdd = _ref5$config$animatio5 === void 0 ? 0 : _ref5$config$animatio5,
307
- animateColor = _ref5$config$animatio2.color,
308
- animateCTS = _ref5$config$animatio2.textStyle,
309
- _ref5$config$animatio6 = _ref5$config$animatio2.gap,
310
- gap = _ref5$config$animatio6 === void 0 ? 0 : _ref5$config$animatio6,
311
- _ref5$config$animatio7 = _ref5$config$animatio.rotate,
312
- rotate = _ref5$config$animatio7 === void 0 ? 0 : _ref5$config$animatio7,
313
- _ref5$state = _ref5.state,
314
- currentIndex = _ref5$state.currentIndex,
315
- trigger = _ref5$state.trigger,
316
- onEvent = _ref5.onEvent,
317
- _ref5$data = _ref5.data,
318
- data = _ref5$data === void 0 ? [] : _ref5$data;
319
- var prevIndex = (0, _react.useRef)(null);
320
- var legendPrecision = legend.config.percent.precision;
321
-
322
- var _useContext = (0, _react.useContext)(_context.chartContext),
323
- id = _useContext.id,
324
- chartWidth = _useContext.width,
325
- chartHeight = _useContext.height,
326
- triggerOnRelative = _useContext.triggerOnRelative,
327
- onEmit = _useContext.onEmit;
328
-
329
- var _useState = (0, _react.useState)(1),
330
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
331
- y = _useState2[0],
332
- setY = _useState2[1];
333
-
334
- var radius = Math.min(chartWidth, chartHeight) / 2 * outerRadius;
335
- var arcsFunc = (0, _react.useMemo)(function () {
336
- var _getAngle = getAngle(angle),
337
- _getAngle$startAngle = _getAngle.startAngle,
338
- startAngle = _getAngle$startAngle === void 0 ? 0 : _getAngle$startAngle,
339
- _getAngle$endAngle = _getAngle.endAngle,
340
- endAngle = _getAngle$endAngle === void 0 ? 360 : _getAngle$endAngle;
341
-
342
- var arcsFunc = (0, _d3v.pie)().startAngle(startAngle * PI / 180).endAngle(endAngle * PI / 180).value(function (d) {
343
- return d.y;
344
- });
345
- return arcsFunc;
346
- }, [angle]);
347
- var arcs = (0, _react.useMemo)(function () {
348
- var _chart = Object.assign(defaultChart, chart);
349
-
350
- var innerRadius = _chart.innerRadius,
351
- outerRadius = _chart.outerRadius,
352
- rose = _chart.rose,
353
- cornerRadius = _chart.cornerRadius,
354
- padAngle = _chart.padAngle,
355
- roseType = _chart.roseType;
356
-
357
- var _padAngle = padAngle * Math.PI / 180;
358
-
359
- switch (order) {
360
- case '':
361
- arcsFunc.sort(null);
362
- break;
363
-
364
- case 'desc':
365
- arcsFunc.sort(function (a, b) {
366
- return b.y - a.y;
367
- });
368
- break;
369
-
370
- case 'asc':
371
- arcsFunc.sort(function (a, b) {
372
- return a.y - b.y;
373
- });
374
- break;
375
- }
376
-
377
- var arcs = arcsFunc(data);
378
- var legendDataWithPercent = (0, _utils.getDataWithPercent)(arcs, legendPrecision);
379
-
380
- var _legendDataWithPercent = (0, _utils.sortPie)(legendDataWithPercent, order);
381
-
382
- if (rose) {
383
- var domain = (0, _d3v.extent)(_legendDataWithPercent, function (d) {
384
- return d.value;
385
- });
386
- var roseRadius = getRoseRadius(_chart);
387
- var scaler = (0, _d3v.scaleLinear)().domain(domain).range([roseRadius, 1]);
388
-
389
- var _angle = PI * 2 / _legendDataWithPercent.length;
390
-
391
- return _legendDataWithPercent.map(function (_ref6, index) {
392
- var startAngle = _ref6.startAngle,
393
- endAngle = _ref6.endAngle,
394
- arc = (0, _objectWithoutProperties2["default"])(_ref6, ["startAngle", "endAngle"]);
395
- return _objectSpread(_objectSpread({}, arc), {}, {
396
- id: id + '_linear_' + index,
397
- startAngle: roseType == 'area' ? _angle * index : startAngle,
398
- endAngle: roseType == 'area' ? _angle * (index + 1) : endAngle,
399
- cornerRadius: cornerRadius,
400
- padAngle: _padAngle,
401
- innerRadius: innerRadius,
402
- outerRadius: scaler(arc.value)
403
- });
404
- });
405
- }
406
-
407
- return _legendDataWithPercent.map(function (arc, index) {
408
- return _objectSpread(_objectSpread({}, arc), {}, {
409
- id: id + '_linear_' + index,
410
- cornerRadius: cornerRadius,
411
- padAngle: _padAngle,
412
- innerRadius: innerRadius,
413
- outerRadius: outerRadius
414
- });
415
- });
416
- }, [data, arcsFunc, chart, legendPrecision]);
417
-
418
- var _arcs = (0, _react.useMemo)(function () {
419
- var seriesLength = series.size;
420
- if (!seriesLength) return [];
421
-
422
- var _series = (0, _toConsumableArray2["default"])(series.values());
423
-
424
- return arcs.map(function (arc, index) {
425
- return getArc(radius, arc, _series[index]);
426
- });
427
- }, [series, arcs, radius]);
428
-
429
- var onClick = (0, _react.useCallback)(function (e) {
430
- return onEvent({
431
- currentIndex: +e.currentTarget.dataset.index,
432
- type: 'onClick'
433
- });
434
- }, [onEvent]);
435
- var onMouseEnter = (0, _react.useCallback)(function (e) {
436
- return onEvent({
437
- currentIndex: +e.currentTarget.dataset.index,
438
- type: 'onMouseEnter'
439
- });
440
- }, [onEvent]);
441
- var onMouseLeave = (0, _react.useCallback)(function (e) {
442
- return onEvent({
443
- currentIndex: +e.currentTarget.dataset.index,
444
- type: 'onMouseLeave'
445
- });
446
- }, [onEvent]);
447
- (0, _react.useLayoutEffect)(function () {
448
- var animation;
449
-
450
- if (!!on) {
451
- animation = (0, _popmotion.animate)({
452
- from: 0,
453
- to: 1,
454
- duration: 500,
455
- ease: _popmotion.linear,
456
- onPlay: function onPlay() {},
457
- onUpdate: function onUpdate(v) {
458
- setY(v);
459
- },
460
- onComplete: function onComplete() {
461
- var _data = arcs[+currentIndex].data;
462
- triggerOnRelative(_data);
463
- onEmit('carousel', _data);
464
- }
465
- });
466
- } else {
467
- if (currentIndex !== null && trigger === 'onClick') {
468
- var _data = arcs[+currentIndex].data;
469
- triggerOnRelative(_data);
470
- onEmit(trigger, _data);
471
- }
472
- }
473
-
474
- return function () {
475
- prevIndex.current = currentIndex;
476
- animation && animation.stop();
477
- animation = null;
478
- };
479
- }, [JSON.stringify(arcs), on, currentIndex, trigger, onEmit, triggerOnRelative]);
480
- var halfChartWidth = chartWidth / 2;
481
- var halfChartHeight = chartHeight / 2;
482
- var rotate_ = decorate2 ? -(arcs[+currentIndex].startAngle + arcs[+currentIndex].endAngle) * 90 / Math.PI + rotate : 0;
483
- var maxRadius = 0;
484
-
485
- _arcs.map(function (d) {
486
- maxRadius = Math.max(maxRadius, d.outerRadius);
487
- });
488
-
489
- var centerRadius = 0.5 * maxRadius + 0.5 * _arcs[0].innerRadius;
490
- return outerDecorate ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_.ChartContainer //用于生成甜甜圈图,判断依据是外环装饰这个配置项(outerDecorate)
491
- , {
492
- width: width,
493
- height: height,
494
- marginLeft: marginLeft,
495
- marginTop: marginTop
496
- }, /*#__PURE__*/_react["default"].createElement("g", {
497
- style: {
498
- transition: "transform ease-in-out 0.3s",
499
- transform: 'translate(' + halfChartWidth + 'px, ' + halfChartHeight + 'px) rotate(' + rotate_ + "deg)"
500
- }
501
- }, //用于生成外环装饰的刻度
502
- outerDecorate.tick.show && getCircleScale(outerDecorate.tick, maxRadius), /*#__PURE__*/_react["default"].createElement("circle", {
503
- //外环装饰
504
- cx: "0",
505
- cy: "0",
506
- r: maxRadius + 2,
507
- fill: "none",
508
- stroke: outerDecorate.color,
509
- strokeWidth: outerDecorate.width
510
- }), _arcs.map(function (_ref7, index) {
511
- var id = _ref7.id,
512
- value = _ref7.value,
513
- series = _ref7.series,
514
- arc = _ref7.arc,
515
- innerRadius = _ref7.innerRadius,
516
- outerRadius = _ref7.outerRadius,
517
- dataIndex = _ref7.index;
518
- var arcWidth = outerRadius - innerRadius;
519
- var path = arc.innerRadius(centerRadius).outerRadius(centerRadius)(value);
520
- var dashLength = Math.ceil(Math.PI * centerRadius * 2 / _arcs.length);
521
- var pie = (0, _utils.getColorList)(series.color);
522
- return /*#__PURE__*/_react["default"].createElement(_react.Fragment, {
523
- key: index
524
- }, /*#__PURE__*/_react["default"].createElement("path", {
525
- className: _piechartModule["default"]['inner-arc'],
526
- style: {
527
- strokeDasharray: "".concat(dashLength, ",").concat(2 * dashLength),
528
- strokeDashoffset: dashLength,
529
- animationDelay: "".concat(index * 2000, "ms")
530
- },
531
- "data-index": dataIndex,
532
- onClick: onClick,
533
- onMouseEnter: onMouseEnter,
534
- onMouseLeave: onMouseLeave,
535
- d: path.split("L")[0],
536
- stroke: 'url(#' + id + ')',
537
- strokeWidth: arcWidth,
538
- fill: "none"
539
- }), /*#__PURE__*/_react["default"].createElement("defs", null, /*#__PURE__*/_react["default"].createElement(_LinearGradient["default"], {
540
- id: id,
541
- colors: pie,
542
- rotate: series.color.linear.angle + 180 // gradientUnits='objectBoundingBox'
543
-
544
- })));
545
- }), label && /*#__PURE__*/_react["default"].createElement(RingLabel, {
546
- config: _objectSpread(_objectSpread({}, label), {}, {
547
- maxRadius: maxRadius + 2
548
- }),
549
- arcs: _arcs
550
- }))), /*#__PURE__*/_react["default"].createElement(_.Legend, (0, _extends2["default"])({}, legend, {
551
- series: _arcs,
552
- formatter: formatter
553
- }))) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_.ChartContainer, {
554
- width: width,
555
- height: height,
556
- marginLeft: marginLeft,
557
- marginTop: marginTop
558
- }, /*#__PURE__*/_react["default"].createElement("g", {
559
- style: {
560
- transition: "transform ease-in-out 0.3s",
561
- transform: 'translate(' + halfChartWidth + 'px, ' + halfChartHeight + 'px) rotate(' + rotate_ + "deg)"
562
- }
563
- }, _arcs.map(function (_ref8, index) {
564
- var id = _ref8.id,
565
- value = _ref8.value,
566
- series = _ref8.series,
567
- arc = _ref8.arc,
568
- innerRadius = _ref8.innerRadius,
569
- outerRadius = _ref8.outerRadius,
570
- dataIndex = _ref8.index;
571
- var current = index == currentIndex;
572
- var prev = index == prevIndex.current;
573
- var offset = current ? y : prev ? 1 - y : 0;
574
- var fillOpacity = animateColor ? 1 : current ? opacity / 100 : 1;
575
- var deltaHeighten = offset * heighten;
576
- var path = arc.innerRadius(innerRadius + deltaHeighten).outerRadius(outerRadius + deltaHeighten)(value);
577
- var pie = (0, _utils.getColorList)(series.color);
578
- var currentPie = animateColor ? (0, _utils.getColorList)(animateColor) : (0, _utils.getColorList)(series.color);
579
- var textPath = "",
580
- categoryTextStyle = {};
581
-
582
- if (categoryText && categoryText.show) {
583
- //如果有类目文本,则需要计算文字路径
584
- //let offsetWidth=decorate2.radiusWidth/2 + radiusWidthAdd/2; //当前文字需生成在装饰物内,故而半径需要减小
585
- var textArc = arc.innerRadius(outerRadius + (current ? gap : categoryText.gap)).outerRadius(outerRadius + (current ? gap : categoryText.gap))(value);
586
- var lastA = textArc.lastIndexOf('A');
587
- textPath = textArc.slice(0, lastA > 0 ? lastA : textArc.length); //文字路径
588
-
589
- categoryTextStyle = current ? animateCTS : categoryText.textStyle; //这里把textstyle拿出来
590
- }
591
-
592
- return /*#__PURE__*/_react["default"].createElement(_react.Fragment, {
593
- key: index
594
- }, /*#__PURE__*/_react["default"].createElement("path", {
595
- "data-index": dataIndex,
596
- onClick: onClick,
597
- onMouseEnter: onMouseEnter,
598
- onMouseLeave: onMouseLeave,
599
- d: path,
600
- stroke: show ? color : 'none',
601
- strokeWidth: show ? strokeWidth : '0',
602
- fill: 'url(#' + id + ')',
603
- fillOpacity: fillOpacity
604
- }), //装饰物2,产生于每个弧的外部
605
- decorate2 && decorate2.show && /*#__PURE__*/_react["default"].createElement("path", {
606
- "data-index": dataIndex,
607
- onClick: onClick,
608
- onMouseEnter: onMouseEnter,
609
- onMouseLeave: onMouseLeave,
610
- d: arc.innerRadius(outerRadius).outerRadius(outerRadius + decorate2.radiusWidth + (current ? radiusWidthAdd : 0))(value),
611
- stroke: show ? color : 'none',
612
- strokeWidth: show ? strokeWidth : '0',
613
- fill: 'url(#' + id + ')',
614
- fillOpacity: decorate2.opacity / 100
615
- }), //类目文本
616
- categoryText && categoryText.show && /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("path", {
617
- onClick: onClick,
618
- onMouseEnter: onMouseEnter,
619
- onMouseLeave: onMouseLeave,
620
- id: id + '_text_' + index,
621
- d: textPath,
622
- fill: "none",
623
- stroke: "none"
624
- }), /*#__PURE__*/_react["default"].createElement("text", {
625
- textAnchor: "middle",
626
- style: _objectSpread(_objectSpread({}, categoryTextStyle), {}, {
627
- fontWeight: categoryTextStyle.bold ? "bold" : "normal",
628
- fontStyle: categoryTextStyle.italic ? "italic" : "normal",
629
- pointerEvents: "none"
630
- }),
631
- fill: categoryTextStyle.color
632
- }, /*#__PURE__*/_react["default"].createElement("textPath", {
633
- startOffset: "50%",
634
- href: '#' + id + '_text_' + index
635
- }, _arcs[index].displayName || _arcs[index].fieldName))), /*#__PURE__*/_react["default"].createElement("defs", null, /*#__PURE__*/_react["default"].createElement(_LinearGradient["default"], {
636
- id: id,
637
- colors: current ? currentPie : pie,
638
- rotate: current ? animateColor ? animateColor.linear.angle + 180 : series.color.linear.angle + 180 : series.color.linear.angle + 180 // gradientUnits='objectBoundingBox'
639
-
640
- })));
641
- }), label && /*#__PURE__*/_react["default"].createElement(Label, {
642
- config: label,
643
- arcs: _arcs
644
- }), current && /*#__PURE__*/_react["default"].createElement("g", {
645
- fillOpacity: y,
646
- style: {
647
- transform: "rotate(" + -rotate_ + "deg)"
648
- }
649
- }, /*#__PURE__*/_react["default"].createElement(Current, {
650
- config: current,
651
- width: width,
652
- height: height,
653
- data: _arcs,
654
- currentIndex: +currentIndex
655
- })))), decorate && /*#__PURE__*/_react["default"].createElement(_.ConicalGradient, {
656
- width: width,
657
- height: height,
658
- centerX: halfChartWidth + marginLeft,
659
- centerY: halfChartHeight + marginTop,
660
- config: decorate,
661
- arcs: _arcs,
662
- radius: radius
663
- }), /*#__PURE__*/_react["default"].createElement(_.Legend, (0, _extends2["default"])({}, legend, {
664
- series: _arcs,
665
- formatter: formatter
666
- })));
667
- });
668
-
669
- var Current = function Current(_ref9) {
670
- var _ref9$config = _ref9.config,
671
- show = _ref9$config.show,
672
- gap = _ref9$config.gap,
673
- _ref9$config$name = _ref9$config.name,
674
- showName = _ref9$config$name.show,
675
- nameFont = _ref9$config$name.font,
676
- textBreak = _ref9$config$name.textBreak,
677
- _ref9$config$percent = _ref9$config.percent,
678
- showPercent = _ref9$config$percent.show,
679
- percentFont = _ref9$config$percent.font,
680
- precision = _ref9$config$percent.precision,
681
- _ref9$config$percent$ = _ref9$config$percent.translate,
682
- translatePercentX = _ref9$config$percent$.x,
683
- translatePercentY = _ref9$config$percent$.y,
684
- _ref9$config$value = _ref9$config.value,
685
- showValue = _ref9$config$value.show,
686
- valueFont = _ref9$config$value.font,
687
- _ref9$config$value$tr = _ref9$config$value.translate,
688
- translateValueX = _ref9$config$value$tr.x,
689
- translateValueY = _ref9$config$value$tr.y,
690
- _ref9$config$value$su = _ref9$config$value.suffix,
691
- showSuffix = _ref9$config$value$su.show,
692
- fontSize = _ref9$config$value$su.fontSize,
693
- text = _ref9$config$value$su.text,
694
- _ref9$config$value$su2 = _ref9$config$value$su.translate,
695
- translateSuffixX = _ref9$config$value$su2.x,
696
- translateSuffixY = _ref9$config$value$su2.y,
697
- width = _ref9.width,
698
- height = _ref9.height,
699
- data = _ref9.data,
700
- currentIndex = _ref9.currentIndex;
701
-
702
- var _data = (0, _react.useMemo)(function () {
703
- var legendDataWithPercent = (0, _utils.getDataWithPercent)(data, precision);
704
- return (0, _utils.sortPie)(legendDataWithPercent, '');
705
- }, [data, precision]);
706
-
707
- var currentData = _data[currentIndex];
708
- if (!currentData) return null;
709
- var displayName = currentData.displayName,
710
- fieldName = currentData.fieldName,
711
- value = currentData.value,
712
- percent = currentData.percent;
713
- var nameTemp = displayName ? displayName : fieldName; //类目名
714
-
715
- var nameList = [];
716
-
717
- if (textBreak) {
718
- //如果限制了首行字符,则切割组件
719
- while (nameTemp.length > textBreak) {
720
- nameList.push(nameTemp.slice(0, textBreak));
721
- nameTemp = nameTemp.slice(textBreak);
722
- }
723
- }
724
-
725
- nameList.push(nameTemp);
726
- var foreignStyle = {
727
- //foreignObject标签样式,
728
- width: width,
729
- height: height,
730
- transform: "translate(-".concat(width / 2, "px,-").concat(height / 2, "px)"),
731
- pointerEvents: "none"
732
- },
733
- boxStyle = {
734
- //弹性盒子样式,用于当前值的上下居中对齐等
735
- width: width,
736
- height: height,
737
- display: "flex",
738
- flexDirection: "column",
739
- justifyContent: "center",
740
- alignItems: "center"
741
- };
742
- return show && /*#__PURE__*/_react["default"].createElement("foreignObject", {
743
- style: foreignStyle
744
- }, /*#__PURE__*/_react["default"].createElement("div", {
745
- style: boxStyle
746
- }, //类目名称
747
- showName && /*#__PURE__*/_react["default"].createElement("div", {
748
- style: _objectSpread(_objectSpread({}, (0, _utils.getFontStyle)(nameFont)), {}, {
749
- margin: gap / 2 + "px 0",
750
- display: "flex",
751
- flexDirection: "column",
752
- alignItems: "center"
753
- })
754
- }, nameList.map(function (d, i) {
755
- return /*#__PURE__*/_react["default"].createElement("span", {
756
- key: i
757
- }, d);
758
- })), //真实值
759
- showValue && /*#__PURE__*/_react["default"].createElement("span", {
760
- style: _objectSpread(_objectSpread({}, (0, _utils.getFontStyle)(valueFont)), {}, {
761
- transform: "translate(" + translateValueX + "px," + translateValueY + "px)",
762
- margin: gap / 2 + "px 0"
763
- })
764
- }, value, showSuffix && text && /*#__PURE__*/_react["default"].createElement("span", {
765
- style: {
766
- transform: "translate(" + translateSuffixX + "px," + translateSuffixY + "px)",
767
- fontSize: fontSize
768
- }
769
- }, text)), //百分比值
770
- showPercent && /*#__PURE__*/_react["default"].createElement("span", {
771
- style: _objectSpread(_objectSpread({
772
- transform: "translate(" + translatePercentX + "px," + translatePercentY + "px)"
773
- }, (0, _utils.getFontStyle)(percentFont)), {}, {
774
- margin: gap / 2 + "px 0"
775
- })
776
- }, percent + '%')));
777
- };
778
-
779
- var Label = function Label(_ref10) {
780
- var _ref10$config = _ref10.config,
781
- _ref10$config$maxRadi = _ref10$config.maxRadius,
782
- maxRadius = _ref10$config$maxRadi === void 0 ? 0 : _ref10$config$maxRadi,
783
- lineLength = _ref10$config.lineLength,
784
- lineColor = _ref10$config.lineColor,
785
- distance = _ref10$config.distance,
786
- mode = _ref10$config.mode,
787
- show = _ref10$config.show,
788
- _ref10$config$transla = _ref10$config.translate,
789
- translateX = _ref10$config$transla.x,
790
- translateY = _ref10$config$transla.y,
791
- _ref10$config$name = _ref10$config.name,
792
- showName = _ref10$config$name.show,
793
- nameFont = _ref10$config$name.font,
794
- _ref10$config$value = _ref10$config.value,
795
- showValue = _ref10$config$value.show,
796
- valueFont = _ref10$config$value.font,
797
- _ref10$config$value$s = _ref10$config$value.suffix,
798
- showSuffix = _ref10$config$value$s.show,
799
- text = _ref10$config$value$s.text,
800
- suffixFontSize = _ref10$config$value$s.fontSize,
801
- _ref10$config$value$s2 = _ref10$config$value$s.translate,
802
- suffixTranslateX = _ref10$config$value$s2.x,
803
- suffixTranslateY = _ref10$config$value$s2.y,
804
- _ref10$config$value$s3 = _ref10$config$value.sameColor,
805
- valueSameColor = _ref10$config$value$s3 === void 0 ? false : _ref10$config$value$s3,
806
- _ref10$config$percent = _ref10$config.percent,
807
- showPercent = _ref10$config$percent.show,
808
- percentFont = _ref10$config$percent.font,
809
- precision = _ref10$config$percent.precision,
810
- _ref10$config$percent2 = _ref10$config$percent.sameColor,
811
- percentSameColor = _ref10$config$percent2 === void 0 ? false : _ref10$config$percent2,
812
- arcs = _ref10.arcs,
813
- animation = _ref10.animation;
814
-
815
- // const [labels, setLabels] = useState(null);
816
- // const [opacity, setOpacity] = useState(0);
817
- var _arcs = (0, _react.useMemo)(function () {
818
- return (0, _utils.getDataWithPercent)(arcs, precision);
819
- }, [arcs, precision]); // useEffect(() => {
820
- // if (labels) {
821
- // const children = [...labels.children];
822
- // const bbox = children.reduce(
823
- // (prev, current) => {
824
- // const { topRight, bottomRight, bottomLeft, topLeft } = prev;
825
- // const { x, y, height } = current.getBBox();
826
- // current._y1 = y;
827
- // current._y2 = y + height;
828
- // current._delta = 0;
829
- // if (x > 0) {
830
- // if (y > 0) {
831
- // bottomRight.push(current);
832
- // } else {
833
- // topRight.push(current);
834
- // }
835
- // } else {
836
- // if (y > 0) {
837
- // bottomLeft.push(current);
838
- // } else {
839
- // topLeft.push(current);
840
- // }
841
- // }
842
- // return prev;
843
- // },
844
- // {
845
- // topRight: [],
846
- // bottomRight: [],
847
- // bottomLeft: [],
848
- // topLeft: [],
849
- // }
850
- // );
851
- // console.log('bbox: ', bbox);
852
- // }
853
- // }, [labels]);
854
-
855
-
856
- return /*#__PURE__*/_react["default"].createElement("g", null, _arcs.map(function (_ref11, index) {
857
- var _ref11$series$color = _ref11.series.color,
858
- type = _ref11$series$color.type,
859
- pure = _ref11$series$color.pure,
860
- stops = _ref11$series$color.linear.stops,
861
- displayName = _ref11.displayName,
862
- value = _ref11.value,
863
- percent = _ref11.percent,
864
- arc = _ref11.arc,
865
- outerRadius = _ref11.outerRadius,
866
- actualIndex = _ref11.index;
867
-
868
- var _arc$centroid = arc.centroid(),
869
- _arc$centroid2 = (0, _slicedToArray2["default"])(_arc$centroid, 2),
870
- x = _arc$centroid2[0],
871
- y = _arc$centroid2[1];
872
-
873
- var midAngle = Math.atan2(y, x);
874
-
875
- var _getCoord = getCoord(midAngle, maxRadius ? maxRadius : outerRadius),
876
- _getCoord2 = (0, _slicedToArray2["default"])(_getCoord, 2),
877
- x1 = _getCoord2[0],
878
- y1 = _getCoord2[1];
879
-
880
- var radius = (maxRadius ? maxRadius : outerRadius) + distance;
881
-
882
- var _getCoord3 = getCoord(midAngle, radius),
883
- _getCoord4 = (0, _slicedToArray2["default"])(_getCoord3, 2),
884
- x2 = _getCoord4[0],
885
- y2 = _getCoord4[1];
886
-
887
- var direction = x2 < 0 ? -1 : 1;
888
- var x3 = x2 + lineLength * direction;
889
-
890
- var _x = x3 + (translateX + 6) * direction;
891
-
892
- var _showName = showName && displayName;
893
-
894
- var _showValue = showValue && (value || showSuffix);
895
-
896
- return show && (_showName || showPercent || showValue) && /*#__PURE__*/_react["default"].createElement("g", {
897
- key: index
898
- }, /*#__PURE__*/_react["default"].createElement("path", {
899
- className: animation ? _piechartModule["default"]['label-line'] : "",
900
- style: {
901
- animationDelay: "".concat(animation ? (actualIndex + 1) * 2000 - 800 : 0, "ms")
902
- },
903
- d: 'M' + x1 + ', ' + y1 + 'L' + x2 + ', ' + y2 + 'L' + x3 + ', ' + y2,
904
- stroke: lineColor ? lineColor : type == 'pure' ? pure : stops[0].color,
905
- fill: "none"
906
- }), /*#__PURE__*/_react["default"].createElement("text", {
907
- className: animation ? _piechartModule["default"]['label-text'] : "",
908
- style: {
909
- animationDelay: "".concat(animation ? (actualIndex + 1) * 2000 - 800 : 0, "ms")
910
- },
911
- x: _x,
912
- y: y2 + translateY,
913
- dominantBaseline: "middle",
914
- textAnchor: x3 >= 0 ? 'start' : 'end'
915
- }, _showName && /*#__PURE__*/_react["default"].createElement("tspan", {
916
- style: (0, _utils.getFontStyle)(nameFont, 'svg')
917
- }, displayName + (showValue || showPercent ? ':' : '')), showValue && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tspan", {
918
- x: !!(_showName && mode == 'vertical') ? _x : '',
919
- dx: valueDx(_showName, mode),
920
- dy: !!(_showName && mode == 'vertical') ? '1.5em' : '',
921
- style: (0, _utils.getFontStyle)(valueFont, 'svg')
922
- }, value), showSuffix && /*#__PURE__*/_react["default"].createElement("tspan", {
923
- style: _objectSpread(_objectSpread({}, (0, _utils.getFontStyle)(valueFont, 'svg')), {}, {
924
- fontSize: suffixFontSize
925
- }),
926
- dx: suffixTranslateX,
927
- dy: suffixTranslateY
928
- }, text)), showPercent && /*#__PURE__*/_react["default"].createElement("tspan", {
929
- x: percentX(_showName, _showValue, mode, _x),
930
- dx: percentDx(_showName, _showValue, mode),
931
- dy: percentDy(_showName, _showValue, mode) + (_showValue && showSuffix ? suffixTranslateY * -1 : ""),
932
- style: (0, _utils.getFontStyle)(percentFont, 'svg')
933
- }, (_showValue ? '(' : '') + percent + '%' + (_showValue ? ')' : ''))));
934
- }));
935
- };
936
-
937
- var RingLabel = function RingLabel(_ref12) {
938
- var _ref12$config = _ref12.config,
939
- _ref12$config$maxRadi = _ref12$config.maxRadius,
940
- maxRadius = _ref12$config$maxRadi === void 0 ? 0 : _ref12$config$maxRadi,
941
- lineLength = _ref12$config.lineLength,
942
- lineColor = _ref12$config.lineColor,
943
- distance = _ref12$config.distance,
944
- mode = _ref12$config.mode,
945
- show = _ref12$config.show,
946
- _ref12$config$transla = _ref12$config.translate,
947
- translateX = _ref12$config$transla.x,
948
- translateY = _ref12$config$transla.y,
949
- _ref12$config$name = _ref12$config.name,
950
- showName = _ref12$config$name.show,
951
- nameFont = _ref12$config$name.font,
952
- _ref12$config$value = _ref12$config.value,
953
- showValue = _ref12$config$value.show,
954
- valueFont = _ref12$config$value.font,
955
- _ref12$config$value$s = _ref12$config$value.suffix,
956
- showSuffix = _ref12$config$value$s.show,
957
- text = _ref12$config$value$s.text,
958
- suffixFontSize = _ref12$config$value$s.fontSize,
959
- _ref12$config$value$s2 = _ref12$config$value$s.translate,
960
- suffixTranslateX = _ref12$config$value$s2.x,
961
- suffixTranslateY = _ref12$config$value$s2.y,
962
- _ref12$config$value$s3 = _ref12$config$value.sameColor,
963
- valueSameColor = _ref12$config$value$s3 === void 0 ? false : _ref12$config$value$s3,
964
- _ref12$config$percent = _ref12$config.percent,
965
- showPercent = _ref12$config$percent.show,
966
- percentFont = _ref12$config$percent.font,
967
- precision = _ref12$config$percent.precision,
968
- _ref12$config$percent2 = _ref12$config$percent.sameColor,
969
- percentSameColor = _ref12$config$percent2 === void 0 ? false : _ref12$config$percent2,
970
- arcs = _ref12.arcs;
971
-
972
- var _arcs = (0, _react.useMemo)(function () {
973
- return (0, _utils.getDataWithPercent)(arcs, precision);
974
- }, [arcs, precision]);
975
-
976
- return /*#__PURE__*/_react["default"].createElement("g", null, _arcs.map(function (_ref13, index) {
977
- var _ref13$series$color = _ref13.series.color,
978
- type = _ref13$series$color.type,
979
- pure = _ref13$series$color.pure,
980
- stops = _ref13$series$color.linear.stops,
981
- realData = _ref13.data,
982
- displayName = _ref13.displayName,
983
- value = _ref13.value,
984
- percent = _ref13.percent,
985
- arc = _ref13.arc,
986
- outerRadius = _ref13.outerRadius,
987
- actualIndex = _ref13.index;
988
-
989
- var _arc$centroid3 = arc.centroid(),
990
- _arc$centroid4 = (0, _slicedToArray2["default"])(_arc$centroid3, 2),
991
- x = _arc$centroid4[0],
992
- y = _arc$centroid4[1];
993
-
994
- var midAngle = Math.atan2(y, x);
995
-
996
- var _getCoord5 = getCoord(midAngle, maxRadius ? maxRadius : outerRadius),
997
- _getCoord6 = (0, _slicedToArray2["default"])(_getCoord5, 2),
998
- x1 = _getCoord6[0],
999
- y1 = _getCoord6[1];
1000
-
1001
- var radius = (maxRadius ? maxRadius : outerRadius) + distance;
1002
-
1003
- var _getCoord7 = getCoord(midAngle, radius),
1004
- _getCoord8 = (0, _slicedToArray2["default"])(_getCoord7, 2),
1005
- x2 = _getCoord8[0],
1006
- y2 = _getCoord8[1];
1007
-
1008
- var directionX = x2 < 0 ? -1 : 1;
1009
- var directionY = y2 < 0 ? -1 : 1;
1010
- var x3 = x2 + lineLength * directionX;
1011
-
1012
- var _x = x3 + (translateX + 6) * directionX;
1013
-
1014
- var _showName = showName && displayName;
1015
-
1016
- var _showValue = showValue && (value || showSuffix);
1017
-
1018
- return show && (_showName || showPercent || _showValue) && /*#__PURE__*/_react["default"].createElement("g", {
1019
- key: index
1020
- }, /*#__PURE__*/_react["default"].createElement("path", {
1021
- className: _piechartModule["default"]['label-line'],
1022
- style: {
1023
- animationDelay: "".concat((actualIndex + 1) * 2000 - 800, "ms")
1024
- },
1025
- d: 'M' + x1 + ', ' + y1 + 'L' + x2 + ', ' + y2 + 'L' + x3 + ', ' + y2,
1026
- stroke: lineColor ? lineColor : type == 'pure' ? pure : stops[0].color,
1027
- fill: "none"
1028
- }), /*#__PURE__*/_react["default"].createElement("text", {
1029
- className: _piechartModule["default"]['label-text'],
1030
- style: {
1031
- animationDelay: "".concat((actualIndex + 1) * 2000 - 800, "ms")
1032
- },
1033
- x: mode == "horizontal" ? _x : x2,
1034
- y: y2 + translateY,
1035
- dominantBaseline: "middle",
1036
- textAnchor: x3 >= 0 ? 'start' : 'end'
1037
- }, _showName && /*#__PURE__*/_react["default"].createElement("tspan", {
1038
- dy: nameDy(_showValue, showPercent, mode, directionY),
1039
- style: (0, _utils.getFontStyle)(nameFont, 'svg')
1040
- }, displayName + (showValue || showPercent ? ':' : '')), _showValue && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tspan", {
1041
- x: _showName ? mode == "horizontal" ? '' : x2 : '',
1042
- dx: valueDx(_showName, mode),
1043
- dy: valueDy(_showName, mode, directionY),
1044
- style: (0, _utils.getFontStyle)(valueFont, 'svg')
1045
- }, realData.y), showSuffix && /*#__PURE__*/_react["default"].createElement("tspan", {
1046
- style: _objectSpread(_objectSpread({}, (0, _utils.getFontStyle)(valueFont, 'svg')), {}, {
1047
- fontSize: suffixFontSize
1048
- }),
1049
- dx: suffixTranslateX,
1050
- dy: suffixTranslateY
1051
- }, text)), showPercent && /*#__PURE__*/_react["default"].createElement("tspan", {
1052
- x: _showName ? _showValue ? '' : mode == "vertical" ? x2 : '' : '',
1053
- dx: percentDx(_showName, _showValue, mode),
1054
- dy: percentDy_(_showName, _showValue, mode, directionY) + (_showValue && showSuffix ? suffixTranslateY * -1 : ""),
1055
- style: (0, _utils.getFontStyle)(percentFont, 'svg')
1056
- }, (_showValue ? '(' : '') + percent + '%' + (_showValue ? ')' : ''))));
1057
- }));
1058
- };
1059
-
1060
- var _default = (0, _.Mapping)((0, _.Carousel)(Component));
1061
-
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
+
20
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
21
+
22
+ var _react = _interopRequireWildcard(require("react"));
23
+
24
+ var _ = require(".");
25
+
26
+ var _context = require("../context");
27
+
28
+ var _utils = require("../utils");
29
+
30
+ var _d3v = require("d3v7");
31
+
32
+ var _popmotion = require("popmotion");
33
+
34
+ var _LinearGradient = _interopRequireDefault(require("./LinearGradient"));
35
+
36
+ var _formatter = require("../formatter");
37
+
38
+ var _piechartModule = _interopRequireDefault(require("../css/piechart.module.css"));
39
+
40
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
41
+
42
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
43
+
44
+ var PI = Math.PI;
45
+ var defaultChart = {
46
+ outerRadius: 1,
47
+ innerRadius: 0,
48
+ cornerRadius: 0,
49
+ rose: false,
50
+ roseType: 'radius',
51
+ baseRadius: 0,
52
+ padAngle: 0
53
+ };
54
+ var defaultAngle = {
55
+ startAngle: 0,
56
+ endAngle: 360,
57
+ antiClockwise: false
58
+ };
59
+
60
+ var nameDy = function nameDy(showValue, showPercent, mode, dir) {
61
+ if (showValue || showPercent) {
62
+ if (mode == "vertical") {
63
+ return dir == 1 ? "1.1em" : "-2.6em";
64
+ } else {
65
+ return 0;
66
+ }
67
+ } else {
68
+ if (mode == "vertical") {
69
+ return dir * 1.1 + "em";
70
+ } else {
71
+ return 0;
72
+ }
73
+ }
74
+ };
75
+
76
+ var valueDy = function valueDy(value1, mode, dir) {
77
+ if (value1) {
78
+ if (mode == "vertical") {
79
+ return "1.5em";
80
+ } else {
81
+ return 0;
82
+ }
83
+ } else {
84
+ if (mode == "vertical") {
85
+ return dir == 1 ? "1.1em" : "-1.1em";
86
+ } else {
87
+ return 0;
88
+ }
89
+ }
90
+ };
91
+
92
+ var percentDy_ = function percentDy_(showName, showValue, mode, dir) {
93
+ if (showValue) {
94
+ return 0;
95
+ }
96
+
97
+ if (showName) {
98
+ if (mode == 'vertical') {
99
+ return '1.5em';
100
+ } else {
101
+ return 0;
102
+ }
103
+ } else {
104
+ if (mode == 'vertical') {
105
+ return dir * 1.1 + 'em';
106
+ } else {
107
+ return 0;
108
+ }
109
+ }
110
+ };
111
+
112
+ var percentX = function percentX(showName, showValue, mode, x) {
113
+ if (showValue) {
114
+ return '';
115
+ }
116
+
117
+ if (showName) {
118
+ if (mode == 'vertical') {
119
+ return x;
120
+ } else {
121
+ return '';
122
+ }
123
+ } else {
124
+ return x;
125
+ }
126
+ };
127
+
128
+ var percentDx = function percentDx(showName, showValue, mode) {
129
+ if (showValue) {
130
+ return '0.5em';
131
+ }
132
+
133
+ if (showName) {
134
+ if (mode == 'vertical') {
135
+ return 0;
136
+ } else {
137
+ return '0.5em';
138
+ }
139
+ } else {
140
+ return 0;
141
+ }
142
+ };
143
+
144
+ var percentDy = function percentDy(showName, showValue, mode) {
145
+ if (showValue) {
146
+ return 0;
147
+ }
148
+
149
+ if (showName) {
150
+ if (mode == 'vertical') {
151
+ return '1.5em';
152
+ } else {
153
+ return 0;
154
+ }
155
+ } else {
156
+ return 0;
157
+ }
158
+ };
159
+
160
+ var valueDx = function valueDx(showName, mode) {
161
+ if (!showName) {
162
+ return '';
163
+ }
164
+
165
+ if (mode == 'vertical') {
166
+ return '';
167
+ } else {
168
+ return '0.5em';
169
+ }
170
+ };
171
+
172
+ var getCoord = function getCoord(deg, radius) {
173
+ var x = Math.cos(deg) * radius,
174
+ y = Math.sin(deg) * radius;
175
+ return [x, y];
176
+ };
177
+
178
+ var getRoseRadius = function getRoseRadius(_ref) {
179
+ var innerRadius = _ref.innerRadius,
180
+ baseRadius = _ref.baseRadius;
181
+ return innerRadius + (1 - innerRadius) * baseRadius;
182
+ };
183
+
184
+ var getAngle = function getAngle(_ref2) {
185
+ var startAngle = _ref2.startAngle,
186
+ endAngle = _ref2.endAngle,
187
+ antiClockwise = _ref2.antiClockwise,
188
+ rest = (0, _objectWithoutProperties2["default"])(_ref2, ["startAngle", "endAngle", "antiClockwise"]);
189
+ if (antiClockwise) return _objectSpread(_objectSpread({}, rest), {}, {
190
+ startAngle: endAngle - 180,
191
+ endAngle: startAngle - 180
192
+ });
193
+ return _objectSpread(_objectSpread({}, rest), {}, {
194
+ startAngle: startAngle,
195
+ endAngle: endAngle
196
+ });
197
+ };
198
+
199
+ var getArc = function getArc(radius, _ref3, series) {
200
+ var _ref3$padAngle = _ref3.padAngle,
201
+ padAngle = _ref3$padAngle === void 0 ? 0 : _ref3$padAngle,
202
+ _ref3$innerRadius = _ref3.innerRadius,
203
+ innerRadius = _ref3$innerRadius === void 0 ? 0 : _ref3$innerRadius,
204
+ _ref3$outerRadius = _ref3.outerRadius,
205
+ outerRadius = _ref3$outerRadius === void 0 ? 1 : _ref3$outerRadius,
206
+ _ref3$cornerRadius = _ref3.cornerRadius,
207
+ cornerRadius = _ref3$cornerRadius === void 0 ? 0 : _ref3$cornerRadius,
208
+ _ref3$startAngle = _ref3.startAngle,
209
+ startAngle = _ref3$startAngle === void 0 ? 0 : _ref3$startAngle,
210
+ _ref3$endAngle = _ref3.endAngle,
211
+ endAngle = _ref3$endAngle === void 0 ? 360 : _ref3$endAngle,
212
+ rest = (0, _objectWithoutProperties2["default"])(_ref3, ["padAngle", "innerRadius", "outerRadius", "cornerRadius", "startAngle", "endAngle"]);
213
+ return _objectSpread(_objectSpread({}, rest), {}, {
214
+ type: 'pie',
215
+ fieldName: series.fieldName,
216
+ displayName: series.displayName || rest.data.s,
217
+ series: series,
218
+ innerRadius: innerRadius * radius,
219
+ outerRadius: outerRadius * radius,
220
+ arc: (0, _d3v.arc)().innerRadius(innerRadius * radius).outerRadius(outerRadius * radius).cornerRadius(cornerRadius).startAngle(startAngle).endAngle(endAngle).padAngle(padAngle)
221
+ });
222
+ };
223
+
224
+ var getCircleScale = function getCircleScale() {
225
+ var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : tick,
226
+ count = _ref4.count,
227
+ color = _ref4.color,
228
+ width = _ref4.width,
229
+ length = _ref4.length;
230
+
231
+ var radius = arguments.length > 1 ? arguments[1] : undefined;
232
+ var data = [],
233
+ arcs = [],
234
+ centroids = [];
235
+
236
+ for (var i = 0; i < count; i++) {
237
+ data.push(1);
238
+ }
239
+
240
+ var scaleData = (0, _d3v.pie)()(data);
241
+ scaleData.map(function (data) {
242
+ var _arc = (0, _d3v.arc)().innerRadius(radius + length / 2).outerRadius(radius + length / 2).startAngle(data.startAngle).endAngle(data.endAngle);
243
+
244
+ arcs.push(_arc());
245
+ centroids.push(_arc.centroid());
246
+ });
247
+ return /*#__PURE__*/_react["default"].createElement("g", null, centroids.map(function (center, index) {
248
+ var x = center[0],
249
+ y = center[1];
250
+ var rate = length / Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
251
+ return /*#__PURE__*/_react["default"].createElement("path", {
252
+ key: index,
253
+ d: "M".concat(x, ",").concat(y, "l").concat(x * rate, ",").concat(y * rate),
254
+ strokeWidth: width,
255
+ stroke: color
256
+ });
257
+ }));
258
+ };
259
+
260
+ var Component = /*#__PURE__*/(0, _react.memo)(function (_ref5) {
261
+ var _ref5$config = _ref5.config,
262
+ _ref5$config$chart = _ref5$config.chart,
263
+ _ref5$config$chart$di = _ref5$config$chart.dimension.chartDimension,
264
+ width = _ref5$config$chart$di.width,
265
+ height = _ref5$config$chart$di.height,
266
+ label = _ref5$config$chart.label,
267
+ _ref5$config$chart$le = _ref5$config$chart.legend,
268
+ _ref5$config$chart$le2 = _ref5$config$chart$le.formatter,
269
+ formatter = _ref5$config$chart$le2 === void 0 ? _formatter.pieLegendFormatter : _ref5$config$chart$le2,
270
+ legend = (0, _objectWithoutProperties2["default"])(_ref5$config$chart$le, ["formatter"]),
271
+ _ref5$config$chart$ma = _ref5$config$chart.margin,
272
+ marginLeft = _ref5$config$chart$ma.marginLeft,
273
+ marginTop = _ref5$config$chart$ma.marginTop,
274
+ _ref5$config$fan = _ref5$config.fan;
275
+ _ref5$config$fan = _ref5$config$fan === void 0 ? {} : _ref5$config$fan;
276
+ var _ref5$config$fan$char = _ref5$config$fan.chart,
277
+ chart = _ref5$config$fan$char === void 0 ? defaultChart : _ref5$config$fan$char,
278
+ _ref5$config$fan$char2 = _ref5$config$fan.chart,
279
+ _ref5$config$fan$char3 = _ref5$config$fan$char2.outerRadius,
280
+ outerRadius = _ref5$config$fan$char3 === void 0 ? defaultChart.outerRadius : _ref5$config$fan$char3,
281
+ padAngle = _ref5$config$fan$char2.padAngle,
282
+ _ref5$config$fan$angl = _ref5$config$fan.angle,
283
+ angle = _ref5$config$fan$angl === void 0 ? defaultAngle : _ref5$config$fan$angl,
284
+ _ref5$config$fan$stro = _ref5$config$fan.stroke;
285
+ _ref5$config$fan$stro = _ref5$config$fan$stro === void 0 ? {
286
+ show: false
287
+ } : _ref5$config$fan$stro;
288
+ var show = _ref5$config$fan$stro.show,
289
+ strokeWidth = _ref5$config$fan$stro.strokeWidth,
290
+ color = _ref5$config$fan$stro.color,
291
+ decorate = _ref5$config$fan.decorate,
292
+ decorate2 = _ref5$config$fan.decorate2,
293
+ categoryText = _ref5$config$fan.categoryText,
294
+ outerDecorate = _ref5$config$fan.outerDecorate,
295
+ current = _ref5$config$fan.current,
296
+ order = _ref5$config.order,
297
+ series = _ref5$config.series,
298
+ _ref5$config$animatio = _ref5$config.animation,
299
+ on = _ref5$config$animatio.on,
300
+ _ref5$config$animatio2 = _ref5$config$animatio.current,
301
+ _ref5$config$animatio3 = _ref5$config$animatio2.heighten,
302
+ heighten = _ref5$config$animatio3 === void 0 ? 0 : _ref5$config$animatio3,
303
+ _ref5$config$animatio4 = _ref5$config$animatio2.opacity,
304
+ opacity = _ref5$config$animatio4 === void 0 ? 0 : _ref5$config$animatio4,
305
+ _ref5$config$animatio5 = _ref5$config$animatio2.width,
306
+ radiusWidthAdd = _ref5$config$animatio5 === void 0 ? 0 : _ref5$config$animatio5,
307
+ animateColor = _ref5$config$animatio2.color,
308
+ animateCTS = _ref5$config$animatio2.textStyle,
309
+ _ref5$config$animatio6 = _ref5$config$animatio2.gap,
310
+ gap = _ref5$config$animatio6 === void 0 ? 0 : _ref5$config$animatio6,
311
+ _ref5$config$animatio7 = _ref5$config$animatio.rotate,
312
+ rotate = _ref5$config$animatio7 === void 0 ? 0 : _ref5$config$animatio7,
313
+ _ref5$state = _ref5.state,
314
+ currentIndex = _ref5$state.currentIndex,
315
+ trigger = _ref5$state.trigger,
316
+ onEvent = _ref5.onEvent,
317
+ _ref5$data = _ref5.data,
318
+ data = _ref5$data === void 0 ? [] : _ref5$data;
319
+ var prevIndex = (0, _react.useRef)(null);
320
+ var legendPrecision = legend.config.percent.precision;
321
+
322
+ var _useContext = (0, _react.useContext)(_context.chartContext),
323
+ id = _useContext.id,
324
+ chartWidth = _useContext.width,
325
+ chartHeight = _useContext.height,
326
+ triggerOnRelative = _useContext.triggerOnRelative,
327
+ onEmit = _useContext.onEmit;
328
+
329
+ var _useState = (0, _react.useState)(1),
330
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
331
+ y = _useState2[0],
332
+ setY = _useState2[1];
333
+
334
+ var radius = Math.min(chartWidth, chartHeight) / 2 * outerRadius;
335
+ var arcsFunc = (0, _react.useMemo)(function () {
336
+ var _getAngle = getAngle(angle),
337
+ _getAngle$startAngle = _getAngle.startAngle,
338
+ startAngle = _getAngle$startAngle === void 0 ? 0 : _getAngle$startAngle,
339
+ _getAngle$endAngle = _getAngle.endAngle,
340
+ endAngle = _getAngle$endAngle === void 0 ? 360 : _getAngle$endAngle;
341
+
342
+ var arcsFunc = (0, _d3v.pie)().startAngle(startAngle * PI / 180).endAngle(endAngle * PI / 180).value(function (d) {
343
+ return d.y;
344
+ });
345
+ return arcsFunc;
346
+ }, [angle]);
347
+ var arcs = (0, _react.useMemo)(function () {
348
+ var _chart = Object.assign(defaultChart, chart);
349
+
350
+ var innerRadius = _chart.innerRadius,
351
+ outerRadius = _chart.outerRadius,
352
+ rose = _chart.rose,
353
+ cornerRadius = _chart.cornerRadius,
354
+ padAngle = _chart.padAngle,
355
+ roseType = _chart.roseType;
356
+
357
+ var _padAngle = padAngle * Math.PI / 180;
358
+
359
+ switch (order) {
360
+ case '':
361
+ arcsFunc.sort(null);
362
+ break;
363
+
364
+ case 'desc':
365
+ arcsFunc.sort(function (a, b) {
366
+ return b.y - a.y;
367
+ });
368
+ break;
369
+
370
+ case 'asc':
371
+ arcsFunc.sort(function (a, b) {
372
+ return a.y - b.y;
373
+ });
374
+ break;
375
+ }
376
+
377
+ var arcs = arcsFunc(data);
378
+ var legendDataWithPercent = (0, _utils.getDataWithPercent)(arcs, legendPrecision);
379
+
380
+ var _legendDataWithPercent = (0, _utils.sortPie)(legendDataWithPercent, order);
381
+
382
+ if (rose) {
383
+ var domain = (0, _d3v.extent)(_legendDataWithPercent, function (d) {
384
+ return d.value;
385
+ });
386
+ var roseRadius = getRoseRadius(_chart);
387
+ var scaler = (0, _d3v.scaleLinear)().domain(domain).range([roseRadius, 1]);
388
+
389
+ var _angle = PI * 2 / _legendDataWithPercent.length;
390
+
391
+ return _legendDataWithPercent.map(function (_ref6, index) {
392
+ var startAngle = _ref6.startAngle,
393
+ endAngle = _ref6.endAngle,
394
+ arc = (0, _objectWithoutProperties2["default"])(_ref6, ["startAngle", "endAngle"]);
395
+ return _objectSpread(_objectSpread({}, arc), {}, {
396
+ id: id + '_linear_' + index,
397
+ startAngle: roseType == 'area' ? _angle * index : startAngle,
398
+ endAngle: roseType == 'area' ? _angle * (index + 1) : endAngle,
399
+ cornerRadius: cornerRadius,
400
+ padAngle: _padAngle,
401
+ innerRadius: innerRadius,
402
+ outerRadius: scaler(arc.value)
403
+ });
404
+ });
405
+ }
406
+
407
+ return _legendDataWithPercent.map(function (arc, index) {
408
+ return _objectSpread(_objectSpread({}, arc), {}, {
409
+ id: id + '_linear_' + index,
410
+ cornerRadius: cornerRadius,
411
+ padAngle: _padAngle,
412
+ innerRadius: innerRadius,
413
+ outerRadius: outerRadius
414
+ });
415
+ });
416
+ }, [data, arcsFunc, chart, legendPrecision]);
417
+
418
+ var _arcs = (0, _react.useMemo)(function () {
419
+ var seriesLength = series.size;
420
+ if (!seriesLength) return [];
421
+
422
+ var _series = (0, _toConsumableArray2["default"])(series.values());
423
+
424
+ return arcs.map(function (arc, index) {
425
+ return getArc(radius, arc, _series[index]);
426
+ });
427
+ }, [series, arcs, radius]);
428
+
429
+ var onClick = (0, _react.useCallback)(function (e) {
430
+ return onEvent({
431
+ currentIndex: +e.currentTarget.dataset.index,
432
+ type: 'onClick'
433
+ });
434
+ }, [onEvent]);
435
+ var onMouseEnter = (0, _react.useCallback)(function (e) {
436
+ return onEvent({
437
+ currentIndex: +e.currentTarget.dataset.index,
438
+ type: 'onMouseEnter'
439
+ });
440
+ }, [onEvent]);
441
+ var onMouseLeave = (0, _react.useCallback)(function (e) {
442
+ return onEvent({
443
+ currentIndex: +e.currentTarget.dataset.index,
444
+ type: 'onMouseLeave'
445
+ });
446
+ }, [onEvent]);
447
+ (0, _react.useLayoutEffect)(function () {
448
+ var animation;
449
+
450
+ if (!!on) {
451
+ animation = (0, _popmotion.animate)({
452
+ from: 0,
453
+ to: 1,
454
+ duration: 500,
455
+ ease: _popmotion.linear,
456
+ onPlay: function onPlay() {},
457
+ onUpdate: function onUpdate(v) {
458
+ setY(v);
459
+ },
460
+ onComplete: function onComplete() {
461
+ var _data = arcs[+currentIndex].data;
462
+ triggerOnRelative(_data);
463
+ onEmit('carousel', _data);
464
+ }
465
+ });
466
+ } else {
467
+ if (currentIndex !== null && trigger === 'onClick') {
468
+ var _data = arcs[+currentIndex].data;
469
+ triggerOnRelative(_data);
470
+ onEmit(trigger, _data);
471
+ }
472
+ }
473
+
474
+ return function () {
475
+ prevIndex.current = currentIndex;
476
+ animation && animation.stop();
477
+ animation = null;
478
+ };
479
+ }, [JSON.stringify(arcs), on, currentIndex, trigger, onEmit, triggerOnRelative]);
480
+ var halfChartWidth = chartWidth / 2;
481
+ var halfChartHeight = chartHeight / 2;
482
+ var rotate_ = decorate2 ? -(arcs[+currentIndex].startAngle + arcs[+currentIndex].endAngle) * 90 / Math.PI + rotate : 0;
483
+ var maxRadius = 0;
484
+
485
+ _arcs.map(function (d) {
486
+ maxRadius = Math.max(maxRadius, d.outerRadius);
487
+ });
488
+
489
+ var centerRadius = 0.5 * maxRadius + 0.5 * _arcs[0].innerRadius;
490
+ return outerDecorate ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_.ChartContainer //用于生成甜甜圈图,判断依据是外环装饰这个配置项(outerDecorate)
491
+ , {
492
+ width: width,
493
+ height: height,
494
+ marginLeft: marginLeft,
495
+ marginTop: marginTop
496
+ }, /*#__PURE__*/_react["default"].createElement("g", {
497
+ style: {
498
+ transition: "transform ease-in-out 0.3s",
499
+ transform: 'translate(' + halfChartWidth + 'px, ' + halfChartHeight + 'px) rotate(' + rotate_ + "deg)"
500
+ }
501
+ }, //用于生成外环装饰的刻度
502
+ outerDecorate.tick.show && getCircleScale(outerDecorate.tick, maxRadius), /*#__PURE__*/_react["default"].createElement("circle", {
503
+ //外环装饰
504
+ cx: "0",
505
+ cy: "0",
506
+ r: maxRadius + 2,
507
+ fill: "none",
508
+ stroke: outerDecorate.color,
509
+ strokeWidth: outerDecorate.width
510
+ }), _arcs.map(function (_ref7, index) {
511
+ var id = _ref7.id,
512
+ value = _ref7.value,
513
+ series = _ref7.series,
514
+ arc = _ref7.arc,
515
+ innerRadius = _ref7.innerRadius,
516
+ outerRadius = _ref7.outerRadius,
517
+ dataIndex = _ref7.index;
518
+ var arcWidth = outerRadius - innerRadius;
519
+ var path = arc.innerRadius(centerRadius).outerRadius(centerRadius)(value);
520
+ var dashLength = Math.ceil(Math.PI * centerRadius * 2 / _arcs.length);
521
+ var pie = (0, _utils.getColorList)(series.color);
522
+ return /*#__PURE__*/_react["default"].createElement(_react.Fragment, {
523
+ key: index
524
+ }, /*#__PURE__*/_react["default"].createElement("path", {
525
+ className: _piechartModule["default"]['inner-arc'],
526
+ style: {
527
+ strokeDasharray: "".concat(dashLength, ",").concat(2 * dashLength),
528
+ strokeDashoffset: dashLength,
529
+ animationDelay: "".concat(index * 2000, "ms")
530
+ },
531
+ "data-index": dataIndex,
532
+ onClick: onClick,
533
+ onMouseEnter: onMouseEnter,
534
+ onMouseLeave: onMouseLeave,
535
+ d: path.split("L")[0],
536
+ stroke: 'url(#' + id + ')',
537
+ strokeWidth: arcWidth,
538
+ fill: "none"
539
+ }), /*#__PURE__*/_react["default"].createElement("defs", null, /*#__PURE__*/_react["default"].createElement(_LinearGradient["default"], {
540
+ id: id,
541
+ colors: pie,
542
+ rotate: series.color.linear.angle + 180 // gradientUnits='objectBoundingBox'
543
+
544
+ })));
545
+ }), label && /*#__PURE__*/_react["default"].createElement(RingLabel, {
546
+ config: _objectSpread(_objectSpread({}, label), {}, {
547
+ maxRadius: maxRadius + 2
548
+ }),
549
+ arcs: _arcs
550
+ }))), /*#__PURE__*/_react["default"].createElement(_.Legend, (0, _extends2["default"])({}, legend, {
551
+ series: _arcs,
552
+ formatter: formatter
553
+ }))) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_.ChartContainer, {
554
+ width: width,
555
+ height: height,
556
+ marginLeft: marginLeft,
557
+ marginTop: marginTop
558
+ }, /*#__PURE__*/_react["default"].createElement("g", {
559
+ style: {
560
+ transition: "transform ease-in-out 0.3s",
561
+ transform: 'translate(' + halfChartWidth + 'px, ' + halfChartHeight + 'px) rotate(' + rotate_ + "deg)"
562
+ }
563
+ }, _arcs.map(function (_ref8, index) {
564
+ var id = _ref8.id,
565
+ value = _ref8.value,
566
+ series = _ref8.series,
567
+ arc = _ref8.arc,
568
+ innerRadius = _ref8.innerRadius,
569
+ outerRadius = _ref8.outerRadius,
570
+ dataIndex = _ref8.index;
571
+ var current = index == currentIndex;
572
+ var prev = index == prevIndex.current;
573
+ var offset = current ? y : prev ? 1 - y : 0;
574
+ var fillOpacity = animateColor ? 1 : current ? opacity / 100 : 1;
575
+ var deltaHeighten = offset * heighten;
576
+ var path = arc.innerRadius(innerRadius + deltaHeighten).outerRadius(outerRadius + deltaHeighten)(value);
577
+ var pie = (0, _utils.getColorList)(series.color);
578
+ var currentPie = animateColor ? (0, _utils.getColorList)(animateColor) : (0, _utils.getColorList)(series.color);
579
+ var textPath = "",
580
+ categoryTextStyle = {};
581
+
582
+ if (categoryText && categoryText.show) {
583
+ //如果有类目文本,则需要计算文字路径
584
+ //let offsetWidth=decorate2.radiusWidth/2 + radiusWidthAdd/2; //当前文字需生成在装饰物内,故而半径需要减小
585
+ var textArc = arc.innerRadius(outerRadius + (current ? gap : categoryText.gap)).outerRadius(outerRadius + (current ? gap : categoryText.gap))(value);
586
+ var lastA = textArc.lastIndexOf('A');
587
+ textPath = textArc.slice(0, lastA > 0 ? lastA : textArc.length); //文字路径
588
+
589
+ categoryTextStyle = current ? animateCTS : categoryText.textStyle; //这里把textstyle拿出来
590
+ }
591
+
592
+ return /*#__PURE__*/_react["default"].createElement(_react.Fragment, {
593
+ key: index
594
+ }, /*#__PURE__*/_react["default"].createElement("path", {
595
+ "data-index": dataIndex,
596
+ onClick: onClick,
597
+ onMouseEnter: onMouseEnter,
598
+ onMouseLeave: onMouseLeave,
599
+ d: path,
600
+ stroke: show ? color : 'none',
601
+ strokeWidth: show ? strokeWidth : '0',
602
+ fill: 'url(#' + id + ')',
603
+ fillOpacity: fillOpacity
604
+ }), //装饰物2,产生于每个弧的外部
605
+ decorate2 && decorate2.show && /*#__PURE__*/_react["default"].createElement("path", {
606
+ "data-index": dataIndex,
607
+ onClick: onClick,
608
+ onMouseEnter: onMouseEnter,
609
+ onMouseLeave: onMouseLeave,
610
+ d: arc.innerRadius(outerRadius).outerRadius(outerRadius + decorate2.radiusWidth + (current ? radiusWidthAdd : 0))(value),
611
+ stroke: show ? color : 'none',
612
+ strokeWidth: show ? strokeWidth : '0',
613
+ fill: 'url(#' + id + ')',
614
+ fillOpacity: decorate2.opacity / 100
615
+ }), //类目文本
616
+ categoryText && categoryText.show && /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("path", {
617
+ onClick: onClick,
618
+ onMouseEnter: onMouseEnter,
619
+ onMouseLeave: onMouseLeave,
620
+ id: id + '_text_' + index,
621
+ d: textPath,
622
+ fill: "none",
623
+ stroke: "none"
624
+ }), /*#__PURE__*/_react["default"].createElement("text", {
625
+ textAnchor: "middle",
626
+ style: _objectSpread(_objectSpread({}, categoryTextStyle), {}, {
627
+ fontWeight: categoryTextStyle.bold ? "bold" : "normal",
628
+ fontStyle: categoryTextStyle.italic ? "italic" : "normal",
629
+ pointerEvents: "none"
630
+ }),
631
+ fill: categoryTextStyle.color
632
+ }, /*#__PURE__*/_react["default"].createElement("textPath", {
633
+ startOffset: "50%",
634
+ href: '#' + id + '_text_' + index
635
+ }, _arcs[index].displayName || _arcs[index].fieldName))), /*#__PURE__*/_react["default"].createElement("defs", null, /*#__PURE__*/_react["default"].createElement(_LinearGradient["default"], {
636
+ id: id,
637
+ colors: current ? currentPie : pie,
638
+ rotate: current ? animateColor ? animateColor.linear.angle + 180 : series.color.linear.angle + 180 : series.color.linear.angle + 180 // gradientUnits='objectBoundingBox'
639
+
640
+ })));
641
+ }), label && /*#__PURE__*/_react["default"].createElement(Label, {
642
+ config: label,
643
+ arcs: _arcs
644
+ }), current && /*#__PURE__*/_react["default"].createElement("g", {
645
+ fillOpacity: y,
646
+ style: {
647
+ transform: "rotate(" + -rotate_ + "deg)"
648
+ }
649
+ }, /*#__PURE__*/_react["default"].createElement(Current, {
650
+ config: current,
651
+ width: width,
652
+ height: height,
653
+ data: _arcs,
654
+ currentIndex: +currentIndex
655
+ })))), decorate && /*#__PURE__*/_react["default"].createElement(_.ConicalGradient, {
656
+ width: width,
657
+ height: height,
658
+ centerX: halfChartWidth + marginLeft,
659
+ centerY: halfChartHeight + marginTop,
660
+ config: decorate,
661
+ arcs: _arcs,
662
+ radius: radius
663
+ }), /*#__PURE__*/_react["default"].createElement(_.Legend, (0, _extends2["default"])({}, legend, {
664
+ series: _arcs,
665
+ formatter: formatter
666
+ })));
667
+ });
668
+
669
+ var Current = function Current(_ref9) {
670
+ var _ref9$config = _ref9.config,
671
+ show = _ref9$config.show,
672
+ gap = _ref9$config.gap,
673
+ _ref9$config$name = _ref9$config.name,
674
+ showName = _ref9$config$name.show,
675
+ nameFont = _ref9$config$name.font,
676
+ textBreak = _ref9$config$name.textBreak,
677
+ _ref9$config$percent = _ref9$config.percent,
678
+ showPercent = _ref9$config$percent.show,
679
+ percentFont = _ref9$config$percent.font,
680
+ precision = _ref9$config$percent.precision,
681
+ _ref9$config$percent$ = _ref9$config$percent.translate,
682
+ translatePercentX = _ref9$config$percent$.x,
683
+ translatePercentY = _ref9$config$percent$.y,
684
+ _ref9$config$value = _ref9$config.value,
685
+ showValue = _ref9$config$value.show,
686
+ valueFont = _ref9$config$value.font,
687
+ _ref9$config$value$tr = _ref9$config$value.translate,
688
+ translateValueX = _ref9$config$value$tr.x,
689
+ translateValueY = _ref9$config$value$tr.y,
690
+ _ref9$config$value$su = _ref9$config$value.suffix,
691
+ showSuffix = _ref9$config$value$su.show,
692
+ fontSize = _ref9$config$value$su.fontSize,
693
+ text = _ref9$config$value$su.text,
694
+ _ref9$config$value$su2 = _ref9$config$value$su.translate,
695
+ translateSuffixX = _ref9$config$value$su2.x,
696
+ translateSuffixY = _ref9$config$value$su2.y,
697
+ width = _ref9.width,
698
+ height = _ref9.height,
699
+ data = _ref9.data,
700
+ currentIndex = _ref9.currentIndex;
701
+
702
+ var _data = (0, _react.useMemo)(function () {
703
+ var legendDataWithPercent = (0, _utils.getDataWithPercent)(data, precision);
704
+ return (0, _utils.sortPie)(legendDataWithPercent, '');
705
+ }, [data, precision]);
706
+
707
+ var currentData = _data[currentIndex];
708
+ if (!currentData) return null;
709
+ var displayName = currentData.displayName,
710
+ fieldName = currentData.fieldName,
711
+ value = currentData.value,
712
+ percent = currentData.percent;
713
+ var nameTemp = displayName ? displayName : fieldName; //类目名
714
+
715
+ var nameList = [];
716
+
717
+ if (textBreak) {
718
+ //如果限制了首行字符,则切割组件
719
+ while (nameTemp.length > textBreak) {
720
+ nameList.push(nameTemp.slice(0, textBreak));
721
+ nameTemp = nameTemp.slice(textBreak);
722
+ }
723
+ }
724
+
725
+ nameList.push(nameTemp);
726
+ var foreignStyle = {
727
+ //foreignObject标签样式,
728
+ width: width,
729
+ height: height,
730
+ transform: "translate(-".concat(width / 2, "px,-").concat(height / 2, "px)"),
731
+ pointerEvents: "none"
732
+ },
733
+ boxStyle = {
734
+ //弹性盒子样式,用于当前值的上下居中对齐等
735
+ width: width,
736
+ height: height,
737
+ display: "flex",
738
+ flexDirection: "column",
739
+ justifyContent: "center",
740
+ alignItems: "center"
741
+ };
742
+ return show && /*#__PURE__*/_react["default"].createElement("foreignObject", {
743
+ style: foreignStyle
744
+ }, /*#__PURE__*/_react["default"].createElement("div", {
745
+ style: boxStyle
746
+ }, //类目名称
747
+ showName && /*#__PURE__*/_react["default"].createElement("div", {
748
+ style: _objectSpread(_objectSpread({}, (0, _utils.getFontStyle)(nameFont)), {}, {
749
+ margin: gap / 2 + "px 0",
750
+ display: "flex",
751
+ flexDirection: "column",
752
+ alignItems: "center"
753
+ })
754
+ }, nameList.map(function (d, i) {
755
+ return /*#__PURE__*/_react["default"].createElement("span", {
756
+ key: i
757
+ }, d);
758
+ })), //真实值
759
+ showValue && /*#__PURE__*/_react["default"].createElement("span", {
760
+ style: _objectSpread(_objectSpread({}, (0, _utils.getFontStyle)(valueFont)), {}, {
761
+ transform: "translate(" + translateValueX + "px," + translateValueY + "px)",
762
+ margin: gap / 2 + "px 0"
763
+ })
764
+ }, value, showSuffix && text && /*#__PURE__*/_react["default"].createElement("span", {
765
+ style: {
766
+ transform: "translate(" + translateSuffixX + "px," + translateSuffixY + "px)",
767
+ fontSize: fontSize
768
+ }
769
+ }, text)), //百分比值
770
+ showPercent && /*#__PURE__*/_react["default"].createElement("span", {
771
+ style: _objectSpread(_objectSpread({
772
+ transform: "translate(" + translatePercentX + "px," + translatePercentY + "px)"
773
+ }, (0, _utils.getFontStyle)(percentFont)), {}, {
774
+ margin: gap / 2 + "px 0"
775
+ })
776
+ }, percent + '%')));
777
+ };
778
+
779
+ var Label = function Label(_ref10) {
780
+ var _ref10$config = _ref10.config,
781
+ _ref10$config$maxRadi = _ref10$config.maxRadius,
782
+ maxRadius = _ref10$config$maxRadi === void 0 ? 0 : _ref10$config$maxRadi,
783
+ lineLength = _ref10$config.lineLength,
784
+ lineColor = _ref10$config.lineColor,
785
+ distance = _ref10$config.distance,
786
+ mode = _ref10$config.mode,
787
+ show = _ref10$config.show,
788
+ _ref10$config$transla = _ref10$config.translate,
789
+ translateX = _ref10$config$transla.x,
790
+ translateY = _ref10$config$transla.y,
791
+ _ref10$config$name = _ref10$config.name,
792
+ showName = _ref10$config$name.show,
793
+ nameFont = _ref10$config$name.font,
794
+ _ref10$config$value = _ref10$config.value,
795
+ showValue = _ref10$config$value.show,
796
+ valueFont = _ref10$config$value.font,
797
+ _ref10$config$value$s = _ref10$config$value.suffix,
798
+ showSuffix = _ref10$config$value$s.show,
799
+ text = _ref10$config$value$s.text,
800
+ suffixFontSize = _ref10$config$value$s.fontSize,
801
+ _ref10$config$value$s2 = _ref10$config$value$s.translate,
802
+ suffixTranslateX = _ref10$config$value$s2.x,
803
+ suffixTranslateY = _ref10$config$value$s2.y,
804
+ _ref10$config$value$s3 = _ref10$config$value.sameColor,
805
+ valueSameColor = _ref10$config$value$s3 === void 0 ? false : _ref10$config$value$s3,
806
+ _ref10$config$percent = _ref10$config.percent,
807
+ showPercent = _ref10$config$percent.show,
808
+ percentFont = _ref10$config$percent.font,
809
+ precision = _ref10$config$percent.precision,
810
+ _ref10$config$percent2 = _ref10$config$percent.sameColor,
811
+ percentSameColor = _ref10$config$percent2 === void 0 ? false : _ref10$config$percent2,
812
+ arcs = _ref10.arcs,
813
+ animation = _ref10.animation;
814
+
815
+ // const [labels, setLabels] = useState(null);
816
+ // const [opacity, setOpacity] = useState(0);
817
+ var _arcs = (0, _react.useMemo)(function () {
818
+ return (0, _utils.getDataWithPercent)(arcs, precision);
819
+ }, [arcs, precision]); // useEffect(() => {
820
+ // if (labels) {
821
+ // const children = [...labels.children];
822
+ // const bbox = children.reduce(
823
+ // (prev, current) => {
824
+ // const { topRight, bottomRight, bottomLeft, topLeft } = prev;
825
+ // const { x, y, height } = current.getBBox();
826
+ // current._y1 = y;
827
+ // current._y2 = y + height;
828
+ // current._delta = 0;
829
+ // if (x > 0) {
830
+ // if (y > 0) {
831
+ // bottomRight.push(current);
832
+ // } else {
833
+ // topRight.push(current);
834
+ // }
835
+ // } else {
836
+ // if (y > 0) {
837
+ // bottomLeft.push(current);
838
+ // } else {
839
+ // topLeft.push(current);
840
+ // }
841
+ // }
842
+ // return prev;
843
+ // },
844
+ // {
845
+ // topRight: [],
846
+ // bottomRight: [],
847
+ // bottomLeft: [],
848
+ // topLeft: [],
849
+ // }
850
+ // );
851
+ // console.log('bbox: ', bbox);
852
+ // }
853
+ // }, [labels]);
854
+
855
+
856
+ return /*#__PURE__*/_react["default"].createElement("g", null, _arcs.map(function (_ref11, index) {
857
+ var _ref11$series$color = _ref11.series.color,
858
+ type = _ref11$series$color.type,
859
+ pure = _ref11$series$color.pure,
860
+ stops = _ref11$series$color.linear.stops,
861
+ displayName = _ref11.displayName,
862
+ value = _ref11.value,
863
+ percent = _ref11.percent,
864
+ arc = _ref11.arc,
865
+ outerRadius = _ref11.outerRadius,
866
+ actualIndex = _ref11.index;
867
+
868
+ var _arc$centroid = arc.centroid(),
869
+ _arc$centroid2 = (0, _slicedToArray2["default"])(_arc$centroid, 2),
870
+ x = _arc$centroid2[0],
871
+ y = _arc$centroid2[1];
872
+
873
+ var midAngle = Math.atan2(y, x);
874
+
875
+ var _getCoord = getCoord(midAngle, maxRadius ? maxRadius : outerRadius),
876
+ _getCoord2 = (0, _slicedToArray2["default"])(_getCoord, 2),
877
+ x1 = _getCoord2[0],
878
+ y1 = _getCoord2[1];
879
+
880
+ var radius = (maxRadius ? maxRadius : outerRadius) + distance;
881
+
882
+ var _getCoord3 = getCoord(midAngle, radius),
883
+ _getCoord4 = (0, _slicedToArray2["default"])(_getCoord3, 2),
884
+ x2 = _getCoord4[0],
885
+ y2 = _getCoord4[1];
886
+
887
+ var direction = x2 < 0 ? -1 : 1;
888
+ var x3 = x2 + lineLength * direction;
889
+
890
+ var _x = x3 + (translateX + 6) * direction;
891
+
892
+ var _showName = showName && displayName;
893
+
894
+ var _showValue = showValue && (value || showSuffix);
895
+
896
+ return show && (_showName || showPercent || showValue) && /*#__PURE__*/_react["default"].createElement("g", {
897
+ key: index
898
+ }, /*#__PURE__*/_react["default"].createElement("path", {
899
+ className: animation ? _piechartModule["default"]['label-line'] : "",
900
+ style: {
901
+ animationDelay: "".concat(animation ? (actualIndex + 1) * 2000 - 800 : 0, "ms")
902
+ },
903
+ d: 'M' + x1 + ', ' + y1 + 'L' + x2 + ', ' + y2 + 'L' + x3 + ', ' + y2,
904
+ stroke: lineColor ? lineColor : type == 'pure' ? pure : stops[0].color,
905
+ fill: "none"
906
+ }), /*#__PURE__*/_react["default"].createElement("text", {
907
+ className: animation ? _piechartModule["default"]['label-text'] : "",
908
+ style: {
909
+ animationDelay: "".concat(animation ? (actualIndex + 1) * 2000 - 800 : 0, "ms")
910
+ },
911
+ x: _x,
912
+ y: y2 + translateY,
913
+ dominantBaseline: "middle",
914
+ textAnchor: x3 >= 0 ? 'start' : 'end'
915
+ }, _showName && /*#__PURE__*/_react["default"].createElement("tspan", {
916
+ style: (0, _utils.getFontStyle)(nameFont, 'svg')
917
+ }, displayName + (showValue || showPercent ? ':' : '')), showValue && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tspan", {
918
+ x: !!(_showName && mode == 'vertical') ? _x : '',
919
+ dx: valueDx(_showName, mode),
920
+ dy: !!(_showName && mode == 'vertical') ? '1.5em' : '',
921
+ style: (0, _utils.getFontStyle)(valueFont, 'svg')
922
+ }, value), showSuffix && /*#__PURE__*/_react["default"].createElement("tspan", {
923
+ style: _objectSpread(_objectSpread({}, (0, _utils.getFontStyle)(valueFont, 'svg')), {}, {
924
+ fontSize: suffixFontSize
925
+ }),
926
+ dx: suffixTranslateX,
927
+ dy: suffixTranslateY
928
+ }, text)), showPercent && /*#__PURE__*/_react["default"].createElement("tspan", {
929
+ x: percentX(_showName, _showValue, mode, _x),
930
+ dx: percentDx(_showName, _showValue, mode),
931
+ dy: percentDy(_showName, _showValue, mode) + (_showValue && showSuffix ? suffixTranslateY * -1 : ""),
932
+ style: (0, _utils.getFontStyle)(percentFont, 'svg')
933
+ }, (_showValue ? '(' : '') + percent + '%' + (_showValue ? ')' : ''))));
934
+ }));
935
+ };
936
+
937
+ var RingLabel = function RingLabel(_ref12) {
938
+ var _ref12$config = _ref12.config,
939
+ _ref12$config$maxRadi = _ref12$config.maxRadius,
940
+ maxRadius = _ref12$config$maxRadi === void 0 ? 0 : _ref12$config$maxRadi,
941
+ lineLength = _ref12$config.lineLength,
942
+ lineColor = _ref12$config.lineColor,
943
+ distance = _ref12$config.distance,
944
+ mode = _ref12$config.mode,
945
+ show = _ref12$config.show,
946
+ _ref12$config$transla = _ref12$config.translate,
947
+ translateX = _ref12$config$transla.x,
948
+ translateY = _ref12$config$transla.y,
949
+ _ref12$config$name = _ref12$config.name,
950
+ showName = _ref12$config$name.show,
951
+ nameFont = _ref12$config$name.font,
952
+ _ref12$config$value = _ref12$config.value,
953
+ showValue = _ref12$config$value.show,
954
+ valueFont = _ref12$config$value.font,
955
+ _ref12$config$value$s = _ref12$config$value.suffix,
956
+ showSuffix = _ref12$config$value$s.show,
957
+ text = _ref12$config$value$s.text,
958
+ suffixFontSize = _ref12$config$value$s.fontSize,
959
+ _ref12$config$value$s2 = _ref12$config$value$s.translate,
960
+ suffixTranslateX = _ref12$config$value$s2.x,
961
+ suffixTranslateY = _ref12$config$value$s2.y,
962
+ _ref12$config$value$s3 = _ref12$config$value.sameColor,
963
+ valueSameColor = _ref12$config$value$s3 === void 0 ? false : _ref12$config$value$s3,
964
+ _ref12$config$percent = _ref12$config.percent,
965
+ showPercent = _ref12$config$percent.show,
966
+ percentFont = _ref12$config$percent.font,
967
+ precision = _ref12$config$percent.precision,
968
+ _ref12$config$percent2 = _ref12$config$percent.sameColor,
969
+ percentSameColor = _ref12$config$percent2 === void 0 ? false : _ref12$config$percent2,
970
+ arcs = _ref12.arcs;
971
+
972
+ var _arcs = (0, _react.useMemo)(function () {
973
+ return (0, _utils.getDataWithPercent)(arcs, precision);
974
+ }, [arcs, precision]);
975
+
976
+ return /*#__PURE__*/_react["default"].createElement("g", null, _arcs.map(function (_ref13, index) {
977
+ var _ref13$series$color = _ref13.series.color,
978
+ type = _ref13$series$color.type,
979
+ pure = _ref13$series$color.pure,
980
+ stops = _ref13$series$color.linear.stops,
981
+ realData = _ref13.data,
982
+ displayName = _ref13.displayName,
983
+ value = _ref13.value,
984
+ percent = _ref13.percent,
985
+ arc = _ref13.arc,
986
+ outerRadius = _ref13.outerRadius,
987
+ actualIndex = _ref13.index;
988
+
989
+ var _arc$centroid3 = arc.centroid(),
990
+ _arc$centroid4 = (0, _slicedToArray2["default"])(_arc$centroid3, 2),
991
+ x = _arc$centroid4[0],
992
+ y = _arc$centroid4[1];
993
+
994
+ var midAngle = Math.atan2(y, x);
995
+
996
+ var _getCoord5 = getCoord(midAngle, maxRadius ? maxRadius : outerRadius),
997
+ _getCoord6 = (0, _slicedToArray2["default"])(_getCoord5, 2),
998
+ x1 = _getCoord6[0],
999
+ y1 = _getCoord6[1];
1000
+
1001
+ var radius = (maxRadius ? maxRadius : outerRadius) + distance;
1002
+
1003
+ var _getCoord7 = getCoord(midAngle, radius),
1004
+ _getCoord8 = (0, _slicedToArray2["default"])(_getCoord7, 2),
1005
+ x2 = _getCoord8[0],
1006
+ y2 = _getCoord8[1];
1007
+
1008
+ var directionX = x2 < 0 ? -1 : 1;
1009
+ var directionY = y2 < 0 ? -1 : 1;
1010
+ var x3 = x2 + lineLength * directionX;
1011
+
1012
+ var _x = x3 + (translateX + 6) * directionX;
1013
+
1014
+ var _showName = showName && displayName;
1015
+
1016
+ var _showValue = showValue && (value || showSuffix);
1017
+
1018
+ return show && (_showName || showPercent || _showValue) && /*#__PURE__*/_react["default"].createElement("g", {
1019
+ key: index
1020
+ }, /*#__PURE__*/_react["default"].createElement("path", {
1021
+ className: _piechartModule["default"]['label-line'],
1022
+ style: {
1023
+ animationDelay: "".concat((actualIndex + 1) * 2000 - 800, "ms")
1024
+ },
1025
+ d: 'M' + x1 + ', ' + y1 + 'L' + x2 + ', ' + y2 + 'L' + x3 + ', ' + y2,
1026
+ stroke: lineColor ? lineColor : type == 'pure' ? pure : stops[0].color,
1027
+ fill: "none"
1028
+ }), /*#__PURE__*/_react["default"].createElement("text", {
1029
+ className: _piechartModule["default"]['label-text'],
1030
+ style: {
1031
+ animationDelay: "".concat((actualIndex + 1) * 2000 - 800, "ms")
1032
+ },
1033
+ x: mode == "horizontal" ? _x : x2,
1034
+ y: y2 + translateY,
1035
+ dominantBaseline: "middle",
1036
+ textAnchor: x3 >= 0 ? 'start' : 'end'
1037
+ }, _showName && /*#__PURE__*/_react["default"].createElement("tspan", {
1038
+ dy: nameDy(_showValue, showPercent, mode, directionY),
1039
+ style: (0, _utils.getFontStyle)(nameFont, 'svg')
1040
+ }, displayName + (showValue || showPercent ? ':' : '')), _showValue && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tspan", {
1041
+ x: _showName ? mode == "horizontal" ? '' : x2 : '',
1042
+ dx: valueDx(_showName, mode),
1043
+ dy: valueDy(_showName, mode, directionY),
1044
+ style: (0, _utils.getFontStyle)(valueFont, 'svg')
1045
+ }, realData.y), showSuffix && /*#__PURE__*/_react["default"].createElement("tspan", {
1046
+ style: _objectSpread(_objectSpread({}, (0, _utils.getFontStyle)(valueFont, 'svg')), {}, {
1047
+ fontSize: suffixFontSize
1048
+ }),
1049
+ dx: suffixTranslateX,
1050
+ dy: suffixTranslateY
1051
+ }, text)), showPercent && /*#__PURE__*/_react["default"].createElement("tspan", {
1052
+ x: _showName ? _showValue ? '' : mode == "vertical" ? x2 : '' : '',
1053
+ dx: percentDx(_showName, _showValue, mode),
1054
+ dy: percentDy_(_showName, _showValue, mode, directionY) + (_showValue && showSuffix ? suffixTranslateY * -1 : ""),
1055
+ style: (0, _utils.getFontStyle)(percentFont, 'svg')
1056
+ }, (_showValue ? '(' : '') + percent + '%' + (_showValue ? ')' : ''))));
1057
+ }));
1058
+ };
1059
+
1060
+ var _default = (0, _.Mapping)((0, _.Carousel)(Component));
1061
+
1062
1062
  exports["default"] = _default;