@easyv/charts 1.3.28 → 1.3.30

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.
@@ -15,6 +15,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
15
15
 
16
16
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
17
17
 
18
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
+
18
20
  var _react = _interopRequireWildcard(require("react"));
19
21
 
20
22
  var _hooks = require("../hooks");
@@ -69,6 +71,11 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
69
71
  filterData = _ref.filterData;
70
72
  var context = (0, _react.useContext)(_context.chartContext);
71
73
 
74
+ var _useState = (0, _react.useState)(false),
75
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
76
+ isHover = _useState2[0],
77
+ setIsHover = _useState2[1];
78
+
72
79
  var _useContext = (0, _react.useContext)(_context.chartContext),
73
80
  chartWidth = _useContext.width,
74
81
  chartHeight = _useContext.height,
@@ -80,7 +87,7 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
80
87
  axes: axesConfig,
81
88
  context: context
82
89
  });
83
- var axisX = (0, _hooks.useCarouselAxisX)(axes.get('x'), animation);
90
+ var axisX = (0, _hooks.useCarouselAxisX)(axes.get('x'), animation, isHover);
84
91
 
85
92
  var _useTooltip = (0, _hooks.useTooltip)({
86
93
  svg: svg,
@@ -128,8 +135,14 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
128
135
  height: height,
129
136
  marginLeft: marginLeft,
130
137
  marginTop: marginTop,
138
+ onMouseEnter: function onMouseEnter() {
139
+ setIsHover(true);
140
+ },
131
141
  onMouseMove: setIndex,
132
- onMouseLeave: setIndex,
142
+ onMouseLeave: function onMouseLeave(e) {
143
+ setIsHover(false);
144
+ setIndex(e);
145
+ },
133
146
  ref: svg
134
147
  }, background && /*#__PURE__*/_react["default"].createElement(_.Background, {
135
148
  length: isVertical ? chartWidth : chartHeight,
@@ -128,13 +128,11 @@ var _default = function _default(_ref) {
128
128
  if (auto === false) {
129
129
  switch (mode) {
130
130
  case 'count':
131
- _ticks = (0, _utils2.getYTicks)(domain[1], domain[0], // hasNullDomain?_ticks[_ticks.length - 1]:domain[1],
132
- // hasNullDomain?_ticks[0]:domain[0],
133
- +tickCount);
131
+ _ticks = (0, _utils2.getYTicks)(domain[1], domain[0], +tickCount);
134
132
  break;
135
133
 
136
134
  case 'step':
137
- _ticks = (0, _utils2.getYTicksByStep)(newDomain[1], _ticks[0], +step);
135
+ _ticks = (0, _utils2.getYTicksByStep)(newDomain[1], newDomain[0], +step);
138
136
  break;
139
137
  }
140
138
  }
@@ -23,7 +23,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
23
23
 
24
24
  var initialState = {
25
25
  currentIndex: null,
26
- flag: false
26
+ flag: false //表示是否为首次加载,true表示首次加载,不需要立刻执行动画,false表示可以执行轮播动画
27
+
27
28
  };
28
29
  /**
29
30
  * x轴滚动逻辑
@@ -32,10 +33,11 @@ var initialState = {
32
33
  * @returns {Map} 返回经过改变后的x轴,主要是ticks和scaler的range发生了改变
33
34
  */
34
35
 
35
- var _default = function _default(axis, config) {
36
+ var _default = function _default(axis, config, isHover) {
36
37
  var show = config.show,
37
38
  interval = config.interval,
38
- duration = config.duration;
39
+ duration = config.duration,
40
+ hover = config.hover;
39
41
  var time = duration + interval;
40
42
  var tickCount = axis.tickCount,
41
43
  allTicks = axis.allTicks,
@@ -62,13 +64,19 @@ var _default = function _default(axis, config) {
62
64
  setStatus = _useState4[1];
63
65
 
64
66
  (0, _react.useEffect)(function () {
65
- var handler;
66
-
67
67
  if (show && time && tickLength > tickCount) {
68
68
  setStatus({
69
69
  currentIndex: 0,
70
70
  flag: true
71
71
  });
72
+ } else {
73
+ setStatus(initialState);
74
+ }
75
+ }, [show, time, tickCount, tickLength]);
76
+ (0, _react.useEffect)(function () {
77
+ var handler;
78
+
79
+ if (!(hover && isHover) && show && time && tickLength > tickCount) {
72
80
  handler = setInterval(function () {
73
81
  setStatus(function (_ref) {
74
82
  var currentIndex = _ref.currentIndex;
@@ -79,14 +87,12 @@ var _default = function _default(axis, config) {
79
87
  };
80
88
  });
81
89
  }, time * 1000);
82
- } else {
83
- setStatus(initialState);
84
90
  }
85
91
 
86
92
  return function () {
87
93
  handler && clearInterval(handler);
88
94
  };
89
- }, [show, time, tickCount, tickLength]);
95
+ }, [show, time, tickCount, tickLength, hover, isHover]);
90
96
  (0, _react.useEffect)(function () {
91
97
  var animation;
92
98
  var currentIndex = status.currentIndex,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easyv/charts",
3
- "version": "1.3.28",
3
+ "version": "1.3.30",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -4,6 +4,7 @@
4
4
  import React, {
5
5
  memo,
6
6
  useMemo,
7
+ useState,
7
8
  createRef,
8
9
  useContext,
9
10
  useCallback,
@@ -60,6 +61,7 @@ const Chart = memo(
60
61
  filterData,
61
62
  }) => {
62
63
  const context = useContext(chartContext);
64
+ const [isHover, setIsHover] = useState(false);
63
65
  const {
64
66
  width: chartWidth,
65
67
  height: chartHeight,
@@ -68,7 +70,7 @@ const Chart = memo(
68
70
  } = useContext(chartContext);
69
71
  const svg = createRef();
70
72
  const axes = useAxes({ axes: axesConfig, context });
71
- const axisX = useCarouselAxisX(axes.get('x'), animation);
73
+ const axisX = useCarouselAxisX(axes.get('x'), animation, isHover);
72
74
 
73
75
  const {
74
76
  x: tooltipX,
@@ -125,8 +127,9 @@ const Chart = memo(
125
127
  height={height}
126
128
  marginLeft={marginLeft}
127
129
  marginTop={marginTop}
130
+ onMouseEnter={()=>{setIsHover(true)}}
128
131
  onMouseMove={setIndex}
129
- onMouseLeave={setIndex}
132
+ onMouseLeave={(e)=>{setIsHover(false);setIndex(e)}}
130
133
  ref={svg}
131
134
  >
132
135
  {background && (
@@ -100,9 +100,9 @@ export default ({ axes, context: { width, height } }) => {
100
100
  if(mode == "count" && type !== 'ordinal' && !isNaN(domain[1])){
101
101
  newDomain = getNewDomain(domain, mode, step);
102
102
  }
103
+
103
104
  const scaler = scales[type]().domain(newDomain).range(range);
104
105
  scaler.type = type;
105
-
106
106
  if (type !== 'ordinal') scaler.nice().clamp(true);
107
107
  const allTicks = ticks
108
108
  ? ticks
@@ -121,24 +121,20 @@ export default ({ axes, context: { width, height } }) => {
121
121
  _ticks = getYTicks(
122
122
  domain[1],
123
123
  domain[0],
124
- // hasNullDomain?_ticks[_ticks.length - 1]:domain[1],
125
- // hasNullDomain?_ticks[0]:domain[0],
126
124
  +tickCount
127
125
  );
128
126
  break;
129
127
  case 'step':
130
128
  _ticks = getYTicksByStep(
131
129
  newDomain[1],
132
- _ticks[0],
130
+ newDomain[0],
133
131
  +step
134
132
  );
135
133
  break;
136
134
  }
137
135
  }
138
136
  }
139
-
140
137
  const lengthWithoutPaddingOuter = length - _paddingOuter;
141
-
142
138
  if (type == 'linear' && config.on) {
143
139
  const zeroPosition = scaler(0);
144
140
  if (zeroPosition !== range[0] && !isNaN(zeroPosition)) {
@@ -3,7 +3,7 @@ import { animate, linear } from 'popmotion';
3
3
 
4
4
  const initialState = {
5
5
  currentIndex: null,
6
- flag: false,
6
+ flag: false, //表示是否为首次加载,true表示首次加载,不需要立刻执行动画,false表示可以执行轮播动画
7
7
  };
8
8
 
9
9
  /**
@@ -13,8 +13,8 @@ const initialState = {
13
13
  * @returns {Map} 返回经过改变后的x轴,主要是ticks和scaler的range发生了改变
14
14
  */
15
15
 
16
- export default (axis, config) => {
17
- const { show, interval, duration } = config;
16
+ export default (axis, config, isHover) => {
17
+ const { show, interval, duration, hover } = config;
18
18
  const time = duration + interval;
19
19
 
20
20
  const {
@@ -37,12 +37,18 @@ export default (axis, config) => {
37
37
  const [status, setStatus] = useState(initialState);
38
38
 
39
39
  useEffect(() => {
40
- let handler;
41
40
  if (show && time && tickLength > tickCount) {
42
41
  setStatus({
43
42
  currentIndex: 0,
44
43
  flag: true,
45
44
  });
45
+ } else {
46
+ setStatus(initialState);
47
+ }
48
+ }, [show, time, tickCount, tickLength]);
49
+ useEffect(()=>{
50
+ let handler;
51
+ if(!(hover && isHover) && show && time && tickLength > tickCount){
46
52
  handler = setInterval(() => {
47
53
  setStatus(({ currentIndex }) => {
48
54
  const tmp = +currentIndex + 1;
@@ -52,13 +58,11 @@ export default (axis, config) => {
52
58
  };
53
59
  });
54
60
  }, time * 1000);
55
- } else {
56
- setStatus(initialState);
57
61
  }
58
62
  return () => {
59
63
  handler && clearInterval(handler);
60
64
  };
61
- }, [show, time, tickCount, tickLength]);
65
+ },[show, time, tickCount, tickLength, hover, isHover])
62
66
 
63
67
  useEffect(() => {
64
68
  let animation;