@easyv/charts 1.10.21 → 1.10.23

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.
@@ -109,8 +109,8 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
109
109
  seriesStart = _getSeriesInfo.seriesStart;
110
110
  var _data = showHighlight ? getHighlightData(data, extent) : data;
111
111
  var isVertical = direction === "vertical";
112
- var highlightColor = parseMultiColorToSVG(highlightFill, "highlight_gradient_" + id + "_" + name);
113
- var color = parseMultiColorToSVG(fill, "gradient_" + id + "_" + name);
112
+ var highlightColor = parseMultiColorToSVG((0, _utils.reverseGradientStops)(highlightFill), "highlight_gradient_" + id + "_" + name);
113
+ var color = parseMultiColorToSVG((0, _utils.reverseGradientStops)(fill), "gradient_" + id + "_" + name);
114
114
  return /*#__PURE__*/_react["default"].createElement("g", {
115
115
  className: "__easyv-band"
116
116
  }, /*#__PURE__*/_react["default"].createElement("defs", null, /*#__PURE__*/_react["default"].createElement("filter", {
@@ -6,11 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.SvgBackground = void 0;
8
8
  exports.band = band;
9
- exports.sortPie = exports.seriesYOrZ = exports.resetStacks = exports.renderCanvasBackground = exports.reduceConfig = exports.mathR = exports.isValidHttpUrl = exports.identity = exports.getTranslate3d = exports.getTranslate2d = exports.getTicksOfAxis = exports.getTickCoord = exports.getStacks = exports.getSeriesInfo = exports.getMultiColorStr = exports.getMousePos = exports.getMargin = exports.getIcon = exports.getGridCoord = exports.getFontStyle = exports.getDomPath = exports.getDataWithPercent = exports.getCurrentStack = exports.getColorList = exports.getChildren = exports.getBreakWord = exports.getBandwidth = exports.getBandSeriesStepAndWidth = exports.getBandBackground = exports.formatFont = exports.filterChildren = exports.dateFormat = exports.dataYOrZ = void 0;
9
+ exports.sortPie = exports.seriesYOrZ = exports.reverseGradientStops = exports.resetStacks = exports.renderCanvasBackground = exports.reduceConfig = exports.mathR = exports.isValidHttpUrl = exports.identity = exports.getTranslate3d = exports.getTranslate2d = exports.getTicksOfAxis = exports.getTickCoord = exports.getStacks = exports.getSeriesInfo = exports.getMultiColorStr = exports.getMousePos = exports.getMargin = exports.getIcon = exports.getGridCoord = exports.getFontStyle = exports.getDomPath = exports.getDataWithPercent = exports.getCurrentStack = exports.getColorList = exports.getChildren = exports.getBreakWord = exports.getBandwidth = exports.getBandSeriesStepAndWidth = exports.getBandBackground = exports.formatFont = exports.filterChildren = exports.dateFormat = exports.dataYOrZ = void 0;
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
11
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
14
  var _utils = require("@easyv/utils");
15
15
  var _utils2 = require("@easyv/utils/lib/common/utils");
16
16
  var _d3v = require("d3v7");
@@ -193,19 +193,43 @@ var getMultiColorStr = exports.getMultiColorStr = function getMultiColorStr(colo
193
193
  return result.slice(0, -1) + ")";
194
194
  }
195
195
  };
196
+ var reverseLinearGradient = function reverseLinearGradient(background) {
197
+ if (!background || typeof background !== "string") {
198
+ return background;
199
+ }
200
+ var match = background.match(/^linear-gradient\(\s*(-?\d*\.?\d+)(deg|turn|grad|rad)\s*,\s*(.+)\)$/i);
201
+ if (!match) {
202
+ return background;
203
+ }
204
+ var _match = (0, _slicedToArray2["default"])(match, 4),
205
+ angleStr = _match[1],
206
+ unit = _match[2],
207
+ stops = _match[3];
208
+ var newAngle = (parseFloat(angleStr) + 180) % 360;
209
+ return "linear-gradient(".concat(newAngle).concat(unit, ", ").concat(stops, ")");
210
+ };
211
+ var getReversedIconBackground = function getReversedIconBackground(background) {
212
+ if (!background || typeof background !== "string" || !background.includes("linear-gradient")) {
213
+ return background;
214
+ }
215
+ return reverseLinearGradient(background);
216
+ };
196
217
  var getIcon = exports.getIcon = function getIcon(type, icon) {
197
218
  var lineType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "solid";
198
219
  switch (type) {
199
220
  case "area":
200
221
  case "line":
201
- var color = icon.background;
202
- return icon ? _objectSpread(_objectSpread(_objectSpread({}, defaultLineIcon), icon), {}, {
203
- minWidth: icon.width,
204
- background: lineType == "solid" ? color : "linear-gradient(90deg, ".concat(color, ", ").concat(color, " 66%, transparent 66%) 0 0/33% 100% repeat")
205
- }) : defaultLineIcon;
222
+ {
223
+ var color = icon.background;
224
+ return icon ? _objectSpread(_objectSpread(_objectSpread({}, defaultLineIcon), icon), {}, {
225
+ minWidth: icon.width,
226
+ background: lineType == "solid" ? color : "linear-gradient(90deg, ".concat(color, ", ").concat(color, " 66%, transparent 66%) 0 0/33% 100% repeat")
227
+ }) : defaultLineIcon;
228
+ }
206
229
  default:
207
230
  return icon ? _objectSpread(_objectSpread(_objectSpread({}, defaultIcon), icon), {}, {
208
- minWidth: icon.width
231
+ minWidth: icon.width,
232
+ background: getReversedIconBackground(icon.background)
209
233
  }) : defaultIcon;
210
234
  }
211
235
  };
@@ -607,7 +631,7 @@ var getCurrentStack = exports.getCurrentStack = function getCurrentStack(stack,
607
631
  return _type == stack.type && _stack == stack.stack && _yOrZ == stack.yOrZ && _s.includes(stack.name);
608
632
  });
609
633
  };
610
- var reverseGradientStops = function reverseGradientStops(gradient) {
634
+ var reverseGradientStops = exports.reverseGradientStops = function reverseGradientStops(gradient) {
611
635
  var _gradient$linear;
612
636
  if (gradient.type !== "linear" || !((_gradient$linear = gradient.linear) !== null && _gradient$linear !== void 0 && _gradient$linear.stops)) {
613
637
  return gradient;
@@ -637,7 +661,7 @@ var reverseGradientStops = function reverseGradientStops(gradient) {
637
661
  };
638
662
  var getBandBackground = exports.getBandBackground = function getBandBackground(pattern, fill, y) {
639
663
  if (!(pattern && pattern.path)) {
640
- return (0, _utils.getColor)(y < 0 ? reverseGradientStops(fill) : fill); //小于0颜色翻转
664
+ return (0, _utils.getColor)(y > 0 ? reverseGradientStops(fill) : fill); //小于0颜色翻转
641
665
  }
642
666
  try {
643
667
  var _pattern$backgroundSi = pattern.backgroundSize,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easyv/charts",
3
- "version": "1.10.21",
3
+ "version": "1.10.23",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -234,7 +234,10 @@ export default memo(
234
234
  const fullWidth = componentWidth ?? chartWidth ?? 0;
235
235
  // Adaptive+上下:组件总宽;Adaptive+左右:仅 maxWidth = 总宽 − 左右 chart.margin,宽度由内容撑开
236
236
  const pieLegendFullWidth = Math.max(0, fullWidth);
237
- const pieLegendInnerWidth = Math.max(0, fullWidth - marginLeft - marginRight);
237
+ const pieLegendInnerWidth = Math.max(
238
+ 0,
239
+ fullWidth - marginLeft - marginRight,
240
+ );
238
241
  const sideLegendMaxWidth = isSideLegend ? pieLegendInnerWidth : 0;
239
242
  const fixedColumnsPerRow = Math.min(
240
243
  Math.max(1, Number(gridTemplateColumns) || 1),
@@ -272,8 +275,7 @@ export default memo(
272
275
  parseFloat(_icon.minWidth) ||
273
276
  parseFloat(icon?.width) ||
274
277
  0;
275
- const sideItemGap =
276
- Number(iconGap) || parseFloat(_icon.marginRight) || 0;
278
+ const sideItemGap = Number(iconGap) || parseFloat(_icon.marginRight) || 0;
277
279
  const sideTextMaxWidth =
278
280
  sideLegendMaxWidth > 0
279
281
  ? Math.max(0, sideLegendMaxWidth - sideIconWidth - sideItemGap)
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import React, { memo } from "react";
5
5
  import { min, max } from "d3v7";
6
- import { getSeriesInfo } from "../utils";
6
+ import { getSeriesInfo, reverseGradientStops } from "../utils";
7
7
 
8
8
  const getHighlightData = (data: Array<DataWithBoundType>, extent: string) => {
9
9
  switch (extent) {
@@ -78,8 +78,8 @@ const getBorderRadius = ({
78
78
  ? "0px " + seriesWidth + "px " + seriesWidth + "px 0"
79
79
  : seriesWidth + "px 0 0 " + seriesWidth + "px"
80
80
  : positive
81
- ? seriesWidth / 2 + "px " + seriesWidth / 2 + "px 0 0"
82
- : "0 0 " + seriesWidth / 2 + "px " + seriesWidth / 2 + "px";
81
+ ? seriesWidth / 2 + "px " + seriesWidth / 2 + "px 0 0"
82
+ : "0 0 " + seriesWidth / 2 + "px " + seriesWidth / 2 + "px";
83
83
  };
84
84
 
85
85
  export default memo(
@@ -115,10 +115,13 @@ export default memo(
115
115
  const isVertical = direction === "vertical";
116
116
 
117
117
  const highlightColor = parseMultiColorToSVG(
118
- highlightFill,
119
- "highlight_gradient_" + id + "_" + name
118
+ reverseGradientStops(highlightFill),
119
+ "highlight_gradient_" + id + "_" + name,
120
+ );
121
+ const color = parseMultiColorToSVG(
122
+ reverseGradientStops(fill),
123
+ "gradient_" + id + "_" + name,
120
124
  );
121
- const color = parseMultiColorToSVG(fill, "gradient_" + id + "_" + name);
122
125
  return (
123
126
  <g className="__easyv-band">
124
127
  <defs>
@@ -148,7 +151,7 @@ export default memo(
148
151
  data,
149
152
  data: { x, y, s },
150
153
  }: DataWithBoundType,
151
- i: number
154
+ i: number,
152
155
  ) => {
153
156
  const y1 = yScaler(isVertical ? end : start);
154
157
  const y2 = yScaler(isVertical ? start : end);
@@ -179,11 +182,11 @@ export default memo(
179
182
  />
180
183
  </g>
181
184
  );
182
- }
185
+ },
183
186
  )}
184
187
  </g>
185
188
  );
186
- }
189
+ },
187
190
  );
188
191
 
189
192
  const Column3DSkin = function (props: any) {
@@ -301,7 +304,7 @@ function parseMultiColorToSVG(config: any, id: any) {
301
304
  stopColor: e.color,
302
305
  stopOpacity: opacity,
303
306
  });
304
- })
307
+ }),
305
308
  ),
306
309
  firstColor: getTopColor(_stops, angle),
307
310
  };
@@ -158,10 +158,36 @@ const getMultiColorStr = (colors) => {
158
158
  }
159
159
  };
160
160
 
161
+ const reverseLinearGradient = (background) => {
162
+ if (!background || typeof background !== "string") {
163
+ return background;
164
+ }
165
+ const match = background.match(
166
+ /^linear-gradient\(\s*(-?\d*\.?\d+)(deg|turn|grad|rad)\s*,\s*(.+)\)$/i,
167
+ );
168
+ if (!match) {
169
+ return background;
170
+ }
171
+ const [, angleStr, unit, stops] = match;
172
+ const newAngle = (parseFloat(angleStr) + 180) % 360;
173
+ return `linear-gradient(${newAngle}${unit}, ${stops})`;
174
+ };
175
+
176
+ const getReversedIconBackground = (background) => {
177
+ if (
178
+ !background ||
179
+ typeof background !== "string" ||
180
+ !background.includes("linear-gradient")
181
+ ) {
182
+ return background;
183
+ }
184
+ return reverseLinearGradient(background);
185
+ };
186
+
161
187
  const getIcon = (type, icon, lineType = "solid") => {
162
188
  switch (type) {
163
189
  case "area":
164
- case "line":
190
+ case "line": {
165
191
  let color = icon.background;
166
192
  return icon
167
193
  ? {
@@ -174,12 +200,14 @@ const getIcon = (type, icon, lineType = "solid") => {
174
200
  : `linear-gradient(90deg, ${color}, ${color} 66%, transparent 66%) 0 0/33% 100% repeat`,
175
201
  }
176
202
  : defaultLineIcon;
203
+ }
177
204
  default:
178
205
  return icon
179
206
  ? {
180
207
  ...defaultIcon,
181
208
  ...icon,
182
209
  minWidth: icon.width,
210
+ background: getReversedIconBackground(icon.background),
183
211
  }
184
212
  : defaultIcon;
185
213
  }
@@ -621,7 +649,7 @@ const reverseGradientStops = (gradient) => {
621
649
  };
622
650
  const getBandBackground = (pattern, fill, y) => {
623
651
  if (!(pattern && pattern.path)) {
624
- return getColor(y < 0 ? reverseGradientStops(fill) : fill); //小于0颜色翻转
652
+ return getColor(y > 0 ? reverseGradientStops(fill) : fill); //小于0颜色翻转
625
653
  }
626
654
  try {
627
655
  const { backgroundSize = "100% 100%", ..._pattern } = pattern;
@@ -905,4 +933,5 @@ export {
905
933
  mathR,
906
934
  renderCanvasBackground, // 导出 Canvas 绘制方法
907
935
  SvgBackground,
936
+ reverseGradientStops,
908
937
  };