@agions/taroviz 1.10.0 → 1.11.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/README.md +122 -275
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/vendors.js +1 -0
- package/dist/cjs/vendors~echarts.js +1 -0
- package/dist/esm/index.js +7106 -50834
- package/dist/esm/vendors.js +16770 -0
- package/dist/esm/vendors~echarts.js +59417 -0
- package/package.json +10 -11
- package/src/adapters/MiniAppAdapter.ts +136 -0
- package/src/adapters/__tests__/index.test.ts +1 -1
- package/src/adapters/h5/__tests__/index.test.ts +4 -2
- package/src/adapters/h5/index.ts +32 -33
- package/src/adapters/harmony/index.ts +23 -245
- package/src/adapters/index.ts +18 -12
- package/src/adapters/swan/index.ts +6 -69
- package/src/adapters/tt/index.ts +7 -70
- package/src/adapters/types.ts +2 -3
- package/src/adapters/weapp/index.ts +6 -69
- package/src/charts/__tests__/testUtils.tsx +87 -0
- package/src/charts/boxplot/__tests__/index.test.tsx +49 -103
- package/src/charts/boxplot/index.tsx +2 -1
- package/src/charts/boxplot/types.ts +15 -14
- package/src/charts/common/BaseChartWrapper.tsx +84 -78
- package/src/charts/common/__mocks__/BaseChartWrapper.tsx +17 -0
- package/src/charts/createChartComponent.tsx +48 -0
- package/src/charts/index.ts +88 -30
- package/src/charts/liquid/index.tsx +260 -77
- package/src/charts/liquid/types.ts +5 -5
- package/src/charts/parallel/__tests__/index.test.tsx +40 -67
- package/src/charts/parallel/index.tsx +2 -1
- package/src/charts/parallel/types.ts +16 -15
- package/src/charts/tree/index.tsx +4 -1
- package/src/charts/tree/types.ts +1 -1
- package/src/charts/utils.ts +9 -7
- package/src/components/DataFilter/index.tsx +25 -4
- package/src/core/animation/AnimationManager.ts +9 -6
- package/src/core/animation/types.ts +30 -0
- package/src/core/components/Annotation.tsx +2 -3
- package/src/core/components/BaseChart.tsx +60 -72
- package/src/core/components/ErrorBoundary.tsx +17 -4
- package/src/core/components/LazyChart.tsx +83 -57
- package/src/core/components/hooks/useChartInit.ts +6 -3
- package/src/core/index.ts +1 -1
- package/src/core/themes/ThemeManager.ts +1 -1
- package/src/core/types/common.ts +100 -5
- package/src/core/types/index.ts +0 -12
- package/src/core/types/platform.ts +2 -5
- package/src/core/utils/codeGenerator/CodeGenerator.ts +1 -1
- package/src/core/utils/codeGenerator/types.ts +2 -2
- package/src/core/utils/common.ts +12 -5
- package/src/core/utils/configGenerator/ConfigGenerator.ts +4 -4
- package/src/core/utils/configGenerator/types.ts +16 -12
- package/src/core/utils/debug/DebugPanel.tsx +14 -11
- package/src/core/utils/debug/debugger.ts +9 -9
- package/src/core/utils/debug/types.ts +4 -4
- package/src/core/utils/download.ts +134 -0
- package/src/core/utils/drillDown.ts +33 -353
- package/src/core/utils/drillDownHelpers.ts +426 -0
- package/src/core/utils/export/ExportUtils.ts +67 -69
- package/src/core/utils/index.ts +23 -15
- package/src/core/utils/performance/PerformanceAnalyzer.ts +43 -18
- package/src/core/utils/performance/types.ts +10 -1
- package/src/core/utils/performanceUtils.ts +310 -0
- package/src/core/utils/setOptionUtils.ts +59 -0
- package/src/core/version.ts +14 -0
- package/src/editor/EnhancedThemeEditor.tsx +362 -540
- package/src/editor/ThemeEditor.tsx +55 -321
- package/src/editor/components/ThemeBasicSettings.tsx +113 -0
- package/src/editor/components/ThemeColorEditor.tsx +105 -0
- package/src/editor/components/ThemeSelector.tsx +70 -0
- package/src/editor/hooks/useThemeEditorState.ts +201 -0
- package/src/editor/index.ts +10 -2
- package/src/hooks/__tests__/index.test.tsx +3 -1
- package/src/hooks/chartConnectHelpers.ts +335 -0
- package/src/hooks/index.ts +62 -63
- package/src/hooks/types.ts +162 -0
- package/src/hooks/useAnimation.ts +41 -38
- package/src/hooks/useChartConnect.ts +88 -238
- package/src/hooks/useChartDownload.ts +42 -288
- package/src/hooks/useChartHistory.ts +33 -46
- package/src/hooks/useChartSelection.ts +31 -39
- package/src/hooks/useDataTransform.ts +39 -286
- package/src/hooks/useDataZoom.ts +164 -168
- package/src/hooks/usePerformance.ts +20 -12
- package/src/hooks/usePerformanceHooks.ts +278 -0
- package/src/hooks/utils/chartDownloadUtils.ts +260 -0
- package/src/hooks/utils/dataTransformUtils.ts +309 -0
- package/src/index.ts +52 -33
- package/src/main.tsx +4 -9
- package/src/charts/bar/__tests__/index.test.tsx +0 -113
- package/src/charts/bar/index.tsx +0 -14
- package/src/charts/candlestick/__tests__/index.test.tsx +0 -37
- package/src/charts/candlestick/index.tsx +0 -13
- package/src/charts/funnel/index.tsx +0 -14
- package/src/charts/gauge/index.tsx +0 -14
- package/src/charts/graph/__tests__/index.test.tsx +0 -41
- package/src/charts/graph/index.tsx +0 -13
- package/src/charts/heatmap/index.tsx +0 -14
- package/src/charts/line/__tests__/index.test.tsx +0 -107
- package/src/charts/line/index.tsx +0 -15
- package/src/charts/pie/__tests__/index.test.tsx +0 -112
- package/src/charts/pie/index.tsx +0 -14
- package/src/charts/radar/index.tsx +0 -14
- package/src/charts/sankey/index.tsx +0 -18
- package/src/charts/scatter/index.tsx +0 -14
- package/src/charts/sunburst/index.tsx +0 -18
- package/src/charts/treemap/index.tsx +0 -18
- package/src/charts/wordcloud/__tests__/index.test.tsx +0 -36
- package/src/charts/wordcloud/index.tsx +0 -13
|
@@ -1,57 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* useChartConnect - 图表联动 Hook
|
|
3
3
|
* 实现多个图表之间的联动(chartConnect),当一个图表被操作时,其他联动图表同步变化
|
|
4
|
+
*
|
|
5
|
+
* @refactor 已拆分为多个辅助函数,详见 chartConnectHelpers.ts
|
|
4
6
|
*/
|
|
5
|
-
import { useRef, useCallback, useEffect } from 'react';
|
|
6
|
-
import type {
|
|
7
|
+
import { useRef, useCallback, useEffect, useMemo } from 'react';
|
|
8
|
+
import type {
|
|
9
|
+
ChartInstance,
|
|
10
|
+
UseChartConnectOptions,
|
|
11
|
+
UseChartConnectReturn,
|
|
12
|
+
ConnectEventType,
|
|
13
|
+
} from './types';
|
|
14
|
+
import {
|
|
15
|
+
createConnectHandler,
|
|
16
|
+
dispatchToOthers,
|
|
17
|
+
bindChartEvents,
|
|
18
|
+
unbindChartEvents,
|
|
19
|
+
connectChart,
|
|
20
|
+
disconnectChart,
|
|
21
|
+
connectAllCharts,
|
|
22
|
+
disconnectAllCharts,
|
|
23
|
+
dispatchConnectEvent,
|
|
24
|
+
type ChartConnectItem,
|
|
25
|
+
type EventHandlersMap,
|
|
26
|
+
} from './chartConnectHelpers';
|
|
7
27
|
|
|
8
28
|
// ============================================================================
|
|
9
|
-
//
|
|
29
|
+
// 导出共享类型(从 types.ts re-export)
|
|
10
30
|
// ============================================================================
|
|
11
31
|
|
|
12
|
-
/**
|
|
13
|
-
export type
|
|
14
|
-
|
|
15
|
-
/** 联动配置选项 */
|
|
16
|
-
export interface UseChartConnectOptions {
|
|
17
|
-
/** 要绑定的图表 ID 列表 */
|
|
18
|
-
chartIds: string[];
|
|
19
|
-
/** 联动触发的事件类型 */
|
|
20
|
-
events?: ConnectEventType[];
|
|
21
|
-
/** 是否自动绑定/解绑 */
|
|
22
|
-
autoBind?: boolean;
|
|
23
|
-
/** 联动组名称 */
|
|
24
|
-
groupName?: string;
|
|
25
|
-
/** 是否禁用 */
|
|
26
|
-
disabled?: boolean;
|
|
27
|
-
/** 联动回调 */
|
|
28
|
-
onConnect?: (sourceId: string, targetId: string, payload: any) => void;
|
|
29
|
-
/** 事件过滤函数 */
|
|
30
|
-
eventFilter?: (event: string, params: any) => boolean;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/** 图表联动项 */
|
|
34
|
-
interface ChartConnectItem {
|
|
35
|
-
instance: ChartInstance;
|
|
36
|
-
id: string;
|
|
37
|
-
handlers: Map<string, any>;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/** 联动返回值 */
|
|
41
|
-
export interface UseChartConnectReturn {
|
|
42
|
-
/** 绑定图表到联动组 */
|
|
43
|
-
connect: (chartInstance: ChartInstance, chartId?: string) => void;
|
|
44
|
-
/** 解除图表联动 */
|
|
45
|
-
disconnect: (chartInstance: ChartInstance, chartId?: string) => void;
|
|
46
|
-
/** 触发联动事件 */
|
|
47
|
-
dispatchConnect: (sourceId: string, payload: any) => void;
|
|
48
|
-
/** 批量连接图表 */
|
|
49
|
-
connectAll: (charts: Array<{ instance: ChartInstance; id: string }>) => void;
|
|
50
|
-
/** 批量断开图表 */
|
|
51
|
-
disconnectAll: () => void;
|
|
52
|
-
/** 联动组是否已连接 */
|
|
53
|
-
isConnected: boolean;
|
|
54
|
-
}
|
|
32
|
+
/** 联动配置选项(从 types.ts 导出) */
|
|
33
|
+
export type { UseChartConnectOptions, UseChartConnectReturn } from './types';
|
|
55
34
|
|
|
56
35
|
// ============================================================================
|
|
57
36
|
// Hook 实现
|
|
@@ -65,7 +44,7 @@ export interface UseChartConnectReturn {
|
|
|
65
44
|
export function useChartConnect(options: UseChartConnectOptions): UseChartConnectReturn {
|
|
66
45
|
const {
|
|
67
46
|
chartIds = [],
|
|
68
|
-
events = ['click', 'hover', 'select', 'dataZoom'],
|
|
47
|
+
events = useMemo(() => ['click', 'hover', 'select', 'dataZoom'], []),
|
|
69
48
|
autoBind = false,
|
|
70
49
|
groupName,
|
|
71
50
|
disabled = false,
|
|
@@ -74,180 +53,93 @@ export function useChartConnect(options: UseChartConnectOptions): UseChartConnec
|
|
|
74
53
|
} = options;
|
|
75
54
|
|
|
76
55
|
// Refs
|
|
77
|
-
|
|
56
|
+
// 使用 useMemo 缓存初始值,避免每次渲染都创建新 Map
|
|
57
|
+
const chartsRef = useRef<Map<string, ChartConnectItem>>(
|
|
58
|
+
(() => {
|
|
59
|
+
const initialMap = new Map();
|
|
60
|
+
return initialMap;
|
|
61
|
+
})()
|
|
62
|
+
);
|
|
78
63
|
const connectedRef = useRef(false);
|
|
79
64
|
const optionsRef = useRef(options);
|
|
80
65
|
optionsRef.current = options;
|
|
81
66
|
|
|
82
|
-
|
|
83
|
-
|
|
67
|
+
const eventHandlersRef = useRef<EventHandlersMap>(
|
|
68
|
+
(() => {
|
|
69
|
+
const initialMap = new Map();
|
|
70
|
+
return initialMap;
|
|
71
|
+
})()
|
|
72
|
+
);
|
|
84
73
|
|
|
85
74
|
/**
|
|
86
75
|
* 创建联动事件处理器
|
|
87
76
|
*/
|
|
88
|
-
const
|
|
77
|
+
const createConnectHandlerCallback = useCallback(
|
|
89
78
|
(sourceId: string, eventType: ConnectEventType) => {
|
|
90
|
-
return (
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
// 分发联动事件到所有其他图表
|
|
99
|
-
dispatchToOthers(sourceId, eventType, params);
|
|
100
|
-
|
|
101
|
-
// 触发回调
|
|
102
|
-
const currentOptions = optionsRef.current;
|
|
103
|
-
if (currentOptions.onConnect) {
|
|
104
|
-
chartsRef.current.forEach((item, targetId) => {
|
|
105
|
-
if (targetId !== sourceId) {
|
|
106
|
-
currentOptions.onConnect?.(sourceId, targetId, { eventType, params });
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
};
|
|
79
|
+
return createConnectHandler(
|
|
80
|
+
sourceId,
|
|
81
|
+
eventType,
|
|
82
|
+
disabled,
|
|
83
|
+
eventFilter,
|
|
84
|
+
chartsRef,
|
|
85
|
+
optionsRef
|
|
86
|
+
);
|
|
111
87
|
},
|
|
112
|
-
[disabled, eventFilter]
|
|
88
|
+
[disabled, eventFilter, chartsRef, optionsRef]
|
|
113
89
|
);
|
|
114
90
|
|
|
115
91
|
/**
|
|
116
92
|
* 分发事件到其他图表
|
|
117
93
|
*/
|
|
118
|
-
const
|
|
119
|
-
(sourceId: string, eventType: ConnectEventType, params:
|
|
120
|
-
|
|
121
|
-
if (targetId === sourceId) return;
|
|
122
|
-
|
|
123
|
-
try {
|
|
124
|
-
switch (eventType) {
|
|
125
|
-
case 'click':
|
|
126
|
-
item.instance.dispatchAction?.({
|
|
127
|
-
type: 'showTip',
|
|
128
|
-
seriesIndex: params?.seriesIndex,
|
|
129
|
-
dataIndex: params?.dataIndex,
|
|
130
|
-
});
|
|
131
|
-
break;
|
|
132
|
-
|
|
133
|
-
case 'hover':
|
|
134
|
-
item.instance.dispatchAction?.({
|
|
135
|
-
type: 'showTip',
|
|
136
|
-
seriesIndex: params?.seriesIndex,
|
|
137
|
-
dataIndex: params?.dataIndex,
|
|
138
|
-
});
|
|
139
|
-
break;
|
|
140
|
-
|
|
141
|
-
case 'select':
|
|
142
|
-
item.instance.dispatchAction?.({
|
|
143
|
-
type: 'toggleSelect',
|
|
144
|
-
seriesIndex: params?.seriesIndex,
|
|
145
|
-
dataIndex: params?.dataIndex,
|
|
146
|
-
});
|
|
147
|
-
break;
|
|
148
|
-
|
|
149
|
-
case 'dataZoom':
|
|
150
|
-
item.instance.dispatchAction?.({
|
|
151
|
-
type: 'dataZoom',
|
|
152
|
-
start: params?.start,
|
|
153
|
-
end: params?.end,
|
|
154
|
-
dataZoomIndex: params?.dataZoomIndex,
|
|
155
|
-
dataZoomIndexs: params?.dataZoomIndexs,
|
|
156
|
-
});
|
|
157
|
-
break;
|
|
158
|
-
|
|
159
|
-
default:
|
|
160
|
-
break;
|
|
161
|
-
}
|
|
162
|
-
} catch (e) {
|
|
163
|
-
console.warn(`[useChartConnect] Failed to dispatch ${eventType} to ${targetId}:`, e);
|
|
164
|
-
}
|
|
165
|
-
});
|
|
94
|
+
const dispatchToOthersCallback = useCallback(
|
|
95
|
+
(sourceId: string, eventType: ConnectEventType, params: unknown) => {
|
|
96
|
+
dispatchToOthers(sourceId, eventType, params, chartsRef);
|
|
166
97
|
},
|
|
167
|
-
[]
|
|
98
|
+
[chartsRef]
|
|
168
99
|
);
|
|
169
100
|
|
|
170
101
|
/**
|
|
171
102
|
* 绑定单个图表的联动事件
|
|
172
103
|
*/
|
|
173
|
-
const
|
|
104
|
+
const bindChartEventsCallback = useCallback(
|
|
174
105
|
(chartInstance: ChartInstance, chartId: string) => {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
handlers.set(eventType, handler);
|
|
183
|
-
|
|
184
|
-
try {
|
|
185
|
-
chartInstance.on(eventType, handler);
|
|
186
|
-
} catch (e) {
|
|
187
|
-
console.warn(`[useChartConnect] Failed to bind ${eventType} event:`, e);
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
eventHandlersRef.current.set(chartId, handlers);
|
|
106
|
+
bindChartEvents(
|
|
107
|
+
chartInstance,
|
|
108
|
+
chartId,
|
|
109
|
+
events,
|
|
110
|
+
createConnectHandlerCallback,
|
|
111
|
+
eventHandlersRef
|
|
112
|
+
);
|
|
192
113
|
},
|
|
193
|
-
[events,
|
|
114
|
+
[events, createConnectHandlerCallback, eventHandlersRef]
|
|
194
115
|
);
|
|
195
116
|
|
|
196
117
|
/**
|
|
197
118
|
* 解绑单个图表的联动事件
|
|
198
119
|
*/
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
handlers.forEach((handler, eventType) => {
|
|
207
|
-
try {
|
|
208
|
-
chartItem.instance.off(eventType, handler);
|
|
209
|
-
} catch (e) {
|
|
210
|
-
console.warn(`[useChartConnect] Failed to unbind ${eventType} event:`, e);
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
eventHandlersRef.current.delete(chartId);
|
|
215
|
-
}, []);
|
|
120
|
+
const unbindChartEventsCallback = useCallback(
|
|
121
|
+
(chartId: string) => {
|
|
122
|
+
unbindChartEvents(chartId, eventHandlersRef, chartsRef);
|
|
123
|
+
},
|
|
124
|
+
[eventHandlersRef, chartsRef]
|
|
125
|
+
);
|
|
216
126
|
|
|
217
127
|
/**
|
|
218
128
|
* 绑定图表到联动组
|
|
219
129
|
*/
|
|
220
130
|
const connect = useCallback(
|
|
221
131
|
(chartInstance: ChartInstance, chartId?: string) => {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
chartsRef.current.set(id, {
|
|
232
|
-
instance: chartInstance,
|
|
233
|
-
id,
|
|
234
|
-
handlers: new Map(),
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
// 绑定事件
|
|
238
|
-
bindChartEvents(chartInstance, id);
|
|
239
|
-
connectedRef.current = true;
|
|
240
|
-
|
|
241
|
-
// 如果有 groupName,设置图表组
|
|
242
|
-
if (groupName && chartInstance.group !== undefined) {
|
|
243
|
-
try {
|
|
244
|
-
(chartInstance as any).group = groupName;
|
|
245
|
-
} catch (e) {
|
|
246
|
-
console.warn('[useChartConnect] Failed to set chart group:', e);
|
|
247
|
-
}
|
|
248
|
-
}
|
|
132
|
+
connectChart(
|
|
133
|
+
chartInstance,
|
|
134
|
+
chartId,
|
|
135
|
+
groupName,
|
|
136
|
+
chartsRef,
|
|
137
|
+
connectedRef,
|
|
138
|
+
eventHandlersRef,
|
|
139
|
+
bindChartEventsCallback
|
|
140
|
+
);
|
|
249
141
|
},
|
|
250
|
-
[
|
|
142
|
+
[groupName, chartsRef, connectedRef, eventHandlersRef, bindChartEventsCallback]
|
|
251
143
|
);
|
|
252
144
|
|
|
253
145
|
/**
|
|
@@ -255,56 +147,19 @@ export function useChartConnect(options: UseChartConnectOptions): UseChartConnec
|
|
|
255
147
|
*/
|
|
256
148
|
const disconnect = useCallback(
|
|
257
149
|
(chartInstance: ChartInstance, chartId?: string) => {
|
|
258
|
-
|
|
259
|
-
let targetId = chartId;
|
|
260
|
-
if (!targetId) {
|
|
261
|
-
chartsRef.current.forEach((item, id) => {
|
|
262
|
-
if (item.instance === chartInstance) {
|
|
263
|
-
targetId = id;
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
if (!targetId || !chartsRef.current.has(targetId)) {
|
|
269
|
-
console.warn(`[useChartConnect] Chart ${targetId} not found in connection group`);
|
|
270
|
-
return;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
// 解绑事件
|
|
274
|
-
unbindChartEvents(targetId);
|
|
275
|
-
|
|
276
|
-
// 移除图表
|
|
277
|
-
chartsRef.current.delete(targetId);
|
|
278
|
-
|
|
279
|
-
// 更新连接状态
|
|
280
|
-
connectedRef.current = chartsRef.current.size > 0;
|
|
150
|
+
disconnectChart(chartInstance, chartId, chartsRef, connectedRef, unbindChartEventsCallback);
|
|
281
151
|
},
|
|
282
|
-
[
|
|
152
|
+
[chartsRef, connectedRef, unbindChartEventsCallback]
|
|
283
153
|
);
|
|
284
154
|
|
|
285
155
|
/**
|
|
286
156
|
* 触发联动事件
|
|
287
157
|
*/
|
|
288
158
|
const dispatchConnect = useCallback(
|
|
289
|
-
(sourceId: string, payload:
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
const chartItem = chartsRef.current.get(sourceId);
|
|
293
|
-
if (!chartItem) {
|
|
294
|
-
console.warn(`[useChartConnect] Source chart ${sourceId} not found`);
|
|
295
|
-
return;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
const { eventType, params } = payload || {};
|
|
299
|
-
if (!eventType) {
|
|
300
|
-
console.warn('[useChartConnect] Payload must include eventType');
|
|
301
|
-
return;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
// 分发事件到其他图表
|
|
305
|
-
dispatchToOthers(sourceId, eventType, params);
|
|
159
|
+
(sourceId: string, payload: { eventType: ConnectEventType; params: unknown }) => {
|
|
160
|
+
dispatchConnectEvent(sourceId, payload, disabled, chartsRef, dispatchToOthersCallback);
|
|
306
161
|
},
|
|
307
|
-
[disabled,
|
|
162
|
+
[disabled, chartsRef, dispatchToOthersCallback]
|
|
308
163
|
);
|
|
309
164
|
|
|
310
165
|
/**
|
|
@@ -312,9 +167,7 @@ export function useChartConnect(options: UseChartConnectOptions): UseChartConnec
|
|
|
312
167
|
*/
|
|
313
168
|
const connectAll = useCallback(
|
|
314
169
|
(charts: Array<{ instance: ChartInstance; id: string }>) => {
|
|
315
|
-
charts
|
|
316
|
-
connect(instance, id);
|
|
317
|
-
});
|
|
170
|
+
connectAllCharts(charts, connect);
|
|
318
171
|
},
|
|
319
172
|
[connect]
|
|
320
173
|
);
|
|
@@ -323,12 +176,8 @@ export function useChartConnect(options: UseChartConnectOptions): UseChartConnec
|
|
|
323
176
|
* 批量断开所有图表
|
|
324
177
|
*/
|
|
325
178
|
const disconnectAll = useCallback(() => {
|
|
326
|
-
chartsRef
|
|
327
|
-
|
|
328
|
-
});
|
|
329
|
-
chartsRef.current.clear();
|
|
330
|
-
connectedRef.current = false;
|
|
331
|
-
}, [unbindChartEvents]);
|
|
179
|
+
disconnectAllCharts(chartsRef, connectedRef, unbindChartEventsCallback);
|
|
180
|
+
}, [chartsRef, connectedRef, unbindChartEventsCallback]);
|
|
332
181
|
|
|
333
182
|
// 自动绑定
|
|
334
183
|
useEffect(() => {
|
|
@@ -359,4 +208,5 @@ export function useChartConnect(options: UseChartConnectOptions): UseChartConnec
|
|
|
359
208
|
// 导出
|
|
360
209
|
// ============================================================================
|
|
361
210
|
|
|
362
|
-
|
|
211
|
+
/** 导出共享事件类型 */
|
|
212
|
+
export type { ConnectEventType, ChartConnectItem, EventHandlersMap } from './chartConnectHelpers';
|