@easyv/charts 1.3.9 → 1.3.10

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 (74) hide show
  1. package/.babelrc +8 -8
  2. package/.husky/commit-msg +3 -3
  3. package/CHANGELOG.md +18 -18
  4. package/lib/components/Axis.js +10 -10
  5. package/lib/components/Background.js +2 -2
  6. package/lib/components/Band.js +22 -1
  7. package/lib/components/Carousel.js +2 -2
  8. package/lib/components/CartesianChart.js +1 -1
  9. package/lib/components/ConicalGradient.js +21 -21
  10. package/lib/components/Indicator.js +2 -2
  11. package/lib/components/Lighter.js +179 -179
  12. package/lib/components/Line.js +6 -0
  13. package/lib/components/LinearGradient.js +2 -2
  14. package/lib/components/Marquee.js +3 -3
  15. package/lib/components/TextOverflow.js +3 -3
  16. package/lib/css/index.module.css +41 -41
  17. package/lib/css/piechart.module.css +26 -26
  18. package/lib/element/ConicGradient.js +72 -72
  19. package/lib/hooks/useAnimateData.js +5 -5
  20. package/lib/hooks/useAxes.js +5 -5
  21. package/lib/hooks/useCarouselAxisX.js +5 -5
  22. package/lib/hooks/useExtentData.js +6 -6
  23. package/lib/hooks/useFilterData.js +5 -5
  24. package/lib/hooks/useStackData.js +5 -5
  25. package/lib/hooks/useTooltip.js +10 -10
  26. package/lib/utils/index.js +48 -48
  27. package/package.json +54 -54
  28. package/src/components/AnimateData.tsx +24 -24
  29. package/src/components/Axis.tsx +354 -354
  30. package/src/components/Background.tsx +62 -62
  31. package/src/components/Band.tsx +191 -169
  32. package/src/components/BaseLine.js +82 -82
  33. package/src/components/Brush.js +159 -159
  34. package/src/components/Carousel.tsx +144 -144
  35. package/src/components/CartesianChart.js +3 -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 +226 -226
  43. package/src/components/Legend.js +158 -158
  44. package/src/components/Lighter.jsx +173 -173
  45. package/src/components/Line.js +150 -145
  46. package/src/components/LinearGradient.js +29 -29
  47. package/src/components/Mapping.js +71 -71
  48. package/src/components/Marquee.js +97 -97
  49. package/src/components/PieChart.js +1278 -1278
  50. package/src/components/StackData.js +16 -16
  51. package/src/components/StereoBar.tsx +307 -307
  52. package/src/components/TextOverflow.js +51 -51
  53. package/src/components/Tooltip.js +169 -169
  54. package/src/components/index.js +55 -55
  55. package/src/context/index.js +2 -2
  56. package/src/css/index.module.css +41 -41
  57. package/src/css/piechart.module.css +26 -26
  58. package/src/element/ConicGradient.jsx +55 -55
  59. package/src/element/Line.tsx +33 -33
  60. package/src/element/index.ts +3 -3
  61. package/src/formatter/index.js +1 -1
  62. package/src/formatter/legend.js +90 -90
  63. package/src/hooks/index.js +17 -17
  64. package/src/hooks/useAnimateData.ts +67 -67
  65. package/src/hooks/useAxes.js +144 -144
  66. package/src/hooks/useCarouselAxisX.js +163 -163
  67. package/src/hooks/useExtentData.js +89 -89
  68. package/src/hooks/useFilterData.js +72 -72
  69. package/src/hooks/useStackData.js +101 -101
  70. package/src/hooks/useTooltip.ts +96 -96
  71. package/src/index.js +6 -6
  72. package/src/types/index.d.ts +67 -67
  73. package/src/utils/index.js +738 -738
  74. package/tsconfig.json +23 -23
@@ -1,97 +1,97 @@
1
- import { useEffect, memo, useRef, useState, useCallback } from "react";
2
-
3
- /**
4
- * 文字跑马灯组件
5
- * eg: <Marquee value={文本内容} speed={跑马灯速度} style={额外样式}></Marquee>
6
- */
7
-
8
- export default memo((props) => {
9
- const {
10
- value, // 文本
11
- style, // 样式
12
- speed = 5, // 动画速度
13
- } = props;
14
-
15
- const dom = useRef(null);
16
- const target = useRef(null);
17
- const observe = useRef(null);
18
- const speed_ = useRef(0); //这里必须用一个ref绑定speed,否则animation中获取不到最新的speed
19
- const timer = useRef();
20
- const [overflow, setOverflow] = useState(false);
21
- speed_.current = speed;
22
-
23
- const startAnimation = (lineWidth)=>{
24
- const animation = (timestamp) => {
25
- let frame = Math.round(((timestamp*speed_.current)%(lineWidth*100))/100);
26
- target.current.style.transform = `translate(-${frame}px,0px)`;
27
- target.current.nextSibling.style.transform = `translate(-${frame}px,0px)`;
28
- timer.current = requestAnimationFrame(animation);
29
- };
30
- timer.current = requestAnimationFrame(animation);
31
- }
32
-
33
-
34
- useEffect(() => {
35
- //初始化观察器,利用观察器来监视组件可视区域变化
36
- observe.current = new IntersectionObserver(
37
- function (entries) {
38
- let entrie = entries[0];
39
-
40
- if (entrie.boundingClientRect.width < entrie.rootBounds.width >= 1) {
41
- //表示文字全部可视
42
- cancelAnimationFrame(timer.current);
43
- target.current.style.transform = "translate(0px,0px)"; //重置偏移
44
- setOverflow(false);
45
- return;
46
- } else {
47
- //否则文本溢出
48
- if (!overflow) {
49
- cancelAnimationFrame(timer.current);
50
- startAnimation(entrie.target.offsetWidth);
51
- //startAnimation(entrie.boundingClientRect.width);
52
- setOverflow(true);
53
- }
54
- }
55
- },
56
- {
57
- root: dom.current,
58
- rootMargin: "0px 0px 0px 0px",
59
- threshold: new Array(101).fill(0).map((d, i) => i / 100), //这里设置了[0-1]之间所有的阈值,保证每一帧的变化都能被观察到
60
- }
61
- );
62
- // start observing
63
- observe.current.observe(target.current);
64
- return () => {
65
- cancelAnimationFrame(timer.current);
66
- observe.current.unobserve(target.current);
67
- observe.current.disconnect();
68
- };
69
- }, []);
70
-
71
- let textList = [value, value];
72
- return (
73
- <div
74
- style={{
75
- width: "100%",
76
- ...style,
77
- display: "flex",
78
- whiteSpace: "nowrap",
79
- overflow: "hidden",
80
- justifyContent: overflow ? "start" : style.justifyContent || "",
81
- }}
82
- ref={dom}
83
- >
84
- {textList.map((item, i) => {
85
- return (
86
- <span
87
- key={i}
88
- ref={i == 0 ? target : null}
89
- style={{ display: i == 1 && !overflow ? "none" : "inline" }}
90
- >
91
- {item}&nbsp;
92
- </span>
93
- );
94
- })}
95
- </div>
96
- );
97
- });
1
+ import { useEffect, memo, useRef, useState, useCallback } from "react";
2
+
3
+ /**
4
+ * 文字跑马灯组件
5
+ * eg: <Marquee value={文本内容} speed={跑马灯速度} style={额外样式}></Marquee>
6
+ */
7
+
8
+ export default memo((props) => {
9
+ const {
10
+ value, // 文本
11
+ style, // 样式
12
+ speed = 5, // 动画速度
13
+ } = props;
14
+
15
+ const dom = useRef(null);
16
+ const target = useRef(null);
17
+ const observe = useRef(null);
18
+ const speed_ = useRef(0); //这里必须用一个ref绑定speed,否则animation中获取不到最新的speed
19
+ const timer = useRef();
20
+ const [overflow, setOverflow] = useState(false);
21
+ speed_.current = speed;
22
+
23
+ const startAnimation = (lineWidth)=>{
24
+ const animation = (timestamp) => {
25
+ let frame = Math.round(((timestamp*speed_.current)%(lineWidth*100))/100);
26
+ target.current.style.transform = `translate(-${frame}px,0px)`;
27
+ target.current.nextSibling.style.transform = `translate(-${frame}px,0px)`;
28
+ timer.current = requestAnimationFrame(animation);
29
+ };
30
+ timer.current = requestAnimationFrame(animation);
31
+ }
32
+
33
+
34
+ useEffect(() => {
35
+ //初始化观察器,利用观察器来监视组件可视区域变化
36
+ observe.current = new IntersectionObserver(
37
+ function (entries) {
38
+ let entrie = entries[0];
39
+
40
+ if (entrie.boundingClientRect.width < entrie.rootBounds.width >= 1) {
41
+ //表示文字全部可视
42
+ cancelAnimationFrame(timer.current);
43
+ target.current.style.transform = "translate(0px,0px)"; //重置偏移
44
+ setOverflow(false);
45
+ return;
46
+ } else {
47
+ //否则文本溢出
48
+ if (!overflow) {
49
+ cancelAnimationFrame(timer.current);
50
+ startAnimation(entrie.target.offsetWidth);
51
+ //startAnimation(entrie.boundingClientRect.width);
52
+ setOverflow(true);
53
+ }
54
+ }
55
+ },
56
+ {
57
+ root: dom.current,
58
+ rootMargin: "0px 0px 0px 0px",
59
+ threshold: new Array(101).fill(0).map((d, i) => i / 100), //这里设置了[0-1]之间所有的阈值,保证每一帧的变化都能被观察到
60
+ }
61
+ );
62
+ // start observing
63
+ observe.current.observe(target.current);
64
+ return () => {
65
+ cancelAnimationFrame(timer.current);
66
+ observe.current.unobserve(target.current);
67
+ observe.current.disconnect();
68
+ };
69
+ }, []);
70
+
71
+ let textList = [value, value];
72
+ return (
73
+ <div
74
+ style={{
75
+ width: "100%",
76
+ ...style,
77
+ display: "flex",
78
+ whiteSpace: "nowrap",
79
+ overflow: "hidden",
80
+ justifyContent: overflow ? "start" : style.justifyContent || "",
81
+ }}
82
+ ref={dom}
83
+ >
84
+ {textList.map((item, i) => {
85
+ return (
86
+ <span
87
+ key={i}
88
+ ref={i == 0 ? target : null}
89
+ style={{ display: i == 1 && !overflow ? "none" : "inline" }}
90
+ >
91
+ {item}&nbsp;
92
+ </span>
93
+ );
94
+ })}
95
+ </div>
96
+ );
97
+ });