@easyv/charts 1.10.22 → 1.10.24

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.
@@ -71,6 +71,7 @@ var getBorderRadius = function getBorderRadius(_ref2) {
71
71
  };
72
72
  var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref3) {
73
73
  var triggerClick = _ref3.triggerClick,
74
+ triggerEvents = _ref3.triggerEvents,
74
75
  maxWidth1 = _ref3.maxWidth,
75
76
  config = _ref3.config,
76
77
  _ref3$config = _ref3.config,
@@ -109,8 +110,8 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
109
110
  seriesStart = _getSeriesInfo.seriesStart;
110
111
  var _data = showHighlight ? getHighlightData(data, extent) : data;
111
112
  var isVertical = direction === "vertical";
112
- var highlightColor = parseMultiColorToSVG(highlightFill, "highlight_gradient_" + id + "_" + name);
113
- var color = parseMultiColorToSVG(fill, "gradient_" + id + "_" + name);
113
+ var highlightColor = parseMultiColorToSVG((0, _utils.reverseGradientStops)(highlightFill), "highlight_gradient_" + id + "_" + name);
114
+ var color = parseMultiColorToSVG((0, _utils.reverseGradientStops)(fill), "gradient_" + id + "_" + name);
114
115
  return /*#__PURE__*/_react["default"].createElement("g", {
115
116
  className: "__easyv-band"
116
117
  }, /*#__PURE__*/_react["default"].createElement("defs", null, /*#__PURE__*/_react["default"].createElement("filter", {
@@ -161,7 +162,7 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
161
162
  });
162
163
  return /*#__PURE__*/_react["default"].createElement("g", {
163
164
  key: i,
164
- onClick: triggerClick,
165
+ onClick: triggerEvents,
165
166
  "data-data": JSON.stringify(data)
166
167
  }, /*#__PURE__*/_react["default"].createElement(Column3DSkin, (0, _extends2["default"])({}, attr, {
167
168
  color: extent === flag ? highlightColor : color
@@ -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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easyv/charts",
3
- "version": "1.10.22",
3
+ "version": "1.10.24",
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,13 +78,14 @@ 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(
86
86
  ({
87
87
  triggerClick,
88
+ triggerEvents,
88
89
  maxWidth: maxWidth1,
89
90
  config,
90
91
  config: {
@@ -115,10 +116,13 @@ export default memo(
115
116
  const isVertical = direction === "vertical";
116
117
 
117
118
  const highlightColor = parseMultiColorToSVG(
118
- highlightFill,
119
- "highlight_gradient_" + id + "_" + name
119
+ reverseGradientStops(highlightFill),
120
+ "highlight_gradient_" + id + "_" + name,
121
+ );
122
+ const color = parseMultiColorToSVG(
123
+ reverseGradientStops(fill),
124
+ "gradient_" + id + "_" + name,
120
125
  );
121
- const color = parseMultiColorToSVG(fill, "gradient_" + id + "_" + name);
122
126
  return (
123
127
  <g className="__easyv-band">
124
128
  <defs>
@@ -148,7 +152,7 @@ export default memo(
148
152
  data,
149
153
  data: { x, y, s },
150
154
  }: DataWithBoundType,
151
- i: number
155
+ i: number,
152
156
  ) => {
153
157
  const y1 = yScaler(isVertical ? end : start);
154
158
  const y2 = yScaler(isVertical ? start : end);
@@ -170,7 +174,7 @@ export default memo(
170
174
  return (
171
175
  <g
172
176
  key={i}
173
- onClick={triggerClick}
177
+ onClick={triggerEvents}
174
178
  data-data={JSON.stringify(data)}
175
179
  >
176
180
  <Column3DSkin
@@ -179,11 +183,11 @@ export default memo(
179
183
  />
180
184
  </g>
181
185
  );
182
- }
186
+ },
183
187
  )}
184
188
  </g>
185
189
  );
186
- }
190
+ },
187
191
  );
188
192
 
189
193
  const Column3DSkin = function (props: any) {
@@ -301,7 +305,7 @@ function parseMultiColorToSVG(config: any, id: any) {
301
305
  stopColor: e.color,
302
306
  stopOpacity: opacity,
303
307
  });
304
- })
308
+ }),
305
309
  ),
306
310
  firstColor: getTopColor(_stops, angle),
307
311
  };
@@ -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
  }
@@ -905,4 +933,5 @@ export {
905
933
  mathR,
906
934
  renderCanvasBackground, // 导出 Canvas 绘制方法
907
935
  SvgBackground,
936
+ reverseGradientStops,
908
937
  };