@easyv/charts 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,1062 +1,1070 @@
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
+ nameColor = _ref9$config$name.sameColor,
676
+ nameFont = _ref9$config$name.font,
677
+ textBreak = _ref9$config$name.textBreak,
678
+ _ref9$config$percent = _ref9$config.percent,
679
+ showPercent = _ref9$config$percent.show,
680
+ percentColor = _ref9$config$percent.sameColor,
681
+ percentFont = _ref9$config$percent.font,
682
+ precision = _ref9$config$percent.precision,
683
+ _ref9$config$percent$ = _ref9$config$percent.translate,
684
+ translatePercentX = _ref9$config$percent$.x,
685
+ translatePercentY = _ref9$config$percent$.y,
686
+ _ref9$config$value = _ref9$config.value,
687
+ showValue = _ref9$config$value.show,
688
+ valueColor = _ref9$config$value.sameColor,
689
+ valueFont = _ref9$config$value.font,
690
+ _ref9$config$value$tr = _ref9$config$value.translate,
691
+ translateValueX = _ref9$config$value$tr.x,
692
+ translateValueY = _ref9$config$value$tr.y,
693
+ _ref9$config$value$su = _ref9$config$value.suffix,
694
+ showSuffix = _ref9$config$value$su.show,
695
+ fontSize = _ref9$config$value$su.fontSize,
696
+ text = _ref9$config$value$su.text,
697
+ _ref9$config$value$su2 = _ref9$config$value$su.translate,
698
+ translateSuffixX = _ref9$config$value$su2.x,
699
+ translateSuffixY = _ref9$config$value$su2.y,
700
+ width = _ref9.width,
701
+ height = _ref9.height,
702
+ data = _ref9.data,
703
+ currentIndex = _ref9.currentIndex;
704
+
705
+ var _data = (0, _react.useMemo)(function () {
706
+ var legendDataWithPercent = (0, _utils.getDataWithPercent)(data, precision);
707
+ return (0, _utils.sortPie)(legendDataWithPercent, '');
708
+ }, [data, precision]);
709
+
710
+ var currentData = _data[currentIndex];
711
+ if (!currentData) return null;
712
+ var displayName = currentData.displayName,
713
+ fieldName = currentData.fieldName,
714
+ value = currentData.value,
715
+ percent = currentData.percent;
716
+ var nameTemp = displayName ? displayName : fieldName; //类目名
717
+
718
+ var nameList = [];
719
+
720
+ if (textBreak) {
721
+ //如果限制了首行字符,则切割组件
722
+ while (nameTemp.length > textBreak) {
723
+ nameList.push(nameTemp.slice(0, textBreak));
724
+ nameTemp = nameTemp.slice(textBreak);
725
+ }
726
+ }
727
+
728
+ nameList.push(nameTemp);
729
+ var foreignStyle = {
730
+ //foreignObject标签样式,
731
+ width: width,
732
+ height: height,
733
+ transform: "translate(-".concat(width / 2, "px,-").concat(height / 2, "px)"),
734
+ pointerEvents: 'none'
735
+ },
736
+ boxStyle = {
737
+ //弹性盒子样式,用于当前值的上下居中对齐等
738
+ width: width,
739
+ height: height,
740
+ display: 'flex',
741
+ flexDirection: 'column',
742
+ justifyContent: 'center',
743
+ alignItems: 'center'
744
+ };
745
+ var seriesColor = currentData.series.color;
746
+ seriesColor = seriesColor.type == 'pure' ? seriesColor.pure : seriesColor.linear.stops[0].color;
747
+ return show && /*#__PURE__*/_react["default"].createElement("foreignObject", {
748
+ style: foreignStyle
749
+ }, /*#__PURE__*/_react["default"].createElement("div", {
750
+ style: boxStyle
751
+ }, //类目名称
752
+ showName && /*#__PURE__*/_react["default"].createElement("div", {
753
+ style: _objectSpread(_objectSpread({}, (0, _utils.getFontStyle)(nameFont)), {}, {
754
+ margin: gap / 2 + 'px 0',
755
+ display: 'flex',
756
+ flexDirection: 'column',
757
+ alignItems: 'center',
758
+ color: nameColor ? seriesColor : nameFont.color
759
+ })
760
+ }, nameList.map(function (d, i) {
761
+ return /*#__PURE__*/_react["default"].createElement("span", {
762
+ key: i
763
+ }, d);
764
+ })), //真实值
765
+ showValue && /*#__PURE__*/_react["default"].createElement("span", {
766
+ style: _objectSpread(_objectSpread({}, (0, _utils.getFontStyle)(valueFont)), {}, {
767
+ transform: 'translate(' + translateValueX + 'px,' + translateValueY + 'px)',
768
+ margin: gap / 2 + 'px 0',
769
+ color: valueColor ? seriesColor : valueFont.color
770
+ })
771
+ }, value, showSuffix && text && /*#__PURE__*/_react["default"].createElement("span", {
772
+ style: {
773
+ transform: 'translate(' + translateSuffixX + 'px,' + translateSuffixY + 'px)',
774
+ fontSize: fontSize
775
+ }
776
+ }, text)), //百分比值
777
+ showPercent && /*#__PURE__*/_react["default"].createElement("span", {
778
+ style: _objectSpread(_objectSpread({
779
+ transform: 'translate(' + translatePercentX + 'px,' + translatePercentY + 'px)'
780
+ }, (0, _utils.getFontStyle)(percentFont)), {}, {
781
+ margin: gap / 2 + 'px 0',
782
+ color: percentColor ? seriesColor : percentFont.color
783
+ })
784
+ }, percent + '%')));
785
+ };
786
+
787
+ var Label = function Label(_ref10) {
788
+ var _ref10$config = _ref10.config,
789
+ _ref10$config$maxRadi = _ref10$config.maxRadius,
790
+ maxRadius = _ref10$config$maxRadi === void 0 ? 0 : _ref10$config$maxRadi,
791
+ lineLength = _ref10$config.lineLength,
792
+ lineColor = _ref10$config.lineColor,
793
+ distance = _ref10$config.distance,
794
+ mode = _ref10$config.mode,
795
+ show = _ref10$config.show,
796
+ _ref10$config$transla = _ref10$config.translate,
797
+ translateX = _ref10$config$transla.x,
798
+ translateY = _ref10$config$transla.y,
799
+ _ref10$config$name = _ref10$config.name,
800
+ showName = _ref10$config$name.show,
801
+ nameFont = _ref10$config$name.font,
802
+ _ref10$config$value = _ref10$config.value,
803
+ showValue = _ref10$config$value.show,
804
+ valueFont = _ref10$config$value.font,
805
+ _ref10$config$value$s = _ref10$config$value.suffix,
806
+ showSuffix = _ref10$config$value$s.show,
807
+ text = _ref10$config$value$s.text,
808
+ suffixFontSize = _ref10$config$value$s.fontSize,
809
+ _ref10$config$value$s2 = _ref10$config$value$s.translate,
810
+ suffixTranslateX = _ref10$config$value$s2.x,
811
+ suffixTranslateY = _ref10$config$value$s2.y,
812
+ _ref10$config$value$s3 = _ref10$config$value.sameColor,
813
+ valueSameColor = _ref10$config$value$s3 === void 0 ? false : _ref10$config$value$s3,
814
+ _ref10$config$percent = _ref10$config.percent,
815
+ showPercent = _ref10$config$percent.show,
816
+ percentFont = _ref10$config$percent.font,
817
+ precision = _ref10$config$percent.precision,
818
+ _ref10$config$percent2 = _ref10$config$percent.sameColor,
819
+ percentSameColor = _ref10$config$percent2 === void 0 ? false : _ref10$config$percent2,
820
+ arcs = _ref10.arcs,
821
+ animation = _ref10.animation;
822
+
823
+ // const [labels, setLabels] = useState(null);
824
+ // const [opacity, setOpacity] = useState(0);
825
+ var _arcs = (0, _react.useMemo)(function () {
826
+ return (0, _utils.getDataWithPercent)(arcs, precision);
827
+ }, [arcs, precision]); // useEffect(() => {
828
+ // if (labels) {
829
+ // const children = [...labels.children];
830
+ // const bbox = children.reduce(
831
+ // (prev, current) => {
832
+ // const { topRight, bottomRight, bottomLeft, topLeft } = prev;
833
+ // const { x, y, height } = current.getBBox();
834
+ // current._y1 = y;
835
+ // current._y2 = y + height;
836
+ // current._delta = 0;
837
+ // if (x > 0) {
838
+ // if (y > 0) {
839
+ // bottomRight.push(current);
840
+ // } else {
841
+ // topRight.push(current);
842
+ // }
843
+ // } else {
844
+ // if (y > 0) {
845
+ // bottomLeft.push(current);
846
+ // } else {
847
+ // topLeft.push(current);
848
+ // }
849
+ // }
850
+ // return prev;
851
+ // },
852
+ // {
853
+ // topRight: [],
854
+ // bottomRight: [],
855
+ // bottomLeft: [],
856
+ // topLeft: [],
857
+ // }
858
+ // );
859
+ // console.log('bbox: ', bbox);
860
+ // }
861
+ // }, [labels]);
862
+
863
+
864
+ return /*#__PURE__*/_react["default"].createElement("g", null, _arcs.map(function (_ref11, index) {
865
+ var _ref11$series$color = _ref11.series.color,
866
+ type = _ref11$series$color.type,
867
+ pure = _ref11$series$color.pure,
868
+ stops = _ref11$series$color.linear.stops,
869
+ displayName = _ref11.displayName,
870
+ value = _ref11.value,
871
+ percent = _ref11.percent,
872
+ arc = _ref11.arc,
873
+ outerRadius = _ref11.outerRadius,
874
+ actualIndex = _ref11.index;
875
+
876
+ var _arc$centroid = arc.centroid(),
877
+ _arc$centroid2 = (0, _slicedToArray2["default"])(_arc$centroid, 2),
878
+ x = _arc$centroid2[0],
879
+ y = _arc$centroid2[1];
880
+
881
+ var midAngle = Math.atan2(y, x);
882
+
883
+ var _getCoord = getCoord(midAngle, maxRadius ? maxRadius : outerRadius),
884
+ _getCoord2 = (0, _slicedToArray2["default"])(_getCoord, 2),
885
+ x1 = _getCoord2[0],
886
+ y1 = _getCoord2[1];
887
+
888
+ var radius = (maxRadius ? maxRadius : outerRadius) + distance;
889
+
890
+ var _getCoord3 = getCoord(midAngle, radius),
891
+ _getCoord4 = (0, _slicedToArray2["default"])(_getCoord3, 2),
892
+ x2 = _getCoord4[0],
893
+ y2 = _getCoord4[1];
894
+
895
+ var direction = x2 < 0 ? -1 : 1;
896
+ var x3 = x2 + lineLength * direction;
897
+
898
+ var _x = x3 + (translateX + 6) * direction;
899
+
900
+ var _showName = showName && displayName;
901
+
902
+ var _showValue = showValue && (value || showSuffix);
903
+
904
+ return show && (_showName || showPercent || showValue) && /*#__PURE__*/_react["default"].createElement("g", {
905
+ key: index
906
+ }, /*#__PURE__*/_react["default"].createElement("path", {
907
+ className: animation ? _piechartModule["default"]['label-line'] : '',
908
+ style: {
909
+ animationDelay: "".concat(animation ? (actualIndex + 1) * 2000 - 800 : 0, "ms")
910
+ },
911
+ d: 'M' + x1 + ', ' + y1 + 'L' + x2 + ', ' + y2 + 'L' + x3 + ', ' + y2,
912
+ stroke: lineColor ? lineColor : type == 'pure' ? pure : stops[0].color,
913
+ fill: "none"
914
+ }), /*#__PURE__*/_react["default"].createElement("text", {
915
+ className: animation ? _piechartModule["default"]['label-text'] : '',
916
+ style: {
917
+ animationDelay: "".concat(animation ? (actualIndex + 1) * 2000 - 800 : 0, "ms")
918
+ },
919
+ x: _x,
920
+ y: y2 + translateY,
921
+ dominantBaseline: "middle",
922
+ textAnchor: x3 >= 0 ? 'start' : 'end'
923
+ }, _showName && /*#__PURE__*/_react["default"].createElement("tspan", {
924
+ style: (0, _utils.getFontStyle)(nameFont, 'svg')
925
+ }, displayName + (showValue || showPercent ? ':' : '')), showValue && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tspan", {
926
+ x: !!(_showName && mode == 'vertical') ? _x : '',
927
+ dx: valueDx(_showName, mode),
928
+ dy: !!(_showName && mode == 'vertical') ? '1.5em' : '',
929
+ style: (0, _utils.getFontStyle)(valueFont, 'svg')
930
+ }, value), showSuffix && /*#__PURE__*/_react["default"].createElement("tspan", {
931
+ style: _objectSpread(_objectSpread({}, (0, _utils.getFontStyle)(valueFont, 'svg')), {}, {
932
+ fontSize: suffixFontSize
933
+ }),
934
+ dx: suffixTranslateX,
935
+ dy: suffixTranslateY
936
+ }, text)), showPercent && /*#__PURE__*/_react["default"].createElement("tspan", {
937
+ x: percentX(_showName, _showValue, mode, _x),
938
+ dx: percentDx(_showName, _showValue, mode),
939
+ dy: percentDy(_showName, _showValue, mode) + (_showValue && showSuffix ? suffixTranslateY * -1 : ''),
940
+ style: (0, _utils.getFontStyle)(percentFont, 'svg')
941
+ }, (_showValue ? '(' : '') + percent + '%' + (_showValue ? ')' : ''))));
942
+ }));
943
+ };
944
+
945
+ var RingLabel = function RingLabel(_ref12) {
946
+ var _ref12$config = _ref12.config,
947
+ _ref12$config$maxRadi = _ref12$config.maxRadius,
948
+ maxRadius = _ref12$config$maxRadi === void 0 ? 0 : _ref12$config$maxRadi,
949
+ lineLength = _ref12$config.lineLength,
950
+ lineColor = _ref12$config.lineColor,
951
+ distance = _ref12$config.distance,
952
+ mode = _ref12$config.mode,
953
+ show = _ref12$config.show,
954
+ _ref12$config$transla = _ref12$config.translate,
955
+ translateX = _ref12$config$transla.x,
956
+ translateY = _ref12$config$transla.y,
957
+ _ref12$config$name = _ref12$config.name,
958
+ showName = _ref12$config$name.show,
959
+ nameFont = _ref12$config$name.font,
960
+ _ref12$config$value = _ref12$config.value,
961
+ showValue = _ref12$config$value.show,
962
+ valueFont = _ref12$config$value.font,
963
+ _ref12$config$value$s = _ref12$config$value.suffix,
964
+ showSuffix = _ref12$config$value$s.show,
965
+ text = _ref12$config$value$s.text,
966
+ suffixFontSize = _ref12$config$value$s.fontSize,
967
+ _ref12$config$value$s2 = _ref12$config$value$s.translate,
968
+ suffixTranslateX = _ref12$config$value$s2.x,
969
+ suffixTranslateY = _ref12$config$value$s2.y,
970
+ _ref12$config$value$s3 = _ref12$config$value.sameColor,
971
+ valueSameColor = _ref12$config$value$s3 === void 0 ? false : _ref12$config$value$s3,
972
+ _ref12$config$percent = _ref12$config.percent,
973
+ showPercent = _ref12$config$percent.show,
974
+ percentFont = _ref12$config$percent.font,
975
+ precision = _ref12$config$percent.precision,
976
+ _ref12$config$percent2 = _ref12$config$percent.sameColor,
977
+ percentSameColor = _ref12$config$percent2 === void 0 ? false : _ref12$config$percent2,
978
+ arcs = _ref12.arcs;
979
+
980
+ var _arcs = (0, _react.useMemo)(function () {
981
+ return (0, _utils.getDataWithPercent)(arcs, precision);
982
+ }, [arcs, precision]);
983
+
984
+ return /*#__PURE__*/_react["default"].createElement("g", null, _arcs.map(function (_ref13, index) {
985
+ var _ref13$series$color = _ref13.series.color,
986
+ type = _ref13$series$color.type,
987
+ pure = _ref13$series$color.pure,
988
+ stops = _ref13$series$color.linear.stops,
989
+ realData = _ref13.data,
990
+ displayName = _ref13.displayName,
991
+ value = _ref13.value,
992
+ percent = _ref13.percent,
993
+ arc = _ref13.arc,
994
+ outerRadius = _ref13.outerRadius,
995
+ actualIndex = _ref13.index;
996
+
997
+ var _arc$centroid3 = arc.centroid(),
998
+ _arc$centroid4 = (0, _slicedToArray2["default"])(_arc$centroid3, 2),
999
+ x = _arc$centroid4[0],
1000
+ y = _arc$centroid4[1];
1001
+
1002
+ var midAngle = Math.atan2(y, x);
1003
+
1004
+ var _getCoord5 = getCoord(midAngle, maxRadius ? maxRadius : outerRadius),
1005
+ _getCoord6 = (0, _slicedToArray2["default"])(_getCoord5, 2),
1006
+ x1 = _getCoord6[0],
1007
+ y1 = _getCoord6[1];
1008
+
1009
+ var radius = (maxRadius ? maxRadius : outerRadius) + distance;
1010
+
1011
+ var _getCoord7 = getCoord(midAngle, radius),
1012
+ _getCoord8 = (0, _slicedToArray2["default"])(_getCoord7, 2),
1013
+ x2 = _getCoord8[0],
1014
+ y2 = _getCoord8[1];
1015
+
1016
+ var directionX = x2 < 0 ? -1 : 1;
1017
+ var directionY = y2 < 0 ? -1 : 1;
1018
+ var x3 = x2 + lineLength * directionX;
1019
+
1020
+ var _x = x3 + (translateX + 6) * directionX;
1021
+
1022
+ var _showName = showName && displayName;
1023
+
1024
+ var _showValue = showValue && (value || showSuffix);
1025
+
1026
+ return show && (_showName || showPercent || _showValue) && /*#__PURE__*/_react["default"].createElement("g", {
1027
+ key: index
1028
+ }, /*#__PURE__*/_react["default"].createElement("path", {
1029
+ className: _piechartModule["default"]['label-line'],
1030
+ style: {
1031
+ animationDelay: "".concat((actualIndex + 1) * 2000 - 800, "ms")
1032
+ },
1033
+ d: 'M' + x1 + ', ' + y1 + 'L' + x2 + ', ' + y2 + 'L' + x3 + ', ' + y2,
1034
+ stroke: lineColor ? lineColor : type == 'pure' ? pure : stops[0].color,
1035
+ fill: "none"
1036
+ }), /*#__PURE__*/_react["default"].createElement("text", {
1037
+ className: _piechartModule["default"]['label-text'],
1038
+ style: {
1039
+ animationDelay: "".concat((actualIndex + 1) * 2000 - 800, "ms")
1040
+ },
1041
+ x: mode == 'horizontal' ? _x : x2,
1042
+ y: y2 + translateY,
1043
+ dominantBaseline: "middle",
1044
+ textAnchor: x3 >= 0 ? 'start' : 'end'
1045
+ }, _showName && /*#__PURE__*/_react["default"].createElement("tspan", {
1046
+ dy: nameDy(_showValue, showPercent, mode, directionY),
1047
+ style: (0, _utils.getFontStyle)(nameFont, 'svg')
1048
+ }, displayName + (showValue || showPercent ? ':' : '')), _showValue && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tspan", {
1049
+ x: _showName ? mode == 'horizontal' ? '' : x2 : '',
1050
+ dx: valueDx(_showName, mode),
1051
+ dy: valueDy(_showName, mode, directionY),
1052
+ style: (0, _utils.getFontStyle)(valueFont, 'svg')
1053
+ }, realData.y), showSuffix && /*#__PURE__*/_react["default"].createElement("tspan", {
1054
+ style: _objectSpread(_objectSpread({}, (0, _utils.getFontStyle)(valueFont, 'svg')), {}, {
1055
+ fontSize: suffixFontSize
1056
+ }),
1057
+ dx: suffixTranslateX,
1058
+ dy: suffixTranslateY
1059
+ }, text)), showPercent && /*#__PURE__*/_react["default"].createElement("tspan", {
1060
+ x: _showName ? _showValue ? '' : mode == 'vertical' ? x2 : '' : '',
1061
+ dx: percentDx(_showName, _showValue, mode),
1062
+ dy: percentDy_(_showName, _showValue, mode, directionY) + (_showValue && showSuffix ? suffixTranslateY * -1 : ''),
1063
+ style: (0, _utils.getFontStyle)(percentFont, 'svg')
1064
+ }, (_showValue ? '(' : '') + percent + '%' + (_showValue ? ')' : ''))));
1065
+ }));
1066
+ };
1067
+
1068
+ var _default = (0, _.Mapping)((0, _.Carousel)(Component));
1069
+
1062
1070
  exports["default"] = _default;