@easyv/charts 1.0.68 → 1.0.69

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 (63) hide show
  1. package/.babelrc +8 -8
  2. package/lib/components/AnimateData.js +2 -2
  3. package/lib/components/Axis.js +12 -12
  4. package/lib/components/Background.js +2 -2
  5. package/lib/components/Carousel.js +2 -2
  6. package/lib/components/Chart.js +2 -2
  7. package/lib/components/ConicalGradient.js +21 -21
  8. package/lib/components/Indicator.js +2 -2
  9. package/lib/components/LinearGradient.js +2 -2
  10. package/lib/css/index.module.css +41 -41
  11. package/lib/css/piechart.module.css +26 -26
  12. package/lib/hooks/useAnimateData.js +5 -5
  13. package/lib/hooks/useAxes.js +5 -5
  14. package/lib/hooks/useCarouselAxisX.js +5 -5
  15. package/lib/hooks/useExtentData.js +6 -6
  16. package/lib/hooks/useFilterData.js +5 -5
  17. package/lib/hooks/useStackData.js +5 -5
  18. package/lib/hooks/useTooltip.js +10 -10
  19. package/lib/utils/index.js +36 -7
  20. package/package.json +34 -34
  21. package/src/components/AnimateData.tsx +24 -24
  22. package/src/components/Axis.tsx +333 -333
  23. package/src/components/Background.tsx +45 -45
  24. package/src/components/Band.tsx +160 -160
  25. package/src/components/Brush.js +159 -159
  26. package/src/components/Carousel.tsx +144 -144
  27. package/src/components/Chart.js +99 -99
  28. package/src/components/ChartContainer.tsx +63 -63
  29. package/src/components/ConicalGradient.js +258 -258
  30. package/src/components/ExtentData.js +17 -17
  31. package/src/components/FilterData.js +23 -23
  32. package/src/components/Indicator.js +13 -13
  33. package/src/components/Label.js +196 -196
  34. package/src/components/Legend.js +158 -158
  35. package/src/components/Lighter.jsx +162 -162
  36. package/src/components/Line.js +128 -128
  37. package/src/components/LinearGradient.js +29 -29
  38. package/src/components/Mapping.js +71 -71
  39. package/src/components/PieChart.js +1093 -1093
  40. package/src/components/StackData.js +20 -20
  41. package/src/components/StereoBar.tsx +298 -298
  42. package/src/components/Tooltip.js +133 -133
  43. package/src/components/index.js +49 -49
  44. package/src/context/index.js +2 -2
  45. package/src/css/index.module.css +41 -41
  46. package/src/css/piechart.module.css +26 -26
  47. package/src/element/ConicGradient.jsx +55 -55
  48. package/src/element/Line.tsx +33 -33
  49. package/src/element/index.ts +3 -3
  50. package/src/formatter/index.js +1 -1
  51. package/src/formatter/legend.js +90 -90
  52. package/src/hooks/index.js +17 -17
  53. package/src/hooks/useAnimateData.ts +62 -62
  54. package/src/hooks/useAxes.js +143 -143
  55. package/src/hooks/useCarouselAxisX.js +163 -163
  56. package/src/hooks/useExtentData.js +88 -88
  57. package/src/hooks/useFilterData.js +72 -72
  58. package/src/hooks/useStackData.js +100 -100
  59. package/src/hooks/useTooltip.ts +96 -96
  60. package/src/index.js +6 -6
  61. package/src/types/index.d.ts +59 -59
  62. package/src/utils/index.js +672 -640
  63. package/tsconfig.json +22 -22
@@ -1,99 +1,99 @@
1
- /**
2
- * 总入口,通过外面传进来的type来确定渲染哪种图表,饼环图表为“pie”,否则为轴类图表
3
- */
4
- import React, { memo, useMemo, createRef, useCallback } from 'react';
5
- import { chartContext } from '../context';
6
- import { PieChart, CartesianChart } from '.';
7
-
8
- const getCallbackData = (callbacks, data) => {
9
- let callbackData;
10
- if (callbacks && Array.isArray(callbacks) && callbacks.length && data) {
11
- callbackData = {};
12
- callbacks.forEach(({ origin, target }) => {
13
- callbackData[target] = data[origin];
14
- });
15
- }
16
- return callbackData;
17
- };
18
-
19
- const Chart = memo(
20
- ({
21
- id,
22
- type,
23
- config,
24
- config: {
25
- chart: {
26
- dimension: {
27
- chartDimension: { height, width },
28
- },
29
- margin: { marginRight, marginLeft, marginBottom, marginTop },
30
- },
31
- interaction,
32
- },
33
- data,
34
- onRelative,
35
- emit,
36
- emitEvent,
37
- ...props
38
- }) => {
39
- const svg = createRef();
40
- const chartWidth = width - marginLeft - marginRight;
41
- const chartHeight = height - marginTop - marginBottom;
42
-
43
- const triggerOnRelative = useCallback(
44
- (data) => {
45
- if (!interaction) return;
46
- const { callbacks, remoteControls } = interaction;
47
- const callbackData = getCallbackData(callbacks, data);
48
- if (callbackData) {
49
- onRelative && onRelative(id, callbackData);
50
- remoteControls &&
51
- emitEvent &&
52
- remoteControls.forEach((o) => {
53
- const control = JSON.parse(o.control);
54
- if (
55
- control.screen &&
56
- control.type &&
57
- control.type === 'callback'
58
- ) {
59
- emitEvent({
60
- screen: control.screen,
61
- type: 'callback',
62
- callbackData,
63
- });
64
- }
65
- });
66
- }
67
- },
68
- [onRelative, emitEvent, JSON.stringify(interaction)]
69
- );
70
-
71
- const onEmit = useCallback(
72
- (type = 'click', data) => emit && emit(type, data),
73
- [emit]
74
- );
75
-
76
- const context = useMemo(
77
- () => ({
78
- id,
79
- width: chartWidth,
80
- height: chartHeight,
81
- triggerOnRelative,
82
- svg,
83
- onEmit,
84
- }),
85
- [id, chartWidth, chartHeight, triggerOnRelative, svg, onEmit]
86
- );
87
- return (
88
- <chartContext.Provider value={context}>
89
- {type == 'pie' ? (
90
- <PieChart id={id} config={config} data={data} {...props} />
91
- ) : (
92
- <CartesianChart id={id} config={config} data={data} {...props} />
93
- )}
94
- </chartContext.Provider>
95
- );
96
- }
97
- );
98
-
99
- export default Chart;
1
+ /**
2
+ * 总入口,通过外面传进来的type来确定渲染哪种图表,饼环图表为“pie”,否则为轴类图表
3
+ */
4
+ import React, { memo, useMemo, createRef, useCallback } from 'react';
5
+ import { chartContext } from '../context';
6
+ import { PieChart, CartesianChart } from '.';
7
+
8
+ const getCallbackData = (callbacks, data) => {
9
+ let callbackData;
10
+ if (callbacks && Array.isArray(callbacks) && callbacks.length && data) {
11
+ callbackData = {};
12
+ callbacks.forEach(({ origin, target }) => {
13
+ callbackData[target] = data[origin];
14
+ });
15
+ }
16
+ return callbackData;
17
+ };
18
+
19
+ const Chart = memo(
20
+ ({
21
+ id,
22
+ type,
23
+ config,
24
+ config: {
25
+ chart: {
26
+ dimension: {
27
+ chartDimension: { height, width },
28
+ },
29
+ margin: { marginRight, marginLeft, marginBottom, marginTop },
30
+ },
31
+ interaction,
32
+ },
33
+ data,
34
+ onRelative,
35
+ emit,
36
+ emitEvent,
37
+ ...props
38
+ }) => {
39
+ const svg = createRef();
40
+ const chartWidth = width - marginLeft - marginRight;
41
+ const chartHeight = height - marginTop - marginBottom;
42
+
43
+ const triggerOnRelative = useCallback(
44
+ (data) => {
45
+ if (!interaction) return;
46
+ const { callbacks, remoteControls } = interaction;
47
+ const callbackData = getCallbackData(callbacks, data);
48
+ if (callbackData) {
49
+ onRelative && onRelative(id, callbackData);
50
+ remoteControls &&
51
+ emitEvent &&
52
+ remoteControls.forEach((o) => {
53
+ const control = JSON.parse(o.control);
54
+ if (
55
+ control.screen &&
56
+ control.type &&
57
+ control.type === 'callback'
58
+ ) {
59
+ emitEvent({
60
+ screen: control.screen,
61
+ type: 'callback',
62
+ callbackData,
63
+ });
64
+ }
65
+ });
66
+ }
67
+ },
68
+ [onRelative, emitEvent, JSON.stringify(interaction)]
69
+ );
70
+
71
+ const onEmit = useCallback(
72
+ (type = 'click', data) => emit && emit(type, data),
73
+ [emit]
74
+ );
75
+
76
+ const context = useMemo(
77
+ () => ({
78
+ id,
79
+ width: chartWidth,
80
+ height: chartHeight,
81
+ triggerOnRelative,
82
+ svg,
83
+ onEmit,
84
+ }),
85
+ [id, chartWidth, chartHeight, triggerOnRelative, svg, onEmit]
86
+ );
87
+ return (
88
+ <chartContext.Provider value={context}>
89
+ {type == 'pie' ? (
90
+ <PieChart id={id} config={config} data={data} {...props} />
91
+ ) : (
92
+ <CartesianChart id={id} config={config} data={data} {...props} />
93
+ )}
94
+ </chartContext.Provider>
95
+ );
96
+ }
97
+ );
98
+
99
+ export default Chart;
@@ -1,63 +1,63 @@
1
- /**
2
- * svg外框
3
- */
4
- import React, {
5
- memo,
6
- forwardRef,
7
- ReactChild,
8
- ReactEventHandler,
9
- LegacyRef,
10
- } from 'react';
11
- const event = () => {};
12
-
13
- type Props = {
14
- width: number;
15
- height: number;
16
- marginLeft: number;
17
- marginTop: number;
18
- style: Object;
19
- children: ReactChild;
20
- onMouseEnter: ReactEventHandler;
21
- onMouseLeave: ReactEventHandler;
22
- onClick: ReactEventHandler;
23
- onMouseMove: ReactEventHandler;
24
- onMouseOut: ReactEventHandler;
25
- };
26
-
27
- export default memo(
28
- forwardRef(
29
- (
30
- {
31
- width,
32
- height,
33
- marginLeft,
34
- marginTop,
35
- style,
36
- children,
37
- onMouseEnter = event,
38
- onMouseLeave = event,
39
- onClick = event,
40
- onMouseMove = event,
41
- onMouseOut = event,
42
- }: Props,
43
- ref: LegacyRef<SVGSVGElement>
44
- ) => (
45
- <svg
46
- className='__easyv-svg'
47
- width={width}
48
- height={height}
49
- onMouseEnter={onMouseEnter}
50
- onMouseLeave={onMouseLeave}
51
- onMouseOut={onMouseOut}
52
- onClick={onClick}
53
- onMouseMove={onMouseMove}
54
- ref={ref}
55
- style={{ position: 'absolute', width, height, ...style }}
56
- >
57
- <g transform={'translate(' + marginLeft + ', ' + marginTop + ')'}>
58
- {children}
59
- </g>
60
- </svg>
61
- )
62
- )
63
- );
1
+ /**
2
+ * svg外框
3
+ */
4
+ import React, {
5
+ memo,
6
+ forwardRef,
7
+ ReactChild,
8
+ ReactEventHandler,
9
+ LegacyRef,
10
+ } from 'react';
11
+ const event = () => {};
12
+
13
+ type Props = {
14
+ width: number;
15
+ height: number;
16
+ marginLeft: number;
17
+ marginTop: number;
18
+ style: Object;
19
+ children: ReactChild;
20
+ onMouseEnter: ReactEventHandler;
21
+ onMouseLeave: ReactEventHandler;
22
+ onClick: ReactEventHandler;
23
+ onMouseMove: ReactEventHandler;
24
+ onMouseOut: ReactEventHandler;
25
+ };
26
+
27
+ export default memo(
28
+ forwardRef(
29
+ (
30
+ {
31
+ width,
32
+ height,
33
+ marginLeft,
34
+ marginTop,
35
+ style,
36
+ children,
37
+ onMouseEnter = event,
38
+ onMouseLeave = event,
39
+ onClick = event,
40
+ onMouseMove = event,
41
+ onMouseOut = event,
42
+ }: Props,
43
+ ref: LegacyRef<SVGSVGElement>
44
+ ) => (
45
+ <svg
46
+ className='__easyv-svg'
47
+ width={width}
48
+ height={height}
49
+ onMouseEnter={onMouseEnter}
50
+ onMouseLeave={onMouseLeave}
51
+ onMouseOut={onMouseOut}
52
+ onClick={onClick}
53
+ onMouseMove={onMouseMove}
54
+ ref={ref}
55
+ style={{ position: 'absolute', width, height, ...style }}
56
+ >
57
+ <g transform={'translate(' + marginLeft + ', ' + marginTop + ')'}>
58
+ {children}
59
+ </g>
60
+ </svg>
61
+ )
62
+ )
63
+ );