@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agions/taroviz",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.5",
|
|
4
4
|
"description": "基于 Taro 和 ECharts 的多端图表组件库",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"clean": "rimraf dist",
|
|
41
41
|
"test": "jest",
|
|
42
42
|
"test:watch": "jest --watch",
|
|
43
|
+
"test:ci": "jest --ci --maxWorkers=50%",
|
|
43
44
|
"test:coverage": "jest --coverage",
|
|
44
45
|
"cypress:open": "cypress open",
|
|
45
46
|
"cypress:run": "cypress run",
|
|
@@ -94,8 +95,8 @@
|
|
|
94
95
|
"@types/react": "^18.2.61",
|
|
95
96
|
"@types/react-dom": "^18.3.7",
|
|
96
97
|
"@types/testing-library__jest-dom": "^5.14.9",
|
|
97
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
98
|
-
"@typescript-eslint/parser": "^
|
|
98
|
+
"@typescript-eslint/eslint-plugin": "^8.59.1",
|
|
99
|
+
"@typescript-eslint/parser": "^8.59.1",
|
|
99
100
|
"ajv": "^8.18.0",
|
|
100
101
|
"babel-loader": "^10.0.0",
|
|
101
102
|
"clean-webpack-plugin": "^4.0.0",
|
|
@@ -103,13 +104,13 @@
|
|
|
103
104
|
"core-js": "3.41.0",
|
|
104
105
|
"css-loader": "^7.1.2",
|
|
105
106
|
"cypress": "^15.7.0",
|
|
106
|
-
"eslint": "^
|
|
107
|
-
"eslint-config-prettier": "^
|
|
107
|
+
"eslint": "^9.39.4",
|
|
108
|
+
"eslint-config-prettier": "^10.1.8",
|
|
108
109
|
"eslint-import-resolver-typescript": "^4.3.2",
|
|
109
110
|
"eslint-plugin-import": "^2.31.0",
|
|
110
111
|
"eslint-plugin-prettier": "^5.1.3",
|
|
111
|
-
"eslint-plugin-react": "^7.
|
|
112
|
-
"eslint-plugin-react-hooks": "^
|
|
112
|
+
"eslint-plugin-react": "^7.37.5",
|
|
113
|
+
"eslint-plugin-react-hooks": "^5.2.0",
|
|
113
114
|
"fork-ts-checker-webpack-plugin": "^9.1.0",
|
|
114
115
|
"glob": "^10.3.10",
|
|
115
116
|
"husky": "^9.0.11",
|
|
@@ -139,7 +140,6 @@
|
|
|
139
140
|
},
|
|
140
141
|
"dependencies": {
|
|
141
142
|
"@babel/runtime": "^7.28.4",
|
|
142
|
-
"echarts-liquidfill": "^3.1.0",
|
|
143
143
|
"tslib": "^2.8.1"
|
|
144
144
|
},
|
|
145
145
|
"peerDependencies": {
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
"@tarojs/taro": "^3.6.0",
|
|
149
149
|
"echarts": "^5.4.3",
|
|
150
150
|
"react": "^18.2.0",
|
|
151
|
-
"zrender": "^
|
|
151
|
+
"zrender": "^5.4.3"
|
|
152
152
|
},
|
|
153
153
|
"peerDependenciesMeta": {
|
|
154
154
|
"echarts": {
|
|
@@ -185,8 +185,7 @@
|
|
|
185
185
|
"esbuild": "^0.24.2",
|
|
186
186
|
"systeminformation": "^5.22.0",
|
|
187
187
|
"ws": "^8.18.0",
|
|
188
|
-
"path-scurry": "^1.11.0"
|
|
189
|
-
"echarts": "^5.4.3"
|
|
188
|
+
"path-scurry": "^1.11.0"
|
|
190
189
|
},
|
|
191
190
|
"release-it": {
|
|
192
191
|
"git": {
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TaroViz 小程序适配器基类
|
|
3
|
+
* 消除 weapp/swan/tt 三个适配器间的代码重复
|
|
4
|
+
*/
|
|
5
|
+
import { BaseAdapter } from './BaseAdapter';
|
|
6
|
+
import type { Adapter } from './types';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* 小程序适配器选项
|
|
10
|
+
*/
|
|
11
|
+
export interface MiniAppAdapterOptions {
|
|
12
|
+
component?: unknown;
|
|
13
|
+
canvasId?: string;
|
|
14
|
+
width?: number | string;
|
|
15
|
+
height?: number | string;
|
|
16
|
+
theme?: string | object;
|
|
17
|
+
option?: unknown;
|
|
18
|
+
onInit?: (instance: unknown) => void;
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 小程序适配器基类
|
|
24
|
+
* 封装了小程序 canvas 初始化的通用逻辑
|
|
25
|
+
*/
|
|
26
|
+
export abstract class MiniAppAdapter extends BaseAdapter {
|
|
27
|
+
protected component: unknown = null;
|
|
28
|
+
|
|
29
|
+
constructor(config: MiniAppAdapterOptions) {
|
|
30
|
+
super(config);
|
|
31
|
+
this.component = config.component;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* 子类需返回平台名称(用于日志)
|
|
36
|
+
*/
|
|
37
|
+
protected abstract get platformName(): string;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* 创建图表实例
|
|
41
|
+
* 子类可重写此方法以实现平台特定的创建逻辑
|
|
42
|
+
* 默认实现调用 component.createChart
|
|
43
|
+
*/
|
|
44
|
+
protected createChartInstance(
|
|
45
|
+
component: unknown,
|
|
46
|
+
config: {
|
|
47
|
+
id: string;
|
|
48
|
+
width?: number | string;
|
|
49
|
+
height?: number | string;
|
|
50
|
+
theme?: string | object;
|
|
51
|
+
}
|
|
52
|
+
): unknown {
|
|
53
|
+
return (component as { createChart: (cfg: unknown) => unknown }).createChart({
|
|
54
|
+
id: config.id,
|
|
55
|
+
width: config.width,
|
|
56
|
+
height: config.height,
|
|
57
|
+
theme: config.theme,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* 初始化图表
|
|
63
|
+
*/
|
|
64
|
+
init(): unknown {
|
|
65
|
+
const config = this.config as MiniAppAdapterOptions;
|
|
66
|
+
const { canvasId, width, height, theme, option } = config;
|
|
67
|
+
|
|
68
|
+
if (!this.component) {
|
|
69
|
+
console.error(`[TaroViz] ${this.platformName}Adapter: component is required`);
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (!canvasId) {
|
|
74
|
+
console.error(`[TaroViz] ${this.platformName}Adapter: canvasId is required`);
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const chart = this.createChartInstance(this.component, {
|
|
79
|
+
id: canvasId,
|
|
80
|
+
width,
|
|
81
|
+
height,
|
|
82
|
+
theme,
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
if (option) {
|
|
86
|
+
(chart as { setOption: (o: unknown) => void }).setOption(option);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
this.chartInstance = chart;
|
|
90
|
+
|
|
91
|
+
const onInit = config.onInit;
|
|
92
|
+
if (onInit) {
|
|
93
|
+
onInit(chart);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return chart;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* 设置组件引用
|
|
101
|
+
*/
|
|
102
|
+
setComponent(component: unknown): void {
|
|
103
|
+
this.component = component;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* 发送 action
|
|
108
|
+
*/
|
|
109
|
+
dispatchAction(action: unknown): void {
|
|
110
|
+
(this.chartInstance as { dispatchAction?: (a: unknown) => void })?.dispatchAction?.(action);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* 获取数据 URL
|
|
115
|
+
*/
|
|
116
|
+
getDataURL(opts?: unknown): string | undefined {
|
|
117
|
+
return (this.chartInstance as { getDataURL?: (o?: unknown) => string })?.getDataURL?.(opts);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* 创建适配器工厂方法
|
|
123
|
+
* 避免每个子类重复写相同的 static create
|
|
124
|
+
*
|
|
125
|
+
* 注:MiniAppAdapter.init() 返回 unknown ,不满足 Adapter 接口的 EChartsType 要求
|
|
126
|
+
* 但实际使用中通过 as unknown as Adapter 强制转换,与原有子类的 static create 行为一致
|
|
127
|
+
*/
|
|
128
|
+
export function createMiniAppAdapter(
|
|
129
|
+
AdapterClass: new (options: MiniAppAdapterOptions) => MiniAppAdapter
|
|
130
|
+
) {
|
|
131
|
+
return function create(options: MiniAppAdapterOptions): Adapter {
|
|
132
|
+
return new AdapterClass(options) as unknown as Adapter;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export default MiniAppAdapter;
|
|
@@ -33,7 +33,7 @@ describe('Adapter Functions', () => {
|
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
// Skipped: getAdapter uses dynamic imports which don't work well with Jest mocks in this environment
|
|
36
|
-
describe.skip('getAdapter', () => {
|
|
36
|
+
describe.skip('getAdapter', () => {
|
|
37
37
|
it('should return adapter instance for browser environment', async () => {
|
|
38
38
|
const adapter = await getAdapter({});
|
|
39
39
|
expect(adapter).toBeDefined();
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as echarts from 'echarts/core';
|
|
2
2
|
|
|
3
3
|
import H5Adapter from '../index';
|
|
4
|
+
import type { Adapter } from '../../types';
|
|
4
5
|
|
|
5
6
|
// Mock ECharts renderers first
|
|
6
7
|
jest.mock('echarts/renderers', () => ({
|
|
@@ -56,7 +57,7 @@ describe('H5Adapter', () => {
|
|
|
56
57
|
height: 300,
|
|
57
58
|
theme: 'dark',
|
|
58
59
|
renderer: 'canvas',
|
|
59
|
-
});
|
|
60
|
+
}) as unknown as H5Adapter;
|
|
60
61
|
});
|
|
61
62
|
|
|
62
63
|
afterEach(() => {
|
|
@@ -93,7 +94,8 @@ describe('H5Adapter', () => {
|
|
|
93
94
|
|
|
94
95
|
it('should handle theme setting', () => {
|
|
95
96
|
adapter.setTheme('light');
|
|
96
|
-
|
|
97
|
+
// Theme is stored internally and applied on init
|
|
98
|
+
expect(adapter.getInstance()).toBeNull();
|
|
97
99
|
});
|
|
98
100
|
|
|
99
101
|
it('should resize the chart', () => {
|
package/src/adapters/h5/index.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* TaroViz H5 适配器
|
|
3
3
|
* 基于 HTML Canvas 实现图表渲染
|
|
4
4
|
*/
|
|
5
|
-
import type { EChartsType } from 'echarts';
|
|
5
|
+
import type { EChartsType, EChartsOption } from 'echarts';
|
|
6
6
|
import {
|
|
7
7
|
GridComponent,
|
|
8
8
|
TooltipComponent,
|
|
@@ -14,6 +14,7 @@ import { CanvasRenderer, SVGRenderer } from 'echarts/renderers';
|
|
|
14
14
|
import * as React from 'react';
|
|
15
15
|
|
|
16
16
|
import { Adapter, H5AdapterOptions } from '../types';
|
|
17
|
+
import type { EventHandler } from '../../core/types/platform';
|
|
17
18
|
|
|
18
19
|
// 扩展 H5AdapterOptions 类型
|
|
19
20
|
interface ExtendedH5AdapterOptions extends H5AdapterOptions {
|
|
@@ -21,9 +22,9 @@ interface ExtendedH5AdapterOptions extends H5AdapterOptions {
|
|
|
21
22
|
width?: number | string;
|
|
22
23
|
height?: number | string;
|
|
23
24
|
theme?: string | object;
|
|
24
|
-
option?:
|
|
25
|
-
onInit?: (instance:
|
|
26
|
-
containerRef?:
|
|
25
|
+
option?: EChartsOption;
|
|
26
|
+
onInit?: (instance: EChartsType) => void;
|
|
27
|
+
containerRef?: HTMLElement | { current: HTMLElement | null };
|
|
27
28
|
direction?: 'ltr' | 'rtl';
|
|
28
29
|
}
|
|
29
30
|
|
|
@@ -45,9 +46,9 @@ class H5Adapter implements Adapter {
|
|
|
45
46
|
/**
|
|
46
47
|
* 图表实例
|
|
47
48
|
*/
|
|
48
|
-
private instance:
|
|
49
|
+
private instance: EChartsType | null = null;
|
|
49
50
|
private options: ExtendedH5AdapterOptions;
|
|
50
|
-
private containerRef:
|
|
51
|
+
private containerRef: ExtendedH5AdapterOptions['containerRef'] = undefined;
|
|
51
52
|
private canvasId: string;
|
|
52
53
|
|
|
53
54
|
constructor(options: ExtendedH5AdapterOptions) {
|
|
@@ -68,23 +69,27 @@ class H5Adapter implements Adapter {
|
|
|
68
69
|
/**
|
|
69
70
|
* 初始化图表
|
|
70
71
|
*/
|
|
71
|
-
init(_options?:
|
|
72
|
+
init(_options?: EChartsOption): EChartsType {
|
|
72
73
|
if (this.instance) {
|
|
73
74
|
return this.instance;
|
|
74
75
|
}
|
|
75
76
|
|
|
76
77
|
// 获取容器元素
|
|
77
|
-
const container =
|
|
78
|
+
const container =
|
|
79
|
+
this.containerRef && 'current' in this.containerRef
|
|
80
|
+
? this.containerRef.current
|
|
81
|
+
: this.containerRef || document.getElementById(this.canvasId);
|
|
78
82
|
if (!container) {
|
|
79
83
|
throw new Error(`[TaroViz] H5Adapter: container not found (canvasId: ${this.canvasId})`);
|
|
80
84
|
}
|
|
81
85
|
|
|
82
86
|
// 初始化图表
|
|
83
|
-
|
|
87
|
+
|
|
88
|
+
this.instance = echarts.init(container as HTMLElement, this.options.theme, {
|
|
84
89
|
// 性能优化选项
|
|
85
90
|
useDirtyRect: true, // 使用脏矩形渲染,减少重绘区域
|
|
86
91
|
renderer: this.options.renderer || 'canvas',
|
|
87
|
-
} as
|
|
92
|
+
}) as unknown as EChartsType;
|
|
88
93
|
|
|
89
94
|
// 设置性能优化相关的全局配置
|
|
90
95
|
if (this.instance) {
|
|
@@ -101,12 +106,9 @@ class H5Adapter implements Adapter {
|
|
|
101
106
|
);
|
|
102
107
|
}
|
|
103
108
|
|
|
104
|
-
// 设置初始化选项,使用
|
|
109
|
+
// 设置初始化选项,使用lazyUpdate优化性能
|
|
105
110
|
if (this.options.option && this.instance) {
|
|
106
|
-
this.instance.setOption(this.options.option,
|
|
107
|
-
notMerge: false, // 合并新选项和旧选项
|
|
108
|
-
lazyUpdate: true, // 延迟更新,合并多次setOption调用
|
|
109
|
-
});
|
|
111
|
+
this.instance.setOption(this.options.option, false, true);
|
|
110
112
|
}
|
|
111
113
|
|
|
112
114
|
// 执行初始化回调
|
|
@@ -120,20 +122,16 @@ class H5Adapter implements Adapter {
|
|
|
120
122
|
/**
|
|
121
123
|
* 获取图表实例
|
|
122
124
|
*/
|
|
123
|
-
getInstance():
|
|
125
|
+
getInstance(): EChartsType | null {
|
|
124
126
|
return this.instance;
|
|
125
127
|
}
|
|
126
128
|
|
|
127
129
|
/**
|
|
128
130
|
* 设置图表选项
|
|
129
131
|
*/
|
|
130
|
-
setOption(option:
|
|
132
|
+
setOption(option: EChartsOption, notMerge?: boolean, lazyUpdate?: boolean): void {
|
|
131
133
|
if (this.instance) {
|
|
132
|
-
|
|
133
|
-
this.instance.setOption(option, {
|
|
134
|
-
lazyUpdate: true,
|
|
135
|
-
...opts,
|
|
136
|
-
});
|
|
134
|
+
this.instance.setOption(option, notMerge, lazyUpdate);
|
|
137
135
|
} else {
|
|
138
136
|
this.options.option = option;
|
|
139
137
|
}
|
|
@@ -168,7 +166,8 @@ class H5Adapter implements Adapter {
|
|
|
168
166
|
* 获取DOM元素
|
|
169
167
|
*/
|
|
170
168
|
getDom(): HTMLElement | null {
|
|
171
|
-
|
|
169
|
+
const ref = this.containerRef;
|
|
170
|
+
return ref && 'current' in ref ? ref.current : (ref as HTMLElement | null);
|
|
172
171
|
}
|
|
173
172
|
|
|
174
173
|
/**
|
|
@@ -194,18 +193,18 @@ class H5Adapter implements Adapter {
|
|
|
194
193
|
/**
|
|
195
194
|
* 绑定事件
|
|
196
195
|
*/
|
|
197
|
-
on(event: string, handler:
|
|
196
|
+
on(event: string, handler: EventHandler): void {
|
|
198
197
|
if (this.instance) {
|
|
199
|
-
this.instance.on(event, handler);
|
|
198
|
+
this.instance.on(event, handler as any);
|
|
200
199
|
}
|
|
201
200
|
}
|
|
202
201
|
|
|
203
202
|
/**
|
|
204
203
|
* 解绑事件
|
|
205
204
|
*/
|
|
206
|
-
off(event: string, handler?:
|
|
205
|
+
off(event: string, handler?: EventHandler): void {
|
|
207
206
|
if (this.instance) {
|
|
208
|
-
this.instance.off(event, handler);
|
|
207
|
+
this.instance.off(event, handler as any);
|
|
209
208
|
}
|
|
210
209
|
}
|
|
211
210
|
|
|
@@ -230,8 +229,8 @@ class H5Adapter implements Adapter {
|
|
|
230
229
|
/**
|
|
231
230
|
* 设置组件实例
|
|
232
231
|
*/
|
|
233
|
-
setComponent(component:
|
|
234
|
-
this.containerRef = component;
|
|
232
|
+
setComponent(component: unknown): void {
|
|
233
|
+
this.containerRef = component as ExtendedH5AdapterOptions['containerRef'];
|
|
235
234
|
}
|
|
236
235
|
|
|
237
236
|
/**
|
|
@@ -260,7 +259,7 @@ class H5Adapter implements Adapter {
|
|
|
260
259
|
/**
|
|
261
260
|
* 触发图表行为
|
|
262
261
|
*/
|
|
263
|
-
dispatchAction(payload:
|
|
262
|
+
dispatchAction(payload: { type: string; [key: string]: unknown }): void {
|
|
264
263
|
if (this.instance) {
|
|
265
264
|
this.instance.dispatchAction(payload);
|
|
266
265
|
}
|
|
@@ -276,7 +275,7 @@ class H5Adapter implements Adapter {
|
|
|
276
275
|
/**
|
|
277
276
|
* 处理图表大小变化
|
|
278
277
|
*/
|
|
279
|
-
resize(opts?:
|
|
278
|
+
resize(opts?: object): void {
|
|
280
279
|
if (this.instance) {
|
|
281
280
|
this.instance.resize(opts);
|
|
282
281
|
}
|
|
@@ -302,12 +301,12 @@ class H5Adapter implements Adapter {
|
|
|
302
301
|
* 获取平台信息
|
|
303
302
|
* @returns 平台信息
|
|
304
303
|
*/
|
|
305
|
-
getPlatformInfo(): Record<string,
|
|
304
|
+
getPlatformInfo(): Record<string, string> {
|
|
306
305
|
return {
|
|
307
306
|
platform: 'h5',
|
|
308
307
|
renderer: this.options.renderer || 'canvas',
|
|
309
308
|
userAgent: navigator.userAgent,
|
|
310
|
-
devicePixelRatio: window.devicePixelRatio,
|
|
309
|
+
devicePixelRatio: String(window.devicePixelRatio),
|
|
311
310
|
};
|
|
312
311
|
}
|
|
313
312
|
}
|