@agions/taroviz 1.6.0 → 1.9.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.
- package/README.md +30 -21
- package/dist/cjs/index.js +1 -1
- package/dist/esm/index.js +49471 -2199
- package/package.json +2 -1
- package/src/adapters/__tests__/index.test.ts +4 -2
- package/src/adapters/h5/index.ts +16 -0
- package/src/adapters/types.ts +28 -120
- package/src/charts/common/BaseChartWrapper.tsx +193 -32
- package/src/charts/index.ts +5 -1
- package/src/charts/liquid/index.tsx +227 -0
- package/src/charts/liquid/types.ts +130 -0
- package/src/charts/tree/index.tsx +117 -0
- package/src/charts/tree/types.ts +174 -0
- package/src/charts/types.ts +1 -1
- package/src/components/DataFilter/index.tsx +587 -0
- package/src/core/animation/AnimationManager.ts +69 -42
- package/src/core/components/BaseChart.tsx +72 -9
- package/src/core/types/common.ts +21 -110
- package/src/core/types/index.ts +4 -135
- package/src/core/types/platform.ts +38 -230
- package/src/core/utils/drillDown.ts +643 -0
- package/src/core/utils/export/ExportUtils.ts +10 -1
- package/src/core/utils/performance/PerformanceAnalyzer.ts +21 -1
- package/src/core/utils/performance/types.ts +5 -0
- package/src/hooks/__tests__/index.test.tsx +7 -5
- package/src/hooks/index.ts +41 -2
- package/src/hooks/useAnimation.ts +427 -0
- package/src/hooks/useChartConnect.ts +362 -0
- package/src/hooks/useChartDownload.ts +692 -0
- package/src/hooks/useDataZoom.ts +323 -0
- package/src/hooks/usePerformance.ts +291 -0
- package/src/index.ts +25 -2
- package/src/themes/__tests__/index.test.ts +7 -13
- package/src/themes/index.ts +3 -0
- package/src/themes/useAutoTheme.ts +66 -0
package/src/core/types/index.ts
CHANGED
|
@@ -10,14 +10,12 @@ export * from './chart';
|
|
|
10
10
|
import type { EChartsType } from 'echarts';
|
|
11
11
|
|
|
12
12
|
import { ChartOptions } from './chart';
|
|
13
|
+
import { ChartEventParams } from './common';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* TaroViz核心类型定义
|
|
16
17
|
*/
|
|
17
18
|
|
|
18
|
-
/**
|
|
19
|
-
* ECharts类型定义
|
|
20
|
-
*/
|
|
21
19
|
export { EChartsType };
|
|
22
20
|
|
|
23
21
|
// 导出动画相关类型
|
|
@@ -72,7 +70,7 @@ export type RendererType = 'canvas' | 'svg';
|
|
|
72
70
|
/**
|
|
73
71
|
* 图表事件回调类型
|
|
74
72
|
*/
|
|
75
|
-
export type ChartEventCallback = (params:
|
|
73
|
+
export type ChartEventCallback = (params: ChartEventParams) => void;
|
|
76
74
|
|
|
77
75
|
/**
|
|
78
76
|
* 图表事件处理器映射
|
|
@@ -122,160 +120,31 @@ export interface ThemeType {
|
|
|
122
120
|
fontSize?: number;
|
|
123
121
|
};
|
|
124
122
|
};
|
|
125
|
-
[key: string]:
|
|
123
|
+
[key: string]: unknown;
|
|
126
124
|
}
|
|
127
125
|
|
|
128
126
|
/**
|
|
129
127
|
* 渲染性能优化配置
|
|
130
128
|
*/
|
|
131
129
|
export interface RenderOptimizationConfig {
|
|
132
|
-
/**
|
|
133
|
-
* 是否开启渐进式渲染
|
|
134
|
-
*/
|
|
135
130
|
progressive?: boolean;
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* 渐进式渲染的阈值
|
|
139
|
-
*/
|
|
140
131
|
progressiveThreshold?: number;
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* 是否启用懒更新
|
|
144
|
-
*/
|
|
145
132
|
lazyUpdate?: boolean;
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* 是否启用动画
|
|
149
|
-
*/
|
|
150
133
|
animation?: boolean;
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* 是否启用硬件加速
|
|
154
|
-
*/
|
|
155
134
|
hardwareAcceleration?: boolean;
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* 帧率限制
|
|
159
|
-
*/
|
|
160
135
|
frameRate?: number;
|
|
161
136
|
}
|
|
162
137
|
|
|
163
|
-
/**
|
|
164
|
-
* 适配器接口定义
|
|
165
|
-
*/
|
|
166
|
-
export interface Adapter {
|
|
167
|
-
/**
|
|
168
|
-
* 初始化图表
|
|
169
|
-
*/
|
|
170
|
-
init(options?: any): EChartsType;
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* 设置图表配置
|
|
174
|
-
*/
|
|
175
|
-
setOption(option: any, notMerge?: boolean): void;
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* 获取图表实例
|
|
179
|
-
*/
|
|
180
|
-
getInstance(): EChartsType | null;
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* 设置组件实例
|
|
184
|
-
*/
|
|
185
|
-
setComponent?(component: any): void;
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* 绑定事件
|
|
189
|
-
*/
|
|
190
|
-
on(eventName: string, handler: (params: any) => void): void;
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* 解绑事件
|
|
194
|
-
*/
|
|
195
|
-
off(eventName: string, handler?: (params: any) => void): void;
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* 调整图表大小
|
|
199
|
-
*/
|
|
200
|
-
resize(): void;
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* 显示加载中
|
|
204
|
-
*/
|
|
205
|
-
showLoading(options?: any): void;
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* 隐藏加载中
|
|
209
|
-
*/
|
|
210
|
-
hideLoading(): void;
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* 清空图表
|
|
214
|
-
*/
|
|
215
|
-
clear(): void;
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* 销毁图表
|
|
219
|
-
*/
|
|
220
|
-
dispose(): void;
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* 获取DataURL
|
|
224
|
-
*/
|
|
225
|
-
getDataURL?(opts?: any): string | undefined;
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* 转换为DataURL
|
|
229
|
-
*/
|
|
230
|
-
convertToDataURL?(opts?: any): string | undefined;
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* 渲染图表(仅 H5 环境需要,小程序适配器不需要)
|
|
234
|
-
*/
|
|
235
|
-
render?(): JSX.Element | null;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
138
|
/**
|
|
239
139
|
* 适配器配置选项
|
|
240
140
|
*/
|
|
241
141
|
export interface AdapterConfig {
|
|
242
|
-
/**
|
|
243
|
-
* 平台类型
|
|
244
|
-
*/
|
|
245
142
|
platformType?: string;
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* 目标canvas元素ID
|
|
249
|
-
*/
|
|
250
143
|
canvasId?: string;
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
* 图表主题
|
|
254
|
-
*/
|
|
255
144
|
theme?: string;
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* 渲染器类型
|
|
259
|
-
*/
|
|
260
145
|
renderer?: 'canvas' | 'svg';
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* 设备像素比
|
|
264
|
-
*/
|
|
265
146
|
devicePixelRatio?: number;
|
|
266
|
-
|
|
267
|
-
/**
|
|
268
|
-
* 宽度
|
|
269
|
-
*/
|
|
270
147
|
width?: number;
|
|
271
|
-
|
|
272
|
-
/**
|
|
273
|
-
* 高度
|
|
274
|
-
*/
|
|
275
148
|
height?: number;
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* 额外选项
|
|
279
|
-
*/
|
|
280
|
-
[key: string]: any;
|
|
149
|
+
[key: string]: unknown;
|
|
281
150
|
}
|
|
@@ -1,96 +1,49 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 支持的平台类型
|
|
3
3
|
*/
|
|
4
|
+
import type {
|
|
5
|
+
EChartsType,
|
|
6
|
+
EChartsOption,
|
|
7
|
+
} from 'echarts';
|
|
8
|
+
import type { CSSProperties } from 'react';
|
|
9
|
+
import type { ChartEventParams } from './common';
|
|
10
|
+
|
|
4
11
|
export enum PlatformType {
|
|
5
12
|
H5 = 'h5',
|
|
6
|
-
WEAPP = 'weapp',
|
|
7
|
-
ALIPAY = 'alipay',
|
|
8
|
-
SWAN = 'swan',
|
|
9
|
-
TT = 'tt',
|
|
10
|
-
QQ = 'qq',
|
|
11
|
-
JD = 'jd',
|
|
12
|
-
HARMONY = 'harmony',
|
|
13
|
-
DD = 'dd',
|
|
14
|
-
QYWX = 'qywx',
|
|
15
|
-
LARK = 'lark',
|
|
16
|
-
KWAI = 'kwai',
|
|
13
|
+
WEAPP = 'weapp',
|
|
14
|
+
ALIPAY = 'alipay',
|
|
15
|
+
SWAN = 'swan',
|
|
16
|
+
TT = 'tt',
|
|
17
|
+
QQ = 'qq',
|
|
18
|
+
JD = 'jd',
|
|
19
|
+
HARMONY = 'harmony',
|
|
20
|
+
DD = 'dd',
|
|
21
|
+
QYWX = 'qywx',
|
|
22
|
+
LARK = 'lark',
|
|
23
|
+
KWAI = 'kwai',
|
|
17
24
|
}
|
|
18
25
|
|
|
19
|
-
// 导出平台类型字符串联合类型
|
|
20
26
|
export type Platform = `${PlatformType}` | 'web' | 'ks';
|
|
21
27
|
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
*/
|
|
25
|
-
export type EventHandler = (params: any) => void;
|
|
28
|
+
/** 图表事件处理器 */
|
|
29
|
+
export type EventHandler = (params: ChartEventParams) => void;
|
|
26
30
|
|
|
27
31
|
/**
|
|
28
32
|
* 适配器通用选项
|
|
29
33
|
*/
|
|
30
34
|
export interface AdapterOptions {
|
|
31
|
-
/**
|
|
32
|
-
* 平台类型
|
|
33
|
-
*/
|
|
34
35
|
platform?: Platform;
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* 画布ID
|
|
38
|
-
*/
|
|
39
36
|
canvasId?: string;
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* 宽度
|
|
43
|
-
*/
|
|
44
37
|
width?: number | string;
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* 高度
|
|
48
|
-
*/
|
|
49
38
|
height?: number | string;
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* 主题
|
|
53
|
-
*/
|
|
54
39
|
theme?: string | object;
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* 是否自动调整大小
|
|
58
|
-
*/
|
|
59
40
|
autoResize?: boolean;
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* 设备像素比
|
|
63
|
-
*/
|
|
64
41
|
devicePixelRatio?: number;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
*/
|
|
69
|
-
onInit?: (instance: any) => void;
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* 容器引用
|
|
73
|
-
*/
|
|
74
|
-
containerRef?: any;
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* 图表选项
|
|
78
|
-
*/
|
|
79
|
-
option?: any;
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* 渲染器类型
|
|
83
|
-
*/
|
|
42
|
+
onInit?: (instance: EChartsType) => void;
|
|
43
|
+
containerRef?: HTMLElement | { current: HTMLElement | null };
|
|
44
|
+
option?: EChartsOption;
|
|
84
45
|
renderer?: 'canvas' | 'svg';
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* 样式对象
|
|
88
|
-
*/
|
|
89
|
-
style?: any;
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* CSS类名
|
|
93
|
-
*/
|
|
46
|
+
style?: CSSProperties;
|
|
94
47
|
className?: string;
|
|
95
48
|
}
|
|
96
49
|
|
|
@@ -98,39 +51,12 @@ export interface AdapterOptions {
|
|
|
98
51
|
* H5环境适配器选项
|
|
99
52
|
*/
|
|
100
53
|
export interface H5AdapterOptions extends AdapterOptions {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
*/
|
|
104
|
-
containerRef?: React.RefObject<HTMLDivElement>;
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* 图表选项
|
|
108
|
-
*/
|
|
109
|
-
option?: any;
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* 是否不合并选项
|
|
113
|
-
*/
|
|
54
|
+
containerRef?: HTMLElement | { current: HTMLElement | null };
|
|
55
|
+
option?: EChartsOption;
|
|
114
56
|
notMerge?: boolean;
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* 是否延迟更新
|
|
118
|
-
*/
|
|
119
57
|
lazyUpdate?: boolean;
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* 样式
|
|
123
|
-
*/
|
|
124
|
-
style?: React.CSSProperties;
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* 类名
|
|
128
|
-
*/
|
|
58
|
+
style?: CSSProperties;
|
|
129
59
|
className?: string;
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* 渲染器类型
|
|
133
|
-
*/
|
|
134
60
|
renderer?: 'canvas' | 'svg';
|
|
135
61
|
}
|
|
136
62
|
|
|
@@ -138,48 +64,19 @@ export interface H5AdapterOptions extends AdapterOptions {
|
|
|
138
64
|
* 小程序适配器基础选项
|
|
139
65
|
*/
|
|
140
66
|
export interface MiniAppAdapterOptions extends AdapterOptions {
|
|
141
|
-
|
|
142
|
-
* 小程序组件实例
|
|
143
|
-
*/
|
|
144
|
-
componentInstance?: any;
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* 是否禁用touch事件
|
|
148
|
-
*/
|
|
67
|
+
componentInstance?: object;
|
|
149
68
|
disableTouch?: boolean;
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* 渲染模式
|
|
153
|
-
*/
|
|
154
69
|
renderMode?: '2d' | 'webgl';
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
* 图表配置选项
|
|
158
|
-
*/
|
|
159
|
-
option?: any;
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* 样式属性
|
|
163
|
-
*/
|
|
164
|
-
style?: React.CSSProperties;
|
|
70
|
+
option?: EChartsOption;
|
|
71
|
+
style?: CSSProperties;
|
|
165
72
|
}
|
|
166
73
|
|
|
167
74
|
/**
|
|
168
75
|
* 微信小程序适配器选项
|
|
169
76
|
*/
|
|
170
77
|
export interface WeappAdapterOptions extends MiniAppAdapterOptions {
|
|
171
|
-
/**
|
|
172
|
-
* 微信特有选项
|
|
173
|
-
*/
|
|
174
78
|
weappOptions?: {
|
|
175
|
-
/**
|
|
176
|
-
* 是否启用右侧菜单
|
|
177
|
-
*/
|
|
178
79
|
enableContextMenu?: boolean;
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* 是否启用跨端同层渲染
|
|
182
|
-
*/
|
|
183
80
|
enableCrossPageTransfer?: boolean;
|
|
184
81
|
};
|
|
185
82
|
}
|
|
@@ -188,13 +85,7 @@ export interface WeappAdapterOptions extends MiniAppAdapterOptions {
|
|
|
188
85
|
* 支付宝小程序适配器选项
|
|
189
86
|
*/
|
|
190
87
|
export interface AlipayAdapterOptions extends MiniAppAdapterOptions {
|
|
191
|
-
/**
|
|
192
|
-
* 支付宝特有选项
|
|
193
|
-
*/
|
|
194
88
|
alipayOptions?: {
|
|
195
|
-
/**
|
|
196
|
-
* 是否启用离屏渲染
|
|
197
|
-
*/
|
|
198
89
|
enableOffscreenRendering?: boolean;
|
|
199
90
|
};
|
|
200
91
|
}
|
|
@@ -203,18 +94,8 @@ export interface AlipayAdapterOptions extends MiniAppAdapterOptions {
|
|
|
203
94
|
* 百度小程序适配器选项
|
|
204
95
|
*/
|
|
205
96
|
export interface SwanAdapterOptions extends MiniAppAdapterOptions {
|
|
206
|
-
/**
|
|
207
|
-
* 百度智能小程序特有选项
|
|
208
|
-
*/
|
|
209
97
|
swanOptions?: {
|
|
210
|
-
/**
|
|
211
|
-
* 是否启用复杂交互
|
|
212
|
-
*/
|
|
213
98
|
enableComplexInteraction?: boolean;
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* 是否启用性能优化
|
|
217
|
-
*/
|
|
218
99
|
enablePerformanceOptimization?: boolean;
|
|
219
100
|
};
|
|
220
101
|
}
|
|
@@ -223,13 +104,7 @@ export interface SwanAdapterOptions extends MiniAppAdapterOptions {
|
|
|
223
104
|
* 鸿蒙OS适配器选项
|
|
224
105
|
*/
|
|
225
106
|
export interface HarmonyAdapterOptions extends AdapterOptions {
|
|
226
|
-
/**
|
|
227
|
-
* 鸿蒙特有选项
|
|
228
|
-
*/
|
|
229
107
|
harmonyOptions?: {
|
|
230
|
-
/**
|
|
231
|
-
* 是否启用硬件加速
|
|
232
|
-
*/
|
|
233
108
|
enableHardwareAcceleration?: boolean;
|
|
234
109
|
};
|
|
235
110
|
}
|
|
@@ -238,88 +113,21 @@ export interface HarmonyAdapterOptions extends AdapterOptions {
|
|
|
238
113
|
* 适配器接口
|
|
239
114
|
*/
|
|
240
115
|
export interface Adapter {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
init(): any;
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
* 获取图表实例
|
|
248
|
-
*/
|
|
249
|
-
getInstance(): any;
|
|
250
|
-
|
|
251
|
-
/**
|
|
252
|
-
* 设置图表配置项
|
|
253
|
-
*/
|
|
254
|
-
setOption(option: any, opts?: any): void;
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
* 获取图表宽度
|
|
258
|
-
*/
|
|
116
|
+
init(options?: object): EChartsType;
|
|
117
|
+
getInstance(): EChartsType | null;
|
|
118
|
+
setOption(option: EChartsOption, opts?: object): void;
|
|
259
119
|
getWidth(): number;
|
|
260
|
-
|
|
261
|
-
/**
|
|
262
|
-
* 获取图表高度
|
|
263
|
-
*/
|
|
264
120
|
getHeight(): number;
|
|
265
|
-
|
|
266
|
-
/**
|
|
267
|
-
* 获取DOM元素
|
|
268
|
-
*/
|
|
269
121
|
getDom(): HTMLElement | null;
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
*/
|
|
274
|
-
resize(opts?: any): void;
|
|
275
|
-
|
|
276
|
-
/**
|
|
277
|
-
* 触发图表行为
|
|
278
|
-
*/
|
|
279
|
-
dispatchAction(payload: any): void;
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* 转换为DataURL
|
|
283
|
-
*/
|
|
284
|
-
convertToDataURL(opts?: any): string | undefined;
|
|
285
|
-
|
|
286
|
-
/**
|
|
287
|
-
* 清空图表
|
|
288
|
-
*/
|
|
122
|
+
resize(opts?: object): void;
|
|
123
|
+
dispatchAction(payload: object): void;
|
|
124
|
+
convertToDataURL(opts?: object): string | undefined;
|
|
289
125
|
clear(): void;
|
|
290
|
-
|
|
291
|
-
/**
|
|
292
|
-
* 获取DataURL
|
|
293
|
-
*/
|
|
294
|
-
getDataURL(opts?: any): string | undefined;
|
|
295
|
-
|
|
296
|
-
/**
|
|
297
|
-
* 绑定事件
|
|
298
|
-
*/
|
|
126
|
+
getDataURL(opts?: object): string | undefined;
|
|
299
127
|
on(eventName: string, handler: EventHandler, context?: object): void;
|
|
300
|
-
|
|
301
|
-
/**
|
|
302
|
-
* 解绑事件
|
|
303
|
-
*/
|
|
304
128
|
off(eventName: string, handler?: EventHandler): void;
|
|
305
|
-
|
|
306
|
-
/**
|
|
307
|
-
* 显示加载动画
|
|
308
|
-
*/
|
|
309
129
|
showLoading(opts?: object): void;
|
|
310
|
-
|
|
311
|
-
/**
|
|
312
|
-
* 隐藏加载动画
|
|
313
|
-
*/
|
|
314
130
|
hideLoading(): void;
|
|
315
|
-
|
|
316
|
-
/**
|
|
317
|
-
* 销毁图表实例
|
|
318
|
-
*/
|
|
319
131
|
dispose(): void;
|
|
320
|
-
|
|
321
|
-
/**
|
|
322
|
-
* 渲染图表
|
|
323
|
-
*/
|
|
324
|
-
render(): JSX.Element;
|
|
132
|
+
render?(): JSX.Element | null;
|
|
325
133
|
}
|