@easyv/charts 1.2.2 → 1.2.5
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.
- package/.babelrc +8 -8
- package/.husky/commit-msg +3 -3
- package/CHANGELOG.md +18 -18
- package/lib/components/AnimateData.js +2 -2
- package/lib/components/Axis.js +10 -10
- package/lib/components/Background.js +2 -2
- package/lib/components/Carousel.js +2 -2
- package/lib/components/Chart.js +2 -2
- package/lib/components/ConicalGradient.js +21 -21
- package/lib/components/Indicator.js +2 -2
- package/lib/components/Lighter.js +179 -179
- package/lib/components/LinearGradient.js +2 -2
- package/lib/components/Marquee.js +14 -13
- package/lib/components/TextOverflow.js +65 -0
- package/lib/components/index.js +8 -0
- package/lib/css/index.module.css +41 -41
- package/lib/css/piechart.module.css +26 -26
- package/lib/element/ConicGradient.js +72 -72
- package/lib/hooks/useAnimateData.js +5 -5
- package/lib/hooks/useAxes.js +5 -5
- package/lib/hooks/useCarouselAxisX.js +5 -5
- package/lib/hooks/useExtentData.js +6 -6
- package/lib/hooks/useFilterData.js +5 -5
- package/lib/hooks/useStackData.js +5 -5
- package/lib/hooks/useTooltip.js +10 -10
- package/lib/utils/index.js +2 -2
- package/package.json +53 -51
- package/src/components/AnimateData.tsx +24 -24
- package/src/components/Axis.tsx +354 -354
- package/src/components/Background.tsx +45 -45
- package/src/components/Band.tsx +173 -173
- package/src/components/Brush.js +159 -159
- package/src/components/Carousel.tsx +144 -144
- package/src/components/Chart.js +99 -99
- package/src/components/ChartContainer.tsx +63 -63
- package/src/components/ConicalGradient.js +258 -258
- package/src/components/ExtentData.js +17 -17
- package/src/components/FilterData.js +23 -23
- package/src/components/Indicator.js +13 -13
- package/src/components/Label.js +206 -206
- package/src/components/Legend.js +158 -158
- package/src/components/Lighter.jsx +173 -173
- package/src/components/Line.js +144 -144
- package/src/components/LinearGradient.js +29 -29
- package/src/components/Mapping.js +71 -71
- package/src/components/Marquee.js +93 -74
- package/src/components/PieChart.js +1288 -1288
- package/src/components/StackData.js +20 -20
- package/src/components/StereoBar.tsx +310 -310
- package/src/components/TextOverflow.js +51 -0
- package/src/components/Tooltip.js +169 -169
- package/src/components/index.js +53 -51
- package/src/context/index.js +2 -2
- package/src/css/index.module.css +41 -41
- package/src/css/piechart.module.css +26 -26
- package/src/element/ConicGradient.jsx +55 -55
- package/src/element/Line.tsx +33 -33
- package/src/element/index.ts +3 -3
- package/src/formatter/index.js +1 -1
- package/src/formatter/legend.js +90 -90
- package/src/hooks/index.js +17 -17
- package/src/hooks/useAnimateData.ts +67 -67
- package/src/hooks/useAxes.js +144 -144
- package/src/hooks/useCarouselAxisX.js +163 -163
- package/src/hooks/useExtentData.js +88 -88
- package/src/hooks/useFilterData.js +72 -72
- package/src/hooks/useStackData.js +100 -100
- package/src/hooks/useTooltip.ts +96 -96
- package/src/index.js +6 -6
- package/src/types/index.d.ts +67 -67
- package/src/utils/index.js +695 -696
- 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
|
+
}
|
package/.husky/commit-msg
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
. "$(dirname "$0")/_/husky.sh"
|
|
3
|
-
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
. "$(dirname "$0")/_/husky.sh"
|
|
3
|
+
|
|
4
4
|
yarn commitlint --edit $1
|
package/CHANGELOG.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
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.1](https://gitlab.prod.dtstack.cn:10022/visdev/visApplication/easyv-charts/compare/v1.1.0...v1.1.1) (2022-04-13)
|
|
6
|
-
|
|
7
|
-
## 1.1.0 (2022-04-02)
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
### Features
|
|
11
|
-
|
|
12
|
-
* 轴标签,label支持样式传入 ([749a595](https://gitlab.prod.dtstack.cn:10022/visdev/visApplication/easyv-charts/commit/749a595a96b95917dafdc1766f63efec73398d64))
|
|
13
|
-
* axis轴标签支持点击触发回调 ([1f636e1](https://gitlab.prod.dtstack.cn:10022/visdev/visApplication/easyv-charts/commit/1f636e1840f4f3b48c2b9765ce6087759d82fb17))
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
### Bug Fixes
|
|
17
|
-
|
|
18
|
-
* **band组件:** 修复foreignObject在Safari浏览器下的位置诡异偏离问题 ([1a65d54](https://gitlab.prod.dtstack.cn:10022/visdev/visApplication/easyv-charts/commit/1a65d54abbcf6c9e84cc85cc8b6a9d28b24fa4c4))
|
|
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.1](https://gitlab.prod.dtstack.cn:10022/visdev/visApplication/easyv-charts/compare/v1.1.0...v1.1.1) (2022-04-13)
|
|
6
|
+
|
|
7
|
+
## 1.1.0 (2022-04-02)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* 轴标签,label支持样式传入 ([749a595](https://gitlab.prod.dtstack.cn:10022/visdev/visApplication/easyv-charts/commit/749a595a96b95917dafdc1766f63efec73398d64))
|
|
13
|
+
* axis轴标签支持点击触发回调 ([1f636e1](https://gitlab.prod.dtstack.cn:10022/visdev/visApplication/easyv-charts/commit/1f636e1840f4f3b48c2b9765ce6087759d82fb17))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* **band组件:** 修复foreignObject在Safari浏览器下的位置诡异偏离问题 ([1a65d54](https://gitlab.prod.dtstack.cn:10022/visdev/visApplication/easyv-charts/commit/1a65d54abbcf6c9e84cc85cc8b6a9d28b24fa4c4))
|
|
@@ -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) {
|
package/lib/components/Axis.js
CHANGED
|
@@ -55,16 +55,16 @@ var getAxesPath = function getAxesPath(orientation, _ref2) {
|
|
|
55
55
|
return 'M0, -0.5V' + (height + 0.5);
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
|
-
/**
|
|
59
|
-
* 根据坐标轴位置来确定轴标签的垂直对齐方式,水平对齐方式,以及轴标签位于坐标轴的哪个方向
|
|
60
|
-
* @param orientation 坐标轴位置
|
|
61
|
-
* @param rotate 旋转角度
|
|
62
|
-
* @returns {
|
|
63
|
-
* dominantBaseline,
|
|
64
|
-
* textAnchor,
|
|
65
|
-
* directionX,
|
|
66
|
-
* directionY
|
|
67
|
-
* }
|
|
58
|
+
/**
|
|
59
|
+
* 根据坐标轴位置来确定轴标签的垂直对齐方式,水平对齐方式,以及轴标签位于坐标轴的哪个方向
|
|
60
|
+
* @param orientation 坐标轴位置
|
|
61
|
+
* @param rotate 旋转角度
|
|
62
|
+
* @returns {
|
|
63
|
+
* dominantBaseline,
|
|
64
|
+
* textAnchor,
|
|
65
|
+
* directionX,
|
|
66
|
+
* directionY
|
|
67
|
+
* }
|
|
68
68
|
*/
|
|
69
69
|
|
|
70
70
|
|
package/lib/components/Chart.js
CHANGED
|
@@ -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;
|
|
@@ -1,180 +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;
|
|
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
180
|
};
|
|
@@ -17,9 +17,9 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
17
17
|
|
|
18
18
|
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; }
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
* 文字跑马灯组件
|
|
22
|
-
* eg: <Marquee value={文本内容} speed={跑马灯速度} style={额外样式}></Marquee>
|
|
20
|
+
/**
|
|
21
|
+
* 文字跑马灯组件
|
|
22
|
+
* eg: <Marquee value={文本内容} speed={跑马灯速度} style={额外样式}></Marquee>
|
|
23
23
|
*/
|
|
24
24
|
var _default = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
25
25
|
var value = props.value,
|
|
@@ -57,7 +57,7 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
57
57
|
}, [speed]); //在head标签中注入keyframes动画
|
|
58
58
|
|
|
59
59
|
(0, _react.useEffect)(function () {
|
|
60
|
-
var md_marquee = document.getElementById(
|
|
60
|
+
var md_marquee = document.getElementById('md_marquee'); //先查找是否已经存在md_marquee
|
|
61
61
|
|
|
62
62
|
if (!md_marquee) {
|
|
63
63
|
//不存在时再注入style标签
|
|
@@ -72,11 +72,12 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
72
72
|
}
|
|
73
73
|
}, []);
|
|
74
74
|
return /*#__PURE__*/React.createElement("span", {
|
|
75
|
-
style: _objectSpread(_objectSpread({
|
|
76
|
-
width:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
style: _objectSpread(_objectSpread({
|
|
76
|
+
width: '100%'
|
|
77
|
+
}, style), {}, {
|
|
78
|
+
display: 'flex',
|
|
79
|
+
whiteSpace: 'nowrap',
|
|
80
|
+
overflow: 'hidden'
|
|
80
81
|
}),
|
|
81
82
|
ref: dom
|
|
82
83
|
}, textList.map(function (item, itemIndex) {
|
|
@@ -84,10 +85,10 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
84
85
|
key: itemIndex,
|
|
85
86
|
style: textList.length == 2 ? {
|
|
86
87
|
//如果文本数量为2,则需要滚动
|
|
87
|
-
animationName:
|
|
88
|
-
animationTimingFunction:
|
|
89
|
-
animationIterationCount:
|
|
90
|
-
animationDuration: duration.current +
|
|
88
|
+
animationName: 'md_marquee',
|
|
89
|
+
animationTimingFunction: 'linear',
|
|
90
|
+
animationIterationCount: 'infinite',
|
|
91
|
+
animationDuration: duration.current + 's'
|
|
91
92
|
} : {},
|
|
92
93
|
ref: itemIndex == 0 ? content : null
|
|
93
94
|
}, "\xA0", item);
|