@easyv/charts 1.0.75 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/.babelrc +8 -8
  2. package/.husky/commit-msg +4 -0
  3. package/CHANGELOG.md +16 -0
  4. package/commitlint.config.js +1 -0
  5. package/lib/components/AnimateData.js +2 -2
  6. package/lib/components/Axis.js +36 -17
  7. package/lib/components/Background.js +2 -2
  8. package/lib/components/Band.js +4 -1
  9. package/lib/components/Carousel.js +2 -2
  10. package/lib/components/CartesianChart.js +8 -2
  11. package/lib/components/Chart.js +2 -2
  12. package/lib/components/ConicalGradient.js +21 -21
  13. package/lib/components/Indicator.js +2 -2
  14. package/lib/components/Lighter.js +180 -0
  15. package/lib/components/LinearGradient.js +2 -2
  16. package/lib/components/Tooltip.js +30 -12
  17. package/lib/components/index.js +8 -0
  18. package/lib/css/index.module.css +41 -41
  19. package/lib/css/piechart.module.css +26 -26
  20. package/lib/element/ConicGradient.js +73 -0
  21. package/lib/hooks/useAnimateData.js +5 -5
  22. package/lib/hooks/useAxes.js +5 -5
  23. package/lib/hooks/useCarouselAxisX.js +5 -5
  24. package/lib/hooks/useExtentData.js +6 -6
  25. package/lib/hooks/useFilterData.js +5 -5
  26. package/lib/hooks/useStackData.js +5 -5
  27. package/lib/hooks/useTooltip.js +10 -10
  28. package/package.json +47 -34
  29. package/src/components/AnimateData.tsx +24 -24
  30. package/src/components/Axis.tsx +354 -336
  31. package/src/components/Background.tsx +45 -45
  32. package/src/components/Band.tsx +173 -171
  33. package/src/components/Brush.js +159 -159
  34. package/src/components/Carousel.tsx +144 -144
  35. package/src/components/CartesianChart.js +7 -1
  36. package/src/components/Chart.js +99 -99
  37. package/src/components/ChartContainer.tsx +63 -63
  38. package/src/components/ConicalGradient.js +258 -258
  39. package/src/components/ExtentData.js +17 -17
  40. package/src/components/FilterData.js +23 -23
  41. package/src/components/Indicator.js +13 -13
  42. package/src/components/Label.js +206 -206
  43. package/src/components/Legend.js +158 -158
  44. package/src/components/Lighter.jsx +173 -162
  45. package/src/components/Line.js +144 -144
  46. package/src/components/LinearGradient.js +29 -29
  47. package/src/components/Mapping.js +71 -71
  48. package/src/components/PieChart.js +1097 -1097
  49. package/src/components/StackData.js +20 -20
  50. package/src/components/StereoBar.tsx +298 -298
  51. package/src/components/Tooltip.js +168 -133
  52. package/src/components/index.js +51 -49
  53. package/src/context/index.js +2 -2
  54. package/src/css/index.module.css +41 -41
  55. package/src/css/piechart.module.css +26 -26
  56. package/src/element/ConicGradient.jsx +55 -55
  57. package/src/element/Line.tsx +33 -33
  58. package/src/element/index.ts +3 -3
  59. package/src/formatter/index.js +1 -1
  60. package/src/formatter/legend.js +90 -90
  61. package/src/hooks/index.js +17 -17
  62. package/src/hooks/useAnimateData.ts +62 -62
  63. package/src/hooks/useAxes.js +144 -144
  64. package/src/hooks/useCarouselAxisX.js +163 -163
  65. package/src/hooks/useExtentData.js +88 -88
  66. package/src/hooks/useFilterData.js +72 -72
  67. package/src/hooks/useStackData.js +100 -100
  68. package/src/hooks/useTooltip.ts +96 -96
  69. package/src/index.js +6 -6
  70. package/src/types/index.d.ts +62 -59
  71. package/src/utils/index.js +692 -692
  72. package/tsconfig.json +22 -22
package/.babelrc CHANGED
@@ -1,8 +1,8 @@
1
- {
2
- "presets": ["@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript"],
3
- "plugins": [
4
- "@babel/plugin-proposal-export-default-from",
5
- "@babel/plugin-transform-runtime",
6
- "@babel/plugin-proposal-class-properties"
7
- ]
8
- }
1
+ {
2
+ "presets": ["@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript"],
3
+ "plugins": [
4
+ "@babel/plugin-proposal-export-default-from",
5
+ "@babel/plugin-transform-runtime",
6
+ "@babel/plugin-proposal-class-properties"
7
+ ]
8
+ }
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+ . "$(dirname "$0")/_/husky.sh"
3
+
4
+ yarn commitlint --edit $1
package/CHANGELOG.md ADDED
@@ -0,0 +1,16 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
+
5
+ ## 1.1.0 (2022-04-02)
6
+
7
+
8
+ ### Features
9
+
10
+ * 轴标签,label支持样式传入 ([749a595](https://gitlab.prod.dtstack.cn:10022/visdev/visApplication/easyv-charts/commit/749a595a96b95917dafdc1766f63efec73398d64))
11
+ * axis轴标签支持点击触发回调 ([1f636e1](https://gitlab.prod.dtstack.cn:10022/visdev/visApplication/easyv-charts/commit/1f636e1840f4f3b48c2b9765ce6087759d82fb17))
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * **band组件:** 修复foreignObject在Safari浏览器下的位置诡异偏离问题 ([1a65d54](https://gitlab.prod.dtstack.cn:10022/visdev/visApplication/easyv-charts/commit/1a65d54abbcf6c9e84cc85cc8b6a9d28b24fa4c4))
@@ -0,0 +1 @@
1
+ module.exports = {extends: ['@commitlint/config-conventional']}
@@ -17,8 +17,8 @@ var _react = _interopRequireWildcard(require("react"));
17
17
 
18
18
  var _hooks = require("../hooks");
19
19
 
20
- /**
21
- * 用来做图表数据改变(增长)动画(HOC)
20
+ /**
21
+ * 用来做图表数据改变(增长)动画(HOC)
22
22
  */
23
23
  var _default = function _default(Component) {
24
24
  return /*#__PURE__*/(0, _react.memo)(function (_ref) {
@@ -11,6 +11,10 @@ exports["default"] = void 0;
11
11
 
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
 
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
17
+
14
18
  var _react = _interopRequireWildcard(require("react"));
15
19
 
16
20
  var _utils = require("../utils");
@@ -19,9 +23,12 @@ var _context = require("../context");
19
23
 
20
24
  var _element = require("../element");
21
25
 
22
- /**
23
- * x, y, z轴
24
- */
26
+ 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; }
27
+
28
+ 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; }
29
+
30
+ var defaultEvent = function defaultEvent() {};
31
+
25
32
  var defaultAlign = {
26
33
  textAnchor: 'middle',
27
34
  dominantBaseline: 'middle'
@@ -48,16 +55,16 @@ var getAxesPath = function getAxesPath(orientation, _ref2) {
48
55
  return 'M0, -0.5V' + (height + 0.5);
49
56
  }
50
57
  };
51
- /**
52
- * 根据坐标轴位置来确定轴标签的垂直对齐方式,水平对齐方式,以及轴标签位于坐标轴的哪个方向
53
- * @param orientation 坐标轴位置
54
- * @param rotate 旋转角度
55
- * @returns {
56
- * dominantBaseline,
57
- * textAnchor,
58
- * directionX,
59
- * directionY
60
- * }
58
+ /**
59
+ * 根据坐标轴位置来确定轴标签的垂直对齐方式,水平对齐方式,以及轴标签位于坐标轴的哪个方向
60
+ * @param orientation 坐标轴位置
61
+ * @param rotate 旋转角度
62
+ * @returns {
63
+ * dominantBaseline,
64
+ * textAnchor,
65
+ * directionX,
66
+ * directionY
67
+ * }
61
68
  */
62
69
 
63
70
 
@@ -156,8 +163,11 @@ var Label = function Label(_ref5) {
156
163
  _ref5$rotate = _ref5.rotate,
157
164
  rotate = _ref5$rotate === void 0 ? 0 : _ref5$rotate,
158
165
  config = _ref5.config,
166
+ _ref5$onClick = _ref5.onClick,
167
+ onClick = _ref5$onClick === void 0 ? defaultEvent : _ref5$onClick,
159
168
  _ref5$config = _ref5.config,
160
169
  show = _ref5$config.show,
170
+ style = _ref5$config.style,
161
171
  _ref5$config$translat = _ref5$config.translate,
162
172
  translateX = _ref5$config$translat.x,
163
173
  translateY = _ref5$config$translat.y,
@@ -182,11 +192,18 @@ var Label = function Label(_ref5) {
182
192
  var x = (isVertical ? tickSize * directionX : coordinate) + translateX * directionX;
183
193
  var y = (isVertical ? coordinate : tickSize * directionY) + translateY * directionY;
184
194
  var translateText = 'translate(' + x + ', ' + y + ')';
195
+
196
+ var _style = style && ((0, _typeof2["default"])(style) == 'object' ? style : style(_label));
197
+
185
198
  return /*#__PURE__*/_react["default"].createElement("text", {
186
199
  className: className,
187
- style: {
188
- whiteSpace: "pre"
189
- },
200
+ style: _objectSpread(_objectSpread({}, _style), {}, {
201
+ whiteSpace: 'pre'
202
+ }),
203
+ onClick: onClick,
204
+ "data-data": JSON.stringify({
205
+ x: label
206
+ }),
190
207
  dominantBaseline: dominantBaseline,
191
208
  textAnchor: textAnchor,
192
209
  fontFamily: fontFamily,
@@ -215,6 +232,7 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (_ref6) {
215
232
  ticks = _ref6.ticks,
216
233
  formatter = _ref6.formatter,
217
234
  rotate = _ref6.rotate,
235
+ triggerClick = _ref6.triggerClick,
218
236
  _ref6$config = _ref6.config,
219
237
  on = _ref6$config.on,
220
238
  label = _ref6$config.label,
@@ -294,7 +312,8 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (_ref6) {
294
312
  label: tick,
295
313
  tickSize: _tickSize,
296
314
  formatter: formatter,
297
- rotate: rotate
315
+ rotate: rotate,
316
+ onClick: triggerClick
298
317
  }), gridLine && /*#__PURE__*/_react["default"].createElement(_element.Line, (0, _extends2["default"])({
299
318
  className: "__easyv-gridLine",
300
319
  config: gridLine
@@ -13,8 +13,8 @@ var _react = _interopRequireDefault(require("react"));
13
13
 
14
14
  var _utils = require("../utils");
15
15
 
16
- /**
17
- * 轴类图背景
16
+ /**
17
+ * 轴类图背景
18
18
  */
19
19
  var _default = function _default(_ref) {
20
20
  var _ref$axis = _ref.axis,
@@ -156,7 +156,10 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (_ref3) {
156
156
  style: {
157
157
  width: '100%',
158
158
  height: '100%',
159
- opacity: opacity,
159
+
160
+ /** Safari Bug **/
161
+ position: 'fixed',
162
+ opacity: fillType == 'pattern' ? opacity : 1,
160
163
  background: fillType == 'pattern' ? "50% 50% / ".concat(size.width, "px ").concat(size.height, "px repeat ") + 'url(' + url + ')' : (0, _utils.getBandBackground)(pattern, extent === flag ? highlightFill : fill),
161
164
  borderRadius: style == 'square' ? '0 0 0 0' : getBorderRadius({
162
165
  isVertical: isVertical,
@@ -42,8 +42,8 @@ var defaultAnimation = {
42
42
  opacity: 100
43
43
  }
44
44
  };
45
- /**
46
- * 饼图类图表轮播逻辑,用来管理currentIndex,及回调逻辑(HOC)
45
+ /**
46
+ * 饼图类图表轮播逻辑,用来管理currentIndex,及回调逻辑(HOC)
47
47
  */
48
48
 
49
49
  var _default = function _default(Component) {
@@ -125,7 +125,9 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
125
125
  config: background
126
126
  }), (0, _toConsumableArray2["default"])(axes.values()).map(function (item, index) {
127
127
  var config = item.axisType == 'x' ? axisX : item;
128
- return /*#__PURE__*/_react["default"].createElement(_.Axis, (0, _extends2["default"])({}, config, {
128
+ return /*#__PURE__*/_react["default"].createElement(_.Axis, (0, _extends2["default"])({
129
+ triggerClick: onInteraction
130
+ }, config, {
129
131
  key: index
130
132
  }));
131
133
  }), showTooltip && /*#__PURE__*/_react["default"].createElement(_.Indicator, (0, _extends2["default"])({}, indicator, indicatorAttr)), series.map(function (_ref2, index) {
@@ -160,8 +162,12 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
160
162
  }, tooltip, {
161
163
  data: tooltipData,
162
164
  x: tooltipX,
165
+ marginLeft: marginLeft,
166
+ marginTop: marginTop,
163
167
  tickName: tickName,
164
- series: series
168
+ series: series,
169
+ width: width,
170
+ height: height
165
171
  })), brush && /*#__PURE__*/_react["default"].createElement(_.Brush, {
166
172
  config: brush,
167
173
  width: width
@@ -19,8 +19,8 @@ var _context = require("../context");
19
19
 
20
20
  var _ = require(".");
21
21
 
22
- /**
23
- * 总入口,通过外面传进来的type来确定渲染哪种图表,饼环图表为“pie”,否则为轴类图表
22
+ /**
23
+ * 总入口,通过外面传进来的type来确定渲染哪种图表,饼环图表为“pie”,否则为轴类图表
24
24
  */
25
25
  var getCallbackData = function getCallbackData(callbacks, data) {
26
26
  var callbackData;
@@ -19,8 +19,8 @@ var _utils = require("@easyv/utils/lib/common/utils");
19
19
 
20
20
  var _indexModule = _interopRequireDefault(require("../css/index.module.css"));
21
21
 
22
- /**
23
- * 饼图装饰内圈
22
+ /**
23
+ * 饼图装饰内圈
24
24
  */
25
25
  var _default = function _default(_ref) {
26
26
  var width = _ref.width,
@@ -123,8 +123,8 @@ var _default = function _default(_ref) {
123
123
  }
124
124
  });
125
125
  };
126
- /**
127
- * ConicalGradient
126
+ /**
127
+ * ConicalGradient
128
128
  */
129
129
 
130
130
 
@@ -136,11 +136,11 @@ function ConicalGradient() {
136
136
  }
137
137
 
138
138
  ConicalGradient.prototype = {
139
- /**
140
- * addColorStop
141
- *
142
- * @param {Number} offset
143
- * @param {Array} color RGBA值
139
+ /**
140
+ * addColorStop
141
+ *
142
+ * @param {Number} offset
143
+ * @param {Array} color RGBA值
144
144
  */
145
145
  addColorStop: function addColorStop(offset, color) {
146
146
  this._offsets.push(offset);
@@ -150,23 +150,23 @@ ConicalGradient.prototype = {
150
150
  return this;
151
151
  },
152
152
 
153
- /**
154
- * _offsetsReverse (array.forEach callback)
153
+ /**
154
+ * _offsetsReverse (array.forEach callback)
155
155
  */
156
156
  _offsetsReverse: function _offsetsReverse(offset, index, array) {
157
157
  array[index] = 1 - offset;
158
158
  },
159
159
 
160
- /**
161
- * fill
162
- *
163
- * @param {Number} context
164
- * @param {Number} x
165
- * @param {Number} y
166
- * @param {Number} radius
167
- * @param {Number} startAngle
168
- * @param {Number} endAngle
169
- * @param {Boolean} anticlockwise
160
+ /**
161
+ * fill
162
+ *
163
+ * @param {Number} context
164
+ * @param {Number} x
165
+ * @param {Number} y
166
+ * @param {Number} radius
167
+ * @param {Number} startAngle
168
+ * @param {Number} endAngle
169
+ * @param {Boolean} anticlockwise
170
170
  */
171
171
  fill: function fill(context, x, y, radius, startAngle, endAngle, anticlockwise) {
172
172
  var offsets = this._offsets;
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
 
8
- /**
9
- * 轴类图表移上去的指示框背景
8
+ /**
9
+ * 轴类图表移上去的指示框背景
10
10
  */
11
11
  var _default = function _default(_ref) {
12
12
  var color = _ref.color,
@@ -0,0 +1,180 @@
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 _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _d3v = require("d3v7");
19
+
20
+ var _utils = require("../utils");
21
+
22
+ var _svgPathProperties = require("svg-path-properties");
23
+
24
+ /**
25
+ * 区域图发光跟踪路径
26
+ */
27
+ var _default = function _default(_ref) {
28
+ var d = _ref.path,
29
+ config = _ref.config,
30
+ _ref$config = _ref.config,
31
+ curveLength = _ref$config.length,
32
+ width = _ref$config.width,
33
+ fill = _ref$config.fill,
34
+ unitStep = _ref$config.unitStep;
35
+ var pointIndexRef = (0, _react.useRef)(0);
36
+ var raf = (0, _react.useRef)(null);
37
+
38
+ var _useState = (0, _react.useState)([]),
39
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
40
+ points = _useState2[0],
41
+ setPoints = _useState2[1];
42
+
43
+ var _useState3 = (0, _react.useState)(null),
44
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
45
+ lighter = _useState4[0],
46
+ setLighter = _useState4[1];
47
+
48
+ var pointLength = points.length;
49
+ var totalLength = getLength(pointLength, curveLength);
50
+ var easingFunc = easing.linear;
51
+ var interpolateList = (0, _react.useMemo)(function () {
52
+ return getColorsInterpolate((0, _utils.getColorList)(fill));
53
+ }, [fill]);
54
+ var drawLigher = (0, _react.useCallback)(function () {
55
+ var STEP = 2;
56
+ var LOOP = false;
57
+
58
+ if (lighter && lighter.children) {
59
+ var currentPointLength = pointIndexRef.current;
60
+ var pointIndex = currentPointLength >= totalLength ? LOOP ? curveLength : 0 : currentPointLength + unitStep + Math.floor(easingFunc(pointIndexRef.current / totalLength) * STEP);
61
+ var overstep = pointIndex - pointLength;
62
+ var startIndex = getPointIndex(pointIndex, pointLength, curveLength);
63
+ var endIndex = getPointIndex(pointIndex + curveLength, pointLength, curveLength);
64
+ var overstepPoints = LOOP && overstep > 0 ? points.slice(0, overstep) : [];
65
+ drawCircle(Array.from(lighter.children), [].concat((0, _toConsumableArray2["default"])(points.slice(startIndex, endIndex)), (0, _toConsumableArray2["default"])(overstepPoints)), interpolateList);
66
+ pointIndexRef.current = pointIndex;
67
+ }
68
+
69
+ raf.current = requestAnimationFrame(drawLigher);
70
+ }, [lighter, totalLength, curveLength, unitStep, points, interpolateList]);
71
+ (0, _react.useEffect)(function () {
72
+ var path = new _svgPathProperties.svgPathProperties(d);
73
+ var totalLength = path.getTotalLength();
74
+ var points = [];
75
+
76
+ for (var i = 0; i < totalLength; i++) {
77
+ var _path$getPointAtLengt = path.getPointAtLength(i),
78
+ x = _path$getPointAtLengt.x,
79
+ y = _path$getPointAtLengt.y;
80
+
81
+ points.push({
82
+ index: i,
83
+ x: x,
84
+ y: y
85
+ });
86
+ }
87
+
88
+ setPoints(points);
89
+ }, [d, config]);
90
+ (0, _react.useEffect)(function () {
91
+ raf.current = requestAnimationFrame(drawLigher);
92
+ return function () {
93
+ cancelAnimationFrame(raf.current);
94
+ };
95
+ }, [drawLigher]);
96
+ return /*#__PURE__*/_react["default"].createElement("g", {
97
+ ref: setLighter
98
+ }, points.map(function (_ref2, index) {
99
+ var x = _ref2.x,
100
+ y = _ref2.y;
101
+ return /*#__PURE__*/_react["default"].createElement("circle", {
102
+ cx: x,
103
+ cy: y,
104
+ key: index,
105
+ r: width,
106
+ fill: "none"
107
+ });
108
+ }));
109
+ };
110
+
111
+ exports["default"] = _default;
112
+
113
+ var drawCircle = function drawCircle(children, points, interpolateList) {
114
+ var pointLength = points.length; // const [startPoint] = points;
115
+ // const startIndex = startPoint ? startPoint.index : 0;
116
+
117
+ children.forEach(function (child, index) {
118
+ var pointIndex = points.findIndex(function (_ref3) {
119
+ var i = _ref3.index;
120
+ return i == index;
121
+ });
122
+ child.setAttribute('fill', pointIndex > -1 ? getColor(pointIndex / pointLength, //TODO: 颜色插值尚需完善
123
+ interpolateList) : 'none');
124
+ });
125
+ };
126
+
127
+ var getColor = function getColor(x, interpolateList) {
128
+ return interpolateList(x);
129
+ };
130
+
131
+ var getLength = function getLength(pointLength, length) {
132
+ if (length > pointLength) {
133
+ return pointLength * 2;
134
+ }
135
+
136
+ return pointLength + length;
137
+ };
138
+
139
+ var getColorsInterpolate = function getColorsInterpolate(colors) {
140
+ var length = colors.length;
141
+ if (!!(length < 2)) return (0, _d3v.scaleLinear)().domain([0, 1]).range([colors[0].color || '#000', colors[0].color || '#000']);
142
+ var linear = (0, _d3v.scaleLinear)().domain(colors.map(function (d) {
143
+ return d.offset;
144
+ })).range(colors.map(function (d) {
145
+ return d.color;
146
+ }));
147
+ return linear;
148
+ };
149
+
150
+ var easing = {
151
+ linear: function linear() {
152
+ return 0;
153
+ },
154
+ easeIn: function easeIn(k) {
155
+ return Math.pow(k, 3);
156
+ },
157
+ easeOut: function easeOut(k) {
158
+ return 1 - easing.easeIn(1 - k);
159
+ },
160
+ easeInOut: function easeInOut(k) {
161
+ return k < 0.5 ? easing.easeIn(k * 2) / 2 : 1 - easing.easeIn(2 - 2 * k) / 2;
162
+ },
163
+ easeOutIn: function easeOutIn(k) {
164
+ return k < 0.5 ? 0.5 * (1 - easing.easeIn(1 - 2 * k)) : 0.5 * easing.easeIn(k * 2 - 1) + 0.5;
165
+ }
166
+ };
167
+
168
+ var getPointIndex = function getPointIndex(pointIndex, pointLength, curveLength) {
169
+ var index = pointIndex - curveLength;
170
+
171
+ if (index < 0) {
172
+ return 0;
173
+ }
174
+
175
+ if (index >= pointLength) {
176
+ return pointLength - 1;
177
+ }
178
+
179
+ return index;
180
+ };
@@ -9,8 +9,8 @@ exports["default"] = void 0;
9
9
 
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
11
 
12
- /**
13
- * svg渐变滤镜
12
+ /**
13
+ * svg渐变滤镜
14
14
  */
15
15
  var _default = function _default(_ref) {
16
16
  var id = _ref.id,
@@ -20,9 +20,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
20
20
  var _default = /*#__PURE__*/(0, _react.memo)(function (_ref) {
21
21
  var position = _ref.x,
22
22
  x = _ref.tickName,
23
+ marginLeft = _ref.marginLeft,
24
+ marginTop = _ref.marginTop,
23
25
  data = _ref.data,
24
26
  series = _ref.series,
25
- config = _ref.config,
26
27
  _ref$config$tip = _ref.config.tip,
27
28
  _ref$config$tip$data = _ref$config$tip.data,
28
29
  xAxis = _ref$config$tip$data.xAxis,
@@ -40,23 +41,40 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (_ref) {
40
41
  image = _ref$config$tip.image,
41
42
  margin = _ref$config$tip.margin,
42
43
  _ref$config$tip$size = _ref$config$tip.size,
43
- width = _ref$config$tip$size.width,
44
- height = _ref$config$tip$size.height,
44
+ tipWidth = _ref$config$tip$size.width,
45
+ tipHeight = _ref$config$tip$size.height,
45
46
  translateTip = _ref$config$tip.translate,
46
47
  formatter = _ref.formatter,
47
- isVertical = _ref.isVertical;
48
- var translate3d = isVertical ? _objectSpread(_objectSpread({}, translateTip), {}, {
49
- y: translateTip.y + position
50
- }) : _objectSpread(_objectSpread({}, translateTip), {}, {
51
- x: translateTip.x + position
52
- });
48
+ isVertical = _ref.isVertical,
49
+ width = _ref.width,
50
+ height = _ref.height;
51
+ var tipPosition = (0, _react.useMemo)(function () {
52
+ var translate3d = isVertical ? _objectSpread(_objectSpread({}, translateTip), {}, {
53
+ y: translateTip.y + position + marginTop
54
+ }) : _objectSpread(_objectSpread({}, translateTip), {}, {
55
+ x: translateTip.x + position + marginLeft
56
+ });
57
+
58
+ if (translate3d.x + tipWidth > width) {
59
+ var newPositon = position + marginLeft - tipWidth - translateTip.x;
60
+ translate3d.x = newPositon >= 0 ? newPositon : 0;
61
+ }
62
+
63
+ if (translate3d.y + tipHeight > height) {
64
+ var _newPositon = position + marginTop - tipHeight - translateTip.y;
65
+
66
+ translate3d.y = _newPositon >= 0 ? _newPositon : height - tipHeight;
67
+ }
68
+
69
+ return (0, _utils.getTranslate3d)(translate3d);
70
+ }, [width, height, marginLeft, marginTop, position, tipWidth, tipHeight, translateTip]);
53
71
  return /*#__PURE__*/React.createElement("div", {
54
72
  className: "__easyv-tooltip",
55
73
  style: _objectSpread({
56
74
  pointerEvents: 'none',
57
- transform: (0, _utils.getTranslate3d)(translate3d),
58
- width: width,
59
- height: height,
75
+ transform: tipPosition,
76
+ width: tipWidth,
77
+ height: tipHeight,
60
78
  padding: (0, _utils.getMargin)(margin),
61
79
  background: image ? '50% 50% / 100% 100% no-repeat url(' + window.appConfig.ASSETS_URL + image + ')' : 'rgba(48, 55, 66, 0.85)'
62
80
  }, (0, _utils.getFontStyle)(font))
@@ -71,6 +71,12 @@ Object.defineProperty(exports, "Band", {
71
71
  return _Band["default"];
72
72
  }
73
73
  });
74
+ Object.defineProperty(exports, "Lighter", {
75
+ enumerable: true,
76
+ get: function get() {
77
+ return _Lighter["default"];
78
+ }
79
+ });
74
80
  Object.defineProperty(exports, "Line", {
75
81
  enumerable: true,
76
82
  get: function get() {
@@ -161,6 +167,8 @@ var _Indicator = _interopRequireDefault(require("./Indicator"));
161
167
 
162
168
  var _Band = _interopRequireDefault(require("./Band"));
163
169
 
170
+ var _Lighter = _interopRequireDefault(require("./Lighter"));
171
+
164
172
  var _Line = _interopRequireDefault(require("./Line"));
165
173
 
166
174
  var _Background = _interopRequireDefault(require("./Background"));