@easyv/charts 1.10.8 → 1.10.10

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.
@@ -261,15 +261,20 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
261
261
  }, [tickName, JSON.stringify(originData)]);
262
262
  var showTooltip = !!(tooltipData && tooltipData.length && (auto || manual));
263
263
  var isVertical = axisX.direction === "vertical";
264
- var indicatorWidth = indicator.width * (control ? axisX.controlStep : axisX.step) / 100;
265
- var position = axisX.scaler(tickName) - indicatorWidth / 2;
264
+ var axisStep = control ? axisX.controlStep : axisX.step;
265
+ var safeAxisStep = Number.isFinite(axisStep) ? axisStep : 0;
266
+ var indicatorWidth = indicator.width * safeAxisStep / 100;
267
+ var safeIndicatorWidth = Number.isFinite(indicatorWidth) ? indicatorWidth : 0;
268
+ var tickPos = axisX.scaler(tickName);
269
+ var safeTickPos = Number.isFinite(tickPos) ? tickPos : 0;
270
+ var position = safeTickPos - safeIndicatorWidth / 2;
266
271
  var indicatorAttr = isVertical ? {
267
272
  width: chartWidth,
268
- height: indicatorWidth,
273
+ height: safeIndicatorWidth,
269
274
  y: position
270
275
  } : {
271
276
  height: yLineRange,
272
- width: indicatorWidth,
277
+ width: safeIndicatorWidth,
273
278
  x: position
274
279
  };
275
280
  var onInteraction = (0, _react.useCallback)(function (e, type) {
@@ -353,15 +358,18 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
353
358
  if (controlEl.current) {
354
359
  controlEl.current.style.transform = "translate(".concat(cBarX, "px,0)");
355
360
  //计算出当前位移的百分比
356
- var percent = cBarX / (cWidth - cBarWidth);
357
- percent = isNaN(percent) ? 1 : percent;
358
- var translateX = -(controlEnd + start / cPercent - chartWidth) * percent;
361
+ var slideRange = cWidth - cBarWidth;
362
+ var percent = slideRange > 0 ? cBarX / slideRange : 0;
363
+ if (!Number.isFinite(percent)) percent = 0;
364
+ var safeCPercent = cPercent > 0 && Number.isFinite(cPercent) ? cPercent : 1;
365
+ var span = controlEnd + start / safeCPercent - chartWidth;
366
+ var translateX = Number.isFinite(span) ? -span * percent : 0;
359
367
  curControlPercent.current = percent;
360
- setClipX(-translateX);
368
+ setClipX(Number.isFinite(-translateX) ? -translateX : 0);
361
369
  var _isVertical = axisX.direction === "vertical";
362
370
  var coreOffset = _isVertical ? marginRight : isIOS ? marginLeft : 0;
363
371
  seriesEl.current.style.transform = "translate(".concat(translateX + coreOffset, "px,").concat(marginTop, "px)");
364
- axisElList.current[2].style.transform = "translate(".concat(translateX, "px,", 0, "px)");
372
+ axisElList.current[2] && (axisElList.current[2].style.transform = "translate(".concat(translateX, "px,", 0, "px)"));
365
373
  }
366
374
  }, [controlInfo]);
367
375
  //控制条轮播动画
@@ -457,6 +465,11 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
457
465
  });
458
466
  var bodyWidth = isVertical ? xLineRange + 100 + marginRight + marginLeft : xLineRange,
459
467
  bodyHeight = isVertical ? yLineRange : yLineRange + marginTop + marginBottom;
468
+ var controlTooltipSpan = function () {
469
+ var p = cPercent > 0 && Number.isFinite(cPercent) ? cPercent : 1;
470
+ var s = axisX.controlEnd + axisX.start / p - chartWidth;
471
+ return Number.isFinite(s) ? s : 0;
472
+ }();
460
473
  var hasDuplicateX = function hasDuplicateX(data) {
461
474
  var xValues = new Set();
462
475
  var _iterator = _createForOfIteratorHelper(data),
@@ -613,13 +626,15 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
613
626
  }))), /*#__PURE__*/_react["default"].createElement("g", {
614
627
  clipPath: "url(#chart-clip-".concat(id, ")")
615
628
  }, /*#__PURE__*/_react["default"].createElement("g", null, control && zIndex == "bottom" && ctlIndicatorList.map(function (item, index) {
616
- var x = axisX.scaler(item.tick);
629
+ var xRaw = axisX.scaler(item.tick);
630
+ var x = Number.isFinite(xRaw) ? xRaw : 0;
631
+ var iw = safeIndicatorWidth;
617
632
  return /*#__PURE__*/_react["default"].createElement(_.Indicator, (0, _extends2["default"])({
618
633
  key: index
619
634
  }, indicator, {
620
635
  height: yLineRange,
621
- width: indicatorWidth,
622
- x: x - indicatorWidth / 2,
636
+ width: iw,
637
+ x: x - iw / 2,
623
638
  isControlChart: !!control,
624
639
  xName: item.tick,
625
640
  setCtlTip: setCtlTip,
@@ -669,13 +684,15 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
669
684
  isControlChart: !!control
670
685
  }));
671
686
  }), /*#__PURE__*/_react["default"].createElement("g", null, control && zIndex != "bottom" && ctlIndicatorList.map(function (item, index) {
672
- var x = axisX.scaler(item.tick);
687
+ var xRaw = axisX.scaler(item.tick);
688
+ var x = Number.isFinite(xRaw) ? xRaw : 0;
689
+ var iw = safeIndicatorWidth;
673
690
  return /*#__PURE__*/_react["default"].createElement(_.Indicator, (0, _extends2["default"])({
674
691
  key: index
675
692
  }, indicator, {
676
693
  height: yLineRange,
677
- width: indicatorWidth,
678
- x: x - indicatorWidth / 2,
694
+ width: iw,
695
+ x: x - iw / 2,
679
696
  isControlChart: !!control,
680
697
  xName: item.tick,
681
698
  setCtlTip: setCtlTip,
@@ -686,7 +703,7 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
686
703
  isVertical: isVertical
687
704
  }, tooltip, {
688
705
  data: controlChartTooltipData,
689
- x: ctlX - marginLeft - (axisX.controlEnd + axisX.start / cPercent - chartWidth) * curControlPercent.current,
706
+ x: (Number.isFinite(ctlX) ? ctlX : 0) - marginLeft - controlTooltipSpan * curControlPercent.current,
690
707
  marginLeft: marginLeft,
691
708
  marginTop: marginTop,
692
709
  tickName: ctlXName,
@@ -29,7 +29,9 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
29
29
  var _config$value, _config$percent, _config$value2, _config$value3, _config$name;
30
30
  var series = _ref.series,
31
31
  height = _ref.height,
32
+ data = _ref.data,
32
33
  config = _ref.config,
34
+ columnsSeries = _ref.columnsSeries,
33
35
  _ref$config = _ref.config,
34
36
  show = _ref$config.show,
35
37
  _ref$config$order = _ref$config.order,
@@ -110,7 +112,7 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
110
112
  behavior: "smooth"
111
113
  });
112
114
  };
113
- var _series = (0, _utils.sortPie)(series, order);
115
+ var _series = (0, _utils.sortPie)(series, order, columnsSeries);
114
116
  var _alignment$split = alignment.split(" "),
115
117
  _alignment$split2 = (0, _slicedToArray2["default"])(_alignment$split, 2),
116
118
  _alignment = _alignment$split2[0],
@@ -152,6 +154,40 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
152
154
  return parseFloat(getCanvasTextWidth(percentStr, percentFont.letterSpacing || 0, "".concat(percentFont.fontSize || 12, "px ").concat(percentFont.fontFamily || "Arial")));
153
155
  })));
154
156
  var nameMaxWidth = ((_config$name = config.name) === null || _config$name === void 0 ? void 0 : _config$name.maxWidth) || 80;
157
+ var fieldColumnKeys = [];
158
+ if (columnsSeries !== null && columnsSeries !== void 0 && columnsSeries.columns) {
159
+ Object.values(columnsSeries.columns).forEach(function (col) {
160
+ if (col.field && !fieldColumnKeys.includes(col.field)) {
161
+ fieldColumnKeys.push(col.field);
162
+ }
163
+ });
164
+ }
165
+ var fieldsColumnWidths = fieldColumnKeys.map(function (fieldName) {
166
+ var maxMeasured = 0;
167
+ var maxCfg = 0;
168
+ _series.forEach(function (s) {
169
+ var _s$fields, _s$data$fieldName, _cfg$translate, _suf$translate;
170
+ var cfg = (_s$fields = s.fields) === null || _s$fields === void 0 ? void 0 : _s$fields[fieldName];
171
+ if (!cfg || !s.data || !Object.prototype.hasOwnProperty.call(s.data, fieldName)) {
172
+ return;
173
+ }
174
+ var f = cfg.font || {};
175
+ var fontStack = "".concat(f.fontSize || 12, "px ").concat(f.fontFamily || "Arial");
176
+ var letter = f.letterSpacing || 0;
177
+ var w = parseFloat(getCanvasTextWidth(String((_s$data$fieldName = s.data[fieldName]) !== null && _s$data$fieldName !== void 0 ? _s$data$fieldName : ""), letter, fontStack));
178
+ var suf = cfg.suffix;
179
+ if (suf !== null && suf !== void 0 && suf.show && suf.text != null && String(suf.text) !== "") {
180
+ var sufFont = "".concat(suf.fontSize || f.fontSize || 12, "px ").concat(f.fontFamily || "Arial");
181
+ w += parseFloat(getCanvasTextWidth(String(suf.text), letter, sufFont));
182
+ }
183
+ var tx = Number((_cfg$translate = cfg.translate) === null || _cfg$translate === void 0 ? void 0 : _cfg$translate.x) || 0;
184
+ var stx = suf !== null && suf !== void 0 && suf.show && suf.text != null && String(suf.text) !== "" ? Number((_suf$translate = suf.translate) === null || _suf$translate === void 0 ? void 0 : _suf$translate.x) || 0 : 0;
185
+ w += Math.max(0, tx) + Math.max(0, stx);
186
+ maxMeasured = Math.max(maxMeasured, w);
187
+ maxCfg = Math.max(maxCfg, Number(cfg.maxWidth) || 0);
188
+ });
189
+ return Math.max(maxMeasured, maxCfg);
190
+ });
155
191
  var stylePieOrAxis = formatter ? _objectSpread(_objectSpread({
156
192
  display: "flex",
157
193
  alignContent: alignment.split(" ")[0] == "center" && (alignment.split(" ")[1] == "left" || alignment.split(" ")[1] == "right") ? alignment.split(" ")[1] == "left" ? "flex-start" : "flex-end" : alignment.split(" ")[0] == "left" ? "flex-start" : alignment.split(" ")[0] == "center" ? "center" : "flex-end",
@@ -207,12 +243,17 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
207
243
  opacity: selected === false ? opacity / 100 : 1,
208
244
  alignItems: "center",
209
245
  cursor: "pointer",
210
- gap: _icon.gap
246
+ gap: _icon.gap,
247
+ overflow: formatter ? "visible" : undefined
211
248
  }
212
249
  }, formatter ? formatter(series, _objectSpread(_objectSpread({}, config), {}, {
213
250
  valueMaxWidth: valueMaxWidth,
214
251
  percentMaxWidth: percentMaxWidth,
215
- nameMaxWidth: nameMaxWidth
252
+ nameMaxWidth: nameMaxWidth,
253
+ otherData: data,
254
+ columnsSeries: columnsSeries,
255
+ fieldColumnKeys: fieldColumnKeys,
256
+ fieldsColumnWidths: fieldsColumnWidths
216
257
  })) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("span", {
217
258
  style: _icon
218
259
  }), /*#__PURE__*/_react["default"].createElement(_TextOverflow["default"], {
@@ -260,12 +301,17 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
260
301
  opacity: selected === false ? opacity / 100 : 1,
261
302
  alignItems: "center",
262
303
  cursor: "pointer",
263
- gap: _icon.gap
304
+ gap: _icon.gap,
305
+ overflow: formatter ? "visible" : undefined
264
306
  }
265
307
  }, formatter ? formatter(series, _objectSpread(_objectSpread({}, config), {}, {
266
308
  valueMaxWidth: valueMaxWidth,
267
309
  percentMaxWidth: percentMaxWidth,
268
- nameMaxWidth: nameMaxWidth
310
+ nameMaxWidth: nameMaxWidth,
311
+ otherData: data,
312
+ columnsSeries: columnsSeries,
313
+ fieldColumnKeys: fieldColumnKeys,
314
+ fieldsColumnWidths: fieldsColumnWidths
269
315
  })) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("span", {
270
316
  style: _icon
271
317
  }), /*#__PURE__*/_react["default"].createElement(_TextOverflow["default"], {
@@ -77,8 +77,8 @@ var Area = function Area(_ref) {
77
77
  opacity: Areaopacity
78
78
  },
79
79
  stroke: "none",
80
- fill: 'url(#' + id + ')'
81
- }), /*#__PURE__*/_react["default"].createElement("defs", null, type && type == 'pattern' ? /*#__PURE__*/_react["default"].createElement("pattern", {
80
+ fill: "url(#" + id + ")"
81
+ }), /*#__PURE__*/_react["default"].createElement("defs", null, type && type == "pattern" ? /*#__PURE__*/_react["default"].createElement("pattern", {
82
82
  id: id,
83
83
  patternUnits: "userSpaceOnUse",
84
84
  width: patternW,
@@ -132,7 +132,7 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
132
132
  return getLineData(sortData, connectNulls);
133
133
  }, [sortData, connectNulls]);
134
134
  var lineGen = (0, _react.useMemo)(function () {
135
- var isVertical = direction === 'vertical';
135
+ var isVertical = direction === "vertical";
136
136
  var lineGen = (isVertical ? (0, _d3v.line)().y(function (_ref9) {
137
137
  var x = _ref9.data.x;
138
138
  return xScaler(x);
@@ -164,9 +164,9 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
164
164
  pointerEvents: "none"
165
165
  },
166
166
  fill: "none",
167
- strokeDasharray: lineType === 'dash' ? '3 3' : null,
167
+ strokeDasharray: lineType === "dash" ? "3 3" : null,
168
168
  strokeWidth: lineWidth
169
- }), type == 'area' && /*#__PURE__*/_react["default"].createElement(Area, {
169
+ }), type == "area" && /*#__PURE__*/_react["default"].createElement(Area, {
170
170
  data: _data,
171
171
  config: _objectSpread(_objectSpread({}, area), {}, {
172
172
  curve: curve,
@@ -271,6 +271,7 @@ var Component = /*#__PURE__*/(0, _react.memo)(function (_ref5) {
271
271
  outerDecorate = _ref5$config$fan2.outerDecorate,
272
272
  current = _ref5$config$fan2.current,
273
273
  order = _ref5$config.order,
274
+ columnsSeries = _ref5$config.columnsSeries,
274
275
  series = _ref5$config.series,
275
276
  _ref5$config$animatio = _ref5$config.animation,
276
277
  on = _ref5$config$animatio.on,
@@ -622,6 +623,8 @@ var Component = /*#__PURE__*/(0, _react.memo)(function (_ref5) {
622
623
  mousePos: mousePos
623
624
  })), /*#__PURE__*/_react["default"].createElement(_.Legend, (0, _extends2["default"])({}, legend, {
624
625
  height: chartHeight,
626
+ columnsSeries: columnsSeries,
627
+ data: data,
625
628
  series: _arcs.map(function (arc) {
626
629
  return _objectSpread(_objectSpread({}, arc), {}, {
627
630
  percent: arc.percent.toFixed(legendPrecision)
@@ -791,6 +794,8 @@ var Component = /*#__PURE__*/(0, _react.memo)(function (_ref5) {
791
794
  mousePos: mousePos
792
795
  })), /*#__PURE__*/_react["default"].createElement(_.Legend, (0, _extends2["default"])({}, legend, {
793
796
  height: chartHeight,
797
+ data: data,
798
+ columnsSeries: columnsSeries,
794
799
  series: _arcs.map(function (arc) {
795
800
  return _objectSpread(_objectSpread({}, arc), {}, {
796
801
  percent: arc.percent.toFixed(legendPrecision)
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.pieLegendFormatter = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
8
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
10
  var _indexModule = _interopRequireDefault(require("../css/index.module.css"));
10
11
  var _utils = require("../utils");
@@ -12,6 +13,7 @@ var _components = require("../components");
12
13
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
14
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
15
  var pieLegendFormatter = exports.pieLegendFormatter = function pieLegendFormatter(series, props) {
16
+ var _props$fieldColumnKey, _props$fieldsColumnWi, _series$fieldsData;
15
17
  var displayName = series.displayName,
16
18
  data = series.data,
17
19
  percent = series.percent,
@@ -54,6 +56,48 @@ var pieLegendFormatter = exports.pieLegendFormatter = function pieLegendFormatte
54
56
  _props$percent$transl = _props$percent.translate,
55
57
  percentX = _props$percent$transl.x,
56
58
  percentY = _props$percent$transl.y;
59
+ var fieldColumnKeys = (_props$fieldColumnKey = props.fieldColumnKeys) !== null && _props$fieldColumnKey !== void 0 ? _props$fieldColumnKey : [];
60
+ var fieldsColumnWidths = (_props$fieldsColumnWi = props.fieldsColumnWidths) !== null && _props$fieldsColumnWi !== void 0 ? _props$fieldsColumnWi : [];
61
+ //获取文本所占宽度
62
+ function getStringWidth(text) {
63
+ var fontStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "14px sans-serif";
64
+ var canvas = document.createElement("canvas");
65
+ var ctx = canvas.getContext("2d");
66
+ ctx.font = fontStyle;
67
+ return ctx.measureText(text).width;
68
+ }
69
+ var alignToJustify = function alignToJustify(align) {
70
+ return align == "left" ? "flex-start" : align == "right" ? "flex-end" : "center";
71
+ };
72
+ var alignToTextAlign = function alignToTextAlign(align) {
73
+ return align === "left" ? "left" : align === "right" ? "right" : "center";
74
+ };
75
+ if (fieldColumnKeys.length > 0) {
76
+ //处理除name、value、percent外的列
77
+ series.fieldsData = fieldColumnKeys.map(function (key, fieldsColumnIndex) {
78
+ var _series$fields, _series$data;
79
+ if (!((_series$fields = series.fields) !== null && _series$fields !== void 0 && _series$fields[key]) || !((_series$data = series.data) !== null && _series$data !== void 0 && _series$data.hasOwnProperty(key))) {
80
+ return null;
81
+ }
82
+ return _objectSpread(_objectSpread({}, series.fields[key]), {}, {
83
+ value: series.data[key],
84
+ fieldsColumnIndex: fieldsColumnIndex
85
+ });
86
+ }).filter(Boolean);
87
+ } else {
88
+ series.fieldsData = Object.entries(series.fields || {}).reduce(function (arr, _ref) {
89
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
90
+ key = _ref2[0],
91
+ config = _ref2[1];
92
+ if (series.data.hasOwnProperty(key)) {
93
+ arr.push(_objectSpread(_objectSpread({}, config), {}, {
94
+ value: series.data[key],
95
+ fieldsColumnIndex: arr.length
96
+ }));
97
+ }
98
+ return arr;
99
+ }, []);
100
+ }
57
101
  var seriesColorType = seriesColor.type,
58
102
  pure = seriesColor.pure,
59
103
  stops = seriesColor.linear.stops;
@@ -65,6 +109,27 @@ var pieLegendFormatter = exports.pieLegendFormatter = function pieLegendFormatte
65
109
  if (showName) columns.push("".concat(props.nameMaxWidth, "px"));
66
110
  if (showValue) columns.push("".concat(props.valueMaxWidth + valueGap, "px"));
67
111
  if (showPercent) columns.push("".concat(props.percentMaxWidth + percentGap, "px"));
112
+ if (series.fieldsData.length > 0) {
113
+ //网格布局新增的各列宽度
114
+ series.fieldsData.forEach(function (item) {
115
+ var _item$fieldsColumnInd, _suf$fontSize, _item$font, _item$translate, _suf$translate;
116
+ var idx = (_item$fieldsColumnInd = item.fieldsColumnIndex) !== null && _item$fieldsColumnInd !== void 0 ? _item$fieldsColumnInd : 0;
117
+ var measured = getStringWidth(item.value, "".concat(item.font.fontSize, "px ").concat(item.font.fontFamily));
118
+ var suf = item.suffix;
119
+ var suffixWidth = suf !== null && suf !== void 0 && suf.show && (suf === null || suf === void 0 ? void 0 : suf.text) != null && String(suf.text) !== "" ? getStringWidth(String(suf.text), "".concat((_suf$fontSize = suf.fontSize) !== null && _suf$fontSize !== void 0 ? _suf$fontSize : (_item$font = item.font) === null || _item$font === void 0 ? void 0 : _item$font.fontSize, "px ").concat(item.font.fontFamily)) : 0;
120
+ var tx = Math.max(0, Number((_item$translate = item.translate) === null || _item$translate === void 0 ? void 0 : _item$translate.x) || 0);
121
+ var stx = suf !== null && suf !== void 0 && suf.show && (suf === null || suf === void 0 ? void 0 : suf.text) != null && String(suf.text) !== "" ? Math.max(0, Number((_suf$translate = suf.translate) === null || _suf$translate === void 0 ? void 0 : _suf$translate.x) || 0) : 0;
122
+ var flowW = measured + suffixWidth + tx + stx;
123
+ var colW;
124
+ if (fieldsColumnWidths.length > idx && fieldsColumnWidths[idx] > 0) {
125
+ colW = Math.max(Number(fieldsColumnWidths[idx]) || 0, Number(item.maxWidth) || 0, flowW);
126
+ } else {
127
+ var fromConfig = Number(item.maxWidth) || 0;
128
+ colW = Math.max(flowW, fromConfig);
129
+ }
130
+ columns.push("".concat(colW, "px"));
131
+ });
132
+ }
68
133
  return /*#__PURE__*/React.createElement(React.Fragment, null, icon && /*#__PURE__*/React.createElement("span", {
69
134
  style: _objectSpread(_objectSpread({}, icon), {}, {
70
135
  marginRight: icon.marginRight,
@@ -74,7 +139,8 @@ var pieLegendFormatter = exports.pieLegendFormatter = function pieLegendFormatte
74
139
  className: showName && showValue && showPercent ? _indexModule["default"].showAllStyle : _indexModule["default"].notShowAllStyle,
75
140
  style: {
76
141
  width: "calc( 100% + ".concat(textMarginLeft + valueGap + percentGap, "px )"),
77
- gridTemplateColumns: columns.join(" ")
142
+ gridTemplateColumns: columns.join(" "),
143
+ overflowX: "visible"
78
144
  }
79
145
  }, showName && /*#__PURE__*/React.createElement(_components.TextOverflow, {
80
146
  value: displayName,
@@ -95,8 +161,8 @@ var pieLegendFormatter = exports.pieLegendFormatter = function pieLegendFormatte
95
161
  transform: "translate(".concat(valueX, "px,").concat(valueY, "px)"),
96
162
  color: valueSameColor ? _color : valueFont.color,
97
163
  alignItems: "center",
98
- justifyContent: valueAlign == "left" ? "flex-start" : valueAlign == "right" ? "flex-end" : "center",
99
- textAlign: valueAlign === "left" ? "left" : valueAlign === "right" ? "right" : "center"
164
+ justifyContent: alignToJustify(valueAlign !== null && valueAlign !== void 0 ? valueAlign : "center"),
165
+ textAlign: alignToTextAlign(valueAlign)
100
166
  })
101
167
  }, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(_components.SplitText, {
102
168
  value: data.y,
@@ -109,14 +175,53 @@ var pieLegendFormatter = exports.pieLegendFormatter = function pieLegendFormatte
109
175
  }
110
176
  }, text)), showPercent && /*#__PURE__*/React.createElement("span", {
111
177
  style: _objectSpread(_objectSpread({
178
+ display: "flex",
112
179
  whiteSpace: "nowrap"
113
180
  }, (0, _utils.getFontStyle)(percentFont)), {}, {
114
181
  marginLeft: percentGap,
115
182
  transform: "translate(".concat(percentX, "px,").concat(percentY, "px)"),
116
183
  color: percentSameColor ? _color : percentFont.color,
117
184
  alignItems: "center",
118
- justifyContent: percentAlign == "left" ? "flex-start" : percentAlign == "right" ? "flex-end" : "center",
119
- textAlign: percentAlign === "left" ? "left" : percentAlign === "right" ? "right" : "center"
185
+ justifyContent: alignToJustify(percentAlign),
186
+ textAlign: alignToTextAlign(percentAlign)
120
187
  })
121
- }, percent + "%")));
188
+ }, percent + "%"), (_series$fieldsData = series.fieldsData) === null || _series$fieldsData === void 0 ? void 0 : _series$fieldsData.map(function (item, index //渲染网格布局新增的各列
189
+ ) {
190
+ var _fieldColumnKeys, _item$fieldsColumnInd2, _item$align, _item$align2, _item$translate$x, _item$translate2, _item$translate$y, _item$translate3, _item$suffix, _item$suffix2, _item$suffix$translat, _item$suffix$translat2, _item$suffix$translat3, _item$suffix$translat4;
191
+ return /*#__PURE__*/React.createElement("span", {
192
+ key: (_fieldColumnKeys = fieldColumnKeys[(_item$fieldsColumnInd2 = item.fieldsColumnIndex) !== null && _item$fieldsColumnInd2 !== void 0 ? _item$fieldsColumnInd2 : index]) !== null && _fieldColumnKeys !== void 0 ? _fieldColumnKeys : index,
193
+ style: _objectSpread(_objectSpread({
194
+ display: "flex",
195
+ boxSizing: "border-box",
196
+ width: "100%",
197
+ minWidth: 0,
198
+ alignItems: "center",
199
+ justifyContent: alignToJustify((_item$align = item.align) !== null && _item$align !== void 0 ? _item$align : "center"),
200
+ textAlign: alignToTextAlign((_item$align2 = item.align) !== null && _item$align2 !== void 0 ? _item$align2 : "center"),
201
+ overflow: "visible"
202
+ }, (0, _utils.getFontStyle)(item.font)), {}, {
203
+ color: item.sameColor ? _color : item.font.color
204
+ })
205
+ }, /*#__PURE__*/React.createElement("span", {
206
+ style: {
207
+ display: "inline-flex",
208
+ alignItems: "center",
209
+ flexWrap: "nowrap",
210
+ whiteSpace: "nowrap",
211
+ marginLeft: (_item$translate$x = (_item$translate2 = item.translate) === null || _item$translate2 === void 0 ? void 0 : _item$translate2.x) !== null && _item$translate$x !== void 0 ? _item$translate$x : 0,
212
+ marginTop: (_item$translate$y = (_item$translate3 = item.translate) === null || _item$translate3 === void 0 ? void 0 : _item$translate3.y) !== null && _item$translate$y !== void 0 ? _item$translate$y : 0
213
+ }
214
+ }, /*#__PURE__*/React.createElement("span", {
215
+ style: {
216
+ whiteSpace: "nowrap"
217
+ }
218
+ }, item.value), ((_item$suffix = item.suffix) === null || _item$suffix === void 0 ? void 0 : _item$suffix.show) && ((_item$suffix2 = item.suffix) === null || _item$suffix2 === void 0 ? void 0 : _item$suffix2.text) != null && String(item.suffix.text) !== "" && /*#__PURE__*/React.createElement("span", {
219
+ style: {
220
+ whiteSpace: "nowrap",
221
+ fontSize: item.suffix.fontSize,
222
+ marginLeft: (_item$suffix$translat = (_item$suffix$translat2 = item.suffix.translate) === null || _item$suffix$translat2 === void 0 ? void 0 : _item$suffix$translat2.x) !== null && _item$suffix$translat !== void 0 ? _item$suffix$translat : 0,
223
+ marginTop: (_item$suffix$translat3 = (_item$suffix$translat4 = item.suffix.translate) === null || _item$suffix$translat4 === void 0 ? void 0 : _item$suffix$translat4.y) !== null && _item$suffix$translat3 !== void 0 ? _item$suffix$translat3 : 0
224
+ }
225
+ }, item.suffix.text)));
226
+ })));
122
227
  };
@@ -310,7 +310,7 @@ var _default = exports["default"] = function _default(_ref) {
310
310
  end: end,
311
311
  clipAxisRange: clipAxisRange,
312
312
  lengthWithoutPaddingOuter: lengthWithoutPaddingOuter,
313
- step: [lengthWithoutPaddingOuter / clipAxisAllTicks[0].length, lengthWithoutPaddingOuter / clipAxisAllTicks[1].length],
313
+ step: [clipAxisAllTicks[0].length > 0 ? lengthWithoutPaddingOuter / clipAxisAllTicks[0].length : 0, clipAxisAllTicks[1].length > 0 ? lengthWithoutPaddingOuter / clipAxisAllTicks[1].length : 0],
314
314
  allTicks: clipAxisAllTicks,
315
315
  ticks: clipAxisTicks,
316
316
  clipValue: clipValue
@@ -372,14 +372,19 @@ var _default = exports["default"] = function _default(_ref) {
372
372
  // }
373
373
  // }
374
374
  // }
375
- var _step2 = _lengthWithoutPaddingOuter / allTicks.length;
375
+ var tickLen = allTicks.length;
376
+ var _step2 = tickLen > 0 ? _lengthWithoutPaddingOuter / tickLen : 0;
376
377
  var controlCfg = {
377
378
  controlStep: 0,
378
379
  controlDragScaler: null
379
380
  };
380
381
  if (isC) {
381
- controlCfg.controlStep = _step2 / cPercent;
382
- controlCfg.controlDragScaler = scaler.copy().range([_start / cPercent, _end / cPercent]);
382
+ if (tickLen > 0 && cPercent > 0) {
383
+ controlCfg.controlStep = _step2 / cPercent;
384
+ controlCfg.controlDragScaler = scaler.copy().range([_start / cPercent, _end / cPercent]);
385
+ } else {
386
+ controlCfg.controlDragScaler = scaler.copy();
387
+ }
383
388
  var _getChartsConfig3 = getChartsConfig(orientation, cWidth, height, paddingOuter),
384
389
  start_ = _getChartsConfig3.start,
385
390
  end_ = _getChartsConfig3.end,
@@ -390,7 +395,7 @@ var _default = exports["default"] = function _default(_ref) {
390
395
  scaler = scales[type]().domain(newDomain).range(_range);
391
396
  scaler.type = type;
392
397
  var controlOuter = len - outer;
393
- _step2 = controlOuter / allTicks.length;
398
+ _step2 = tickLen > 0 ? controlOuter / tickLen : 0;
394
399
  }
395
400
  tmp.set(axisType, _objectSpread(_objectSpread(_objectSpread({}, item), {}, {
396
401
  count: _count,
@@ -17,11 +17,11 @@ var initialState = {
17
17
  flag: false // 首次加载标识:true-首次加载不执行动画,false-可执行轮播
18
18
  };
19
19
 
20
- /**
21
- * x轴滚动逻辑
22
- * @param {Object} axis x轴配置项
23
- * @param {Object} config x轴轮播动画的配置项
24
- * @returns {Map} 返回更新后的x轴配置(ticks/scaler/range 变更)
20
+ /**
21
+ * x轴滚动逻辑
22
+ * @param {Object} axis x轴配置项
23
+ * @param {Object} config x轴轮播动画的配置项
24
+ * @returns {Map} 返回更新后的x轴配置(ticks/scaler/range 变更)
25
25
  */
26
26
  var _default = exports["default"] = function _default(axis, config, isHover, controlInfo, active) {
27
27
  var show = config.show,
@@ -40,11 +40,11 @@ var _default = exports["default"] = function _default(axis, config, isHover, con
40
40
  lengthWithoutPaddingOuter = axis.lengthWithoutPaddingOuter;
41
41
  var tickLength = ticks.length;
42
42
  var tickCount = isC ? allTicks.length : count;
43
- var scale = isC ? cPercent : 1;
43
+ var scale = isC && cPercent > 0 ? cPercent : 1;
44
44
  var _start = start / scale;
45
45
  var _end = end / scale;
46
46
  var canCarousel = (0, _react.useMemo)(function () {
47
- return show && active && tickLength > tickCount;
47
+ return show && active && tickCount > 0 && tickLength > tickCount;
48
48
  }, [show, active, tickLength, tickCount]);
49
49
  var _useState = (0, _react.useState)({
50
50
  scaler: scaler,
@@ -120,7 +120,7 @@ var _default = exports["default"] = function _default(axis, config, isHover, con
120
120
 
121
121
  // 初始化:仅在基础条件变化时设置初始索引
122
122
  (0, _react.useEffect)(function () {
123
- if (show && tickLength > tickCount) {
123
+ if (show && tickCount > 0 && tickLength > tickCount) {
124
124
  setStatus({
125
125
  currentIndex: 0,
126
126
  flag: true
@@ -137,10 +137,11 @@ var _default = exports["default"] = function _default(axis, config, isHover, con
137
137
 
138
138
  // 执行条件:显示、非hover暂停、激活、有足够的轮播项
139
139
  var canRun = canCarousel && !(latest.hover && hoverRef.current);
140
- if (currentIndex !== null && canRun) {
140
+ if (currentIndex !== null && canRun && latest.tickCount > 0) {
141
141
  if (flag) {
142
142
  // 首次加载:仅初始化视图,不执行动画
143
143
  var _step = latest.lengthWithoutPaddingOuter / latest.tickCount;
144
+ if (!Number.isFinite(_step)) return;
144
145
  var _ticks = latest.allTicks.slice(currentIndex, latest.tickCount);
145
146
  setState({
146
147
  step: _step,
@@ -168,6 +169,7 @@ var _default = exports["default"] = function _default(axis, config, isHover, con
168
169
  // 非首次加载:执行动画 + 后续逻辑
169
170
  if (!ready) return;
170
171
  var _step2 = latest.lengthWithoutPaddingOuter / latest.tickCount;
172
+ if (!Number.isFinite(_step2)) return;
171
173
  animation = (0, _popmotion.animate)({
172
174
  from: 0,
173
175
  to: -1,
@@ -278,7 +280,7 @@ var _default = exports["default"] = function _default(axis, config, isHover, con
278
280
  setReady(true);
279
281
  setStatus(function () {
280
282
  // 与初始化 effect 保持一致:只要满足条件就从 0 开始重新初始化
281
- if (show && active && tickLength > tickCount) {
283
+ if (show && active && tickCount > 0 && tickLength > tickCount) {
282
284
  return {
283
285
  currentIndex: 0,
284
286
  flag: true
@@ -294,12 +296,12 @@ var _default = exports["default"] = function _default(axis, config, isHover, con
294
296
  controlEnd: _end
295
297
  });
296
298
  };
297
- /**
298
- * 获取指定索引范围的ticks(支持循环)
299
- * @param {Array} ticks 所有ticks
300
- * @param {number} currentIndex 当前起始索引
301
- * @param {number} length 需要的长度
302
- * @returns {Array} 目标ticks数组
299
+ /**
300
+ * 获取指定索引范围的ticks(支持循环)
301
+ * @param {Array} ticks 所有ticks
302
+ * @param {number} currentIndex 当前起始索引
303
+ * @param {number} length 需要的长度
304
+ * @returns {Array} 目标ticks数组
303
305
  */
304
306
  var getTicks = function getTicks(ticks, currentIndex, length) {
305
307
  var _currentIndex = +currentIndex;