@agions/taroviz 1.3.1 → 1.5.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/dist/cjs/index.js +1 -1
- package/dist/esm/index.js +2035 -1745
- package/package.json +1 -1
- package/src/__tests__/integration.test.tsx +12 -10
- package/src/adapters/BaseAdapter.ts +116 -0
- package/src/adapters/__tests__/index.test.ts +10 -10
- package/src/adapters/index.ts +63 -74
- package/src/adapters/swan/index.ts +26 -223
- package/src/adapters/tt/index.ts +28 -225
- package/src/adapters/types.ts +36 -0
- package/src/adapters/weapp/index.ts +29 -189
- package/src/charts/bar/index.tsx +5 -9
- package/src/charts/candlestick/__tests__/index.test.tsx +37 -0
- package/src/charts/candlestick/index.tsx +13 -0
- package/src/charts/common/BaseChartWrapper.tsx +47 -38
- package/src/charts/funnel/index.tsx +5 -9
- package/src/charts/gauge/index.tsx +5 -9
- package/src/charts/graph/__tests__/index.test.tsx +41 -0
- package/src/charts/graph/index.tsx +13 -0
- package/src/charts/heatmap/index.tsx +5 -9
- package/src/charts/index.ts +6 -1
- package/src/charts/line/index.tsx +4 -7
- package/src/charts/pie/index.tsx +5 -10
- package/src/charts/radar/index.tsx +5 -9
- package/src/charts/scatter/index.tsx +5 -9
- package/src/charts/types.ts +48 -4
- package/src/charts/wordcloud/__tests__/index.test.tsx +36 -0
- package/src/charts/wordcloud/index.tsx +13 -0
- package/src/core/animation/AnimationManager.ts +15 -0
- package/src/core/components/Annotation.tsx +26 -21
- package/src/core/components/BaseChart.tsx +280 -1105
- package/src/core/components/ErrorBoundary.tsx +4 -1
- package/src/core/components/LazyChart.tsx +42 -55
- package/src/core/components/hooks/index.ts +20 -0
- package/src/core/components/hooks/useChartEvents.ts +143 -0
- package/src/core/components/hooks/useChartInit.ts +80 -0
- package/src/core/components/hooks/usePerformance.ts +186 -0
- package/src/core/components/hooks/useVirtualScroll.ts +156 -0
- package/src/core/echarts.ts +1 -1
- package/src/core/themes/ThemeManager.ts +31 -15
- package/src/core/types/index.ts +2 -2
- package/src/core/utils/chartInstances.ts +10 -3
- package/src/core/utils/chartUtils.ts +46 -0
- package/src/core/utils/common.ts +14 -1
- package/src/core/utils/export/ExportUtils.ts +13 -22
- package/src/core/utils/performance/PerformanceAnalyzer.ts +32 -5
- package/src/core/utils/uuid.ts +1 -1
- package/src/editor/ThemeEditor.tsx +1 -6
- package/src/hooks/__tests__/index.test.tsx +14 -11
- package/src/hooks/__tests__/useDataTransform.test.ts +159 -0
- package/src/hooks/index.ts +54 -19
- package/src/hooks/useDataTransform.ts +503 -0
- package/src/index.ts +15 -2
- package/src/main.tsx +4 -4
- package/src/themes/__tests__/index.test.ts +2 -2
- package/src/themes/index.ts +13 -0
package/dist/esm/index.js
CHANGED
|
@@ -1,10 +1,121 @@
|
|
|
1
1
|
/******/ var __webpack_modules__ = ({
|
|
2
2
|
|
|
3
|
+
/***/ 219
|
|
4
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
5
|
+
|
|
6
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
7
|
+
/* harmony export */ D: () => (/* binding */ BaseAdapter)
|
|
8
|
+
/* harmony export */ });
|
|
9
|
+
/**
|
|
10
|
+
* TaroViz 适配器基类
|
|
11
|
+
* 提供通用方法,减少子类重复代码
|
|
12
|
+
* 注意:这是一个工具基类,不直接实现 Adapter 接口
|
|
13
|
+
* 子类负责实现真正的 Adapter 接口
|
|
14
|
+
*/
|
|
15
|
+
var BaseAdapter = /** @class */function () {
|
|
16
|
+
function BaseAdapter(config) {
|
|
17
|
+
if (config === void 0) {
|
|
18
|
+
config = {};
|
|
19
|
+
}
|
|
20
|
+
this.chartInstance = null;
|
|
21
|
+
this.config = config;
|
|
22
|
+
}
|
|
23
|
+
BaseAdapter.prototype.getInstance = function () {
|
|
24
|
+
return this.chartInstance;
|
|
25
|
+
};
|
|
26
|
+
BaseAdapter.prototype.setOption = function (option, opts) {
|
|
27
|
+
if (this.chartInstance) {
|
|
28
|
+
this.chartInstance.setOption(option, opts);
|
|
29
|
+
} else {
|
|
30
|
+
this.config['option'] = option;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
BaseAdapter.prototype.setTheme = function (theme) {
|
|
34
|
+
this.config['theme'] = theme;
|
|
35
|
+
var instance = this.chartInstance;
|
|
36
|
+
if (instance === null || instance === void 0 ? void 0 : instance.setTheme) {
|
|
37
|
+
instance.setTheme(theme);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
BaseAdapter.prototype.getWidth = function () {
|
|
41
|
+
var w = this.config['width'];
|
|
42
|
+
if (typeof w === 'number') return w;
|
|
43
|
+
if (typeof w === 'string') {
|
|
44
|
+
var parsed = parseInt(w, 10);
|
|
45
|
+
if (!isNaN(parsed)) return parsed;
|
|
46
|
+
}
|
|
47
|
+
return 300;
|
|
48
|
+
};
|
|
49
|
+
BaseAdapter.prototype.getHeight = function () {
|
|
50
|
+
var h = this.config['height'];
|
|
51
|
+
if (typeof h === 'number') return h;
|
|
52
|
+
if (typeof h === 'string') {
|
|
53
|
+
var parsed = parseInt(h, 10);
|
|
54
|
+
if (!isNaN(parsed)) return parsed;
|
|
55
|
+
}
|
|
56
|
+
return 300;
|
|
57
|
+
};
|
|
58
|
+
BaseAdapter.prototype.getDom = function () {
|
|
59
|
+
return null;
|
|
60
|
+
};
|
|
61
|
+
BaseAdapter.prototype.convertToDataURL = function (opts) {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
return (_b = (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.getDataURL) === null || _b === void 0 ? void 0 : _b.call(_a, opts);
|
|
64
|
+
};
|
|
65
|
+
BaseAdapter.prototype.clear = function () {
|
|
66
|
+
var _a, _b;
|
|
67
|
+
(_b = (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
68
|
+
};
|
|
69
|
+
BaseAdapter.prototype.on = function (event, handler) {
|
|
70
|
+
var _a, _b;
|
|
71
|
+
(_b = (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.on) === null || _b === void 0 ? void 0 : _b.call(_a, event, handler);
|
|
72
|
+
};
|
|
73
|
+
BaseAdapter.prototype.off = function (event, handler) {
|
|
74
|
+
var _a, _b;
|
|
75
|
+
(_b = (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.off) === null || _b === void 0 ? void 0 : _b.call(_a, event, handler);
|
|
76
|
+
};
|
|
77
|
+
BaseAdapter.prototype.showLoading = function (opts) {
|
|
78
|
+
var _a, _b;
|
|
79
|
+
(_b = (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.showLoading) === null || _b === void 0 ? void 0 : _b.call(_a, opts);
|
|
80
|
+
};
|
|
81
|
+
BaseAdapter.prototype.hideLoading = function () {
|
|
82
|
+
var _a, _b;
|
|
83
|
+
(_b = (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.hideLoading) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
84
|
+
};
|
|
85
|
+
BaseAdapter.prototype.dispose = function () {
|
|
86
|
+
var _a, _b;
|
|
87
|
+
if (this.chartInstance) {
|
|
88
|
+
(_b = (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
89
|
+
this.chartInstance = null;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
BaseAdapter.prototype.resize = function (opts) {
|
|
93
|
+
var _a, _b;
|
|
94
|
+
(_b = (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.resize) === null || _b === void 0 ? void 0 : _b.call(_a, opts);
|
|
95
|
+
};
|
|
96
|
+
BaseAdapter.prototype.setComponent = function (component) {
|
|
97
|
+
this.config['component'] = component;
|
|
98
|
+
};
|
|
99
|
+
BaseAdapter.prototype.parseSize = function (value, defaultValue) {
|
|
100
|
+
if (typeof value === 'number') return value;
|
|
101
|
+
if (typeof value === 'string') {
|
|
102
|
+
var parsed = parseInt(value, 10);
|
|
103
|
+
if (!isNaN(parsed)) return parsed;
|
|
104
|
+
}
|
|
105
|
+
return defaultValue;
|
|
106
|
+
};
|
|
107
|
+
return BaseAdapter;
|
|
108
|
+
}();
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
/***/ },
|
|
112
|
+
|
|
3
113
|
/***/ 123
|
|
4
114
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
5
115
|
|
|
116
|
+
__webpack_require__.r(__webpack_exports__);
|
|
6
117
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
7
|
-
/* harmony export */
|
|
118
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
8
119
|
/* harmony export */ });
|
|
9
120
|
/* harmony import */ var echarts_components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163);
|
|
10
121
|
/* harmony import */ var echarts_components__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(echarts_components__WEBPACK_IMPORTED_MODULE_0__);
|
|
@@ -275,121 +386,15 @@ var H5Adapter = /** @class */function () {
|
|
|
275
386
|
|
|
276
387
|
/***/ },
|
|
277
388
|
|
|
278
|
-
/***/
|
|
389
|
+
/***/ 382
|
|
279
390
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
280
391
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
// UNUSED EXPORTS: H5Adapter, HarmonyAdapter, PlatformType, SwanAdapter, TTAdapter, WeappAdapter, default, version
|
|
290
|
-
|
|
291
|
-
;// ./src/core/types/common.ts
|
|
292
|
-
/**
|
|
293
|
-
* 图表事件声明
|
|
294
|
-
*/
|
|
295
|
-
var ChartEventType;
|
|
296
|
-
(function (ChartEventType) {
|
|
297
|
-
ChartEventType["CLICK"] = "click";
|
|
298
|
-
ChartEventType["MOUSEMOVE"] = "mousemove";
|
|
299
|
-
ChartEventType["MOUSEUP"] = "mouseup";
|
|
300
|
-
ChartEventType["MOUSEDOWN"] = "mousedown";
|
|
301
|
-
ChartEventType["MOUSEOVER"] = "mouseover";
|
|
302
|
-
ChartEventType["MOUSEOUT"] = "mouseout";
|
|
303
|
-
ChartEventType["GLOBALOUT"] = "globalout";
|
|
304
|
-
ChartEventType["LEGENDSELECTED"] = "legendselected";
|
|
305
|
-
ChartEventType["LEGENDUNSELECTED"] = "legendunselected";
|
|
306
|
-
ChartEventType["LEGENDSELECTCHANGED"] = "legendselectchanged";
|
|
307
|
-
ChartEventType["LEGENDSCROLL"] = "legendscroll";
|
|
308
|
-
ChartEventType["DATAZOOM"] = "datazoom";
|
|
309
|
-
ChartEventType["DATARANGESELECTED"] = "datarangeselected";
|
|
310
|
-
ChartEventType["TIMELINECHANGED"] = "timelinechanged";
|
|
311
|
-
ChartEventType["TIMELINEPLAYCHANGED"] = "timelineplaychanged";
|
|
312
|
-
ChartEventType["RESTORE"] = "restore";
|
|
313
|
-
ChartEventType["DATAVIEWCHANGED"] = "dataviewchanged";
|
|
314
|
-
ChartEventType["MAGICTYPECHANGED"] = "magictypechanged";
|
|
315
|
-
ChartEventType["GEOSELECTCHANGED"] = "geoselectchanged";
|
|
316
|
-
ChartEventType["GEOSELECTED"] = "geoselected";
|
|
317
|
-
ChartEventType["GEOUNSELECTED"] = "geounselected";
|
|
318
|
-
ChartEventType["PIESELECTCHANGED"] = "pieselectchanged";
|
|
319
|
-
ChartEventType["PIESELECTED"] = "pieselected";
|
|
320
|
-
ChartEventType["PIEUNSELECTED"] = "pieunselected";
|
|
321
|
-
ChartEventType["MAPSELECTCHANGED"] = "mapselectchanged";
|
|
322
|
-
ChartEventType["MAPSELECTED"] = "mapselected";
|
|
323
|
-
ChartEventType["MAPUNSELECTED"] = "mapunselected";
|
|
324
|
-
ChartEventType["AXISAREASELECTED"] = "axisareaselected";
|
|
325
|
-
ChartEventType["FOCUSNODEADJACENCY"] = "focusnodeadjacency";
|
|
326
|
-
ChartEventType["UNFOCUSNODEADJACENCY"] = "unfocusnodeadjacency";
|
|
327
|
-
ChartEventType["BRUSH"] = "brush";
|
|
328
|
-
ChartEventType["BRUSHSELECTED"] = "brushselected";
|
|
329
|
-
ChartEventType["RENDERED"] = "rendered";
|
|
330
|
-
ChartEventType["FINISHED"] = "finished";
|
|
331
|
-
// 自定义事件
|
|
332
|
-
ChartEventType["CHART_READY"] = "chartReady";
|
|
333
|
-
ChartEventType["CHART_RESIZE"] = "chartResize";
|
|
334
|
-
ChartEventType["CHART_ERROR"] = "chartError";
|
|
335
|
-
ChartEventType["CHART_DISPOSE"] = "chartDispose";
|
|
336
|
-
})(ChartEventType || (ChartEventType = {}));
|
|
337
|
-
;// ./src/core/types/platform.ts
|
|
338
|
-
/**
|
|
339
|
-
* 支持的平台类型
|
|
340
|
-
*/
|
|
341
|
-
var PlatformType;
|
|
342
|
-
(function (PlatformType) {
|
|
343
|
-
PlatformType["H5"] = "h5";
|
|
344
|
-
PlatformType["WEAPP"] = "weapp";
|
|
345
|
-
PlatformType["ALIPAY"] = "alipay";
|
|
346
|
-
PlatformType["SWAN"] = "swan";
|
|
347
|
-
PlatformType["TT"] = "tt";
|
|
348
|
-
PlatformType["QQ"] = "qq";
|
|
349
|
-
PlatformType["JD"] = "jd";
|
|
350
|
-
PlatformType["HARMONY"] = "harmony";
|
|
351
|
-
PlatformType["DD"] = "dd";
|
|
352
|
-
PlatformType["QYWX"] = "qywx";
|
|
353
|
-
PlatformType["LARK"] = "lark";
|
|
354
|
-
PlatformType["KWAI"] = "kwai";
|
|
355
|
-
})(PlatformType || (PlatformType = {}));
|
|
356
|
-
// EXTERNAL MODULE: ./src/core/animation/index.ts + 2 modules
|
|
357
|
-
var animation = __webpack_require__(251);
|
|
358
|
-
;// ./src/core/types/index.ts
|
|
359
|
-
// 公共类型
|
|
360
|
-
|
|
361
|
-
// 平台类型
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
// 导出动画相关类型
|
|
365
|
-
|
|
366
|
-
// EXTERNAL MODULE: ./src/core/utils/index.ts + 2 modules
|
|
367
|
-
var utils = __webpack_require__(524);
|
|
368
|
-
// EXTERNAL MODULE: ./src/core/echarts.ts + 1 modules
|
|
369
|
-
var echarts = __webpack_require__(930);
|
|
370
|
-
;// ./src/core/index.ts
|
|
371
|
-
/**
|
|
372
|
-
* TaroViz 核心组件库
|
|
373
|
-
* 提供基础组件和工具函数
|
|
374
|
-
*/
|
|
375
|
-
// 类型定义
|
|
376
|
-
|
|
377
|
-
// 工具函数
|
|
378
|
-
|
|
379
|
-
// ECharts 统一导出
|
|
380
|
-
|
|
381
|
-
/**
|
|
382
|
-
* 库信息
|
|
383
|
-
*/
|
|
384
|
-
var core_name = 'taroviz';
|
|
385
|
-
var version = '1.2.0';
|
|
386
|
-
// EXTERNAL MODULE: ./src/adapters/h5/index.ts
|
|
387
|
-
var h5 = __webpack_require__(123);
|
|
388
|
-
// EXTERNAL MODULE: ./src/adapters/weapp/index.ts
|
|
389
|
-
var weapp = __webpack_require__(999);
|
|
390
|
-
// EXTERNAL MODULE: external "react"
|
|
391
|
-
var external_react_ = __webpack_require__(15);
|
|
392
|
-
;// ./src/adapters/swan/index.ts
|
|
392
|
+
__webpack_require__.r(__webpack_exports__);
|
|
393
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
394
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
395
|
+
/* harmony export */ });
|
|
396
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
|
|
397
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
393
398
|
var __assign = undefined && undefined.__assign || function () {
|
|
394
399
|
__assign = Object.assign || function (t) {
|
|
395
400
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
@@ -401,19 +406,19 @@ var __assign = undefined && undefined.__assign || function () {
|
|
|
401
406
|
return __assign.apply(this, arguments);
|
|
402
407
|
};
|
|
403
408
|
/**
|
|
404
|
-
* TaroViz
|
|
405
|
-
*
|
|
409
|
+
* TaroViz HarmonyOS适配器
|
|
410
|
+
* 基于HarmonyOS Canvas实现图表渲染
|
|
406
411
|
*/
|
|
407
412
|
|
|
408
413
|
/**
|
|
409
|
-
*
|
|
414
|
+
* HarmonyOS环境下的图表适配器
|
|
410
415
|
*/
|
|
411
|
-
var
|
|
416
|
+
var HarmonyAdapter = /** @class */function () {
|
|
412
417
|
/**
|
|
413
418
|
* 构造函数
|
|
414
419
|
* @param config 适配器配置
|
|
415
420
|
*/
|
|
416
|
-
function
|
|
421
|
+
function HarmonyAdapter(config) {
|
|
417
422
|
/**
|
|
418
423
|
* 图表实例
|
|
419
424
|
*/
|
|
@@ -426,23 +431,23 @@ var SwanAdapter = /** @class */function () {
|
|
|
426
431
|
this.component = config.component;
|
|
427
432
|
}
|
|
428
433
|
/**
|
|
429
|
-
*
|
|
434
|
+
* 创建HarmonyOS适配器实例
|
|
430
435
|
* @param options 适配器选项
|
|
431
436
|
* @returns 适配器实例
|
|
432
437
|
*/
|
|
433
|
-
|
|
434
|
-
return new
|
|
438
|
+
HarmonyAdapter.create = function (options) {
|
|
439
|
+
return new HarmonyAdapter(options);
|
|
435
440
|
};
|
|
436
441
|
/**
|
|
437
442
|
* 获取图表实例
|
|
438
443
|
*/
|
|
439
|
-
|
|
444
|
+
HarmonyAdapter.prototype.getInstance = function () {
|
|
440
445
|
return this.chartInstance;
|
|
441
446
|
};
|
|
442
447
|
/**
|
|
443
448
|
* 初始化图表
|
|
444
449
|
*/
|
|
445
|
-
|
|
450
|
+
HarmonyAdapter.prototype.init = function () {
|
|
446
451
|
var _a = this.config,
|
|
447
452
|
canvasId = _a.canvasId,
|
|
448
453
|
width = _a.width,
|
|
@@ -450,11 +455,11 @@ var SwanAdapter = /** @class */function () {
|
|
|
450
455
|
theme = _a.theme,
|
|
451
456
|
option = _a.option;
|
|
452
457
|
if (!this.component) {
|
|
453
|
-
console.error('[TaroViz]
|
|
458
|
+
console.error('[TaroViz] HarmonyAdapter: component is required');
|
|
454
459
|
return null;
|
|
455
460
|
}
|
|
456
461
|
if (!canvasId) {
|
|
457
|
-
console.error('[TaroViz]
|
|
462
|
+
console.error('[TaroViz] HarmonyAdapter: canvasId is required');
|
|
458
463
|
return null;
|
|
459
464
|
}
|
|
460
465
|
// 创建图表实例
|
|
@@ -479,7 +484,7 @@ var SwanAdapter = /** @class */function () {
|
|
|
479
484
|
/**
|
|
480
485
|
* 设置图表选项
|
|
481
486
|
*/
|
|
482
|
-
|
|
487
|
+
HarmonyAdapter.prototype.setOption = function (option, opts) {
|
|
483
488
|
if (this.chartInstance) {
|
|
484
489
|
this.chartInstance.setOption(option, opts);
|
|
485
490
|
} else {
|
|
@@ -489,7 +494,7 @@ var SwanAdapter = /** @class */function () {
|
|
|
489
494
|
/**
|
|
490
495
|
* 设置主题
|
|
491
496
|
*/
|
|
492
|
-
|
|
497
|
+
HarmonyAdapter.prototype.setTheme = function (theme) {
|
|
493
498
|
var _a, _b;
|
|
494
499
|
this.config.theme = theme;
|
|
495
500
|
if (this.chartInstance) {
|
|
@@ -499,32 +504,32 @@ var SwanAdapter = /** @class */function () {
|
|
|
499
504
|
/**
|
|
500
505
|
* 获取图表宽度
|
|
501
506
|
*/
|
|
502
|
-
|
|
507
|
+
HarmonyAdapter.prototype.getWidth = function () {
|
|
503
508
|
return 0;
|
|
504
509
|
};
|
|
505
510
|
/**
|
|
506
511
|
* 获取图表高度
|
|
507
512
|
*/
|
|
508
|
-
|
|
513
|
+
HarmonyAdapter.prototype.getHeight = function () {
|
|
509
514
|
return 0;
|
|
510
515
|
};
|
|
511
516
|
/**
|
|
512
517
|
* 获取DOM元素
|
|
513
518
|
*/
|
|
514
|
-
|
|
519
|
+
HarmonyAdapter.prototype.getDom = function () {
|
|
515
520
|
return null;
|
|
516
521
|
};
|
|
517
522
|
/**
|
|
518
523
|
* 转换为DataURL
|
|
519
524
|
*/
|
|
520
|
-
|
|
525
|
+
HarmonyAdapter.prototype.convertToDataURL = function (opts) {
|
|
521
526
|
var _a;
|
|
522
527
|
return (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.getDataURL(opts);
|
|
523
528
|
};
|
|
524
529
|
/**
|
|
525
530
|
* 清空图表
|
|
526
531
|
*/
|
|
527
|
-
|
|
532
|
+
HarmonyAdapter.prototype.clear = function () {
|
|
528
533
|
if (this.chartInstance) {
|
|
529
534
|
this.chartInstance.clear();
|
|
530
535
|
}
|
|
@@ -532,7 +537,7 @@ var SwanAdapter = /** @class */function () {
|
|
|
532
537
|
/**
|
|
533
538
|
* 绑定事件
|
|
534
539
|
*/
|
|
535
|
-
|
|
540
|
+
HarmonyAdapter.prototype.on = function (event, handler) {
|
|
536
541
|
if (this.chartInstance) {
|
|
537
542
|
this.chartInstance.on(event, handler);
|
|
538
543
|
}
|
|
@@ -540,7 +545,7 @@ var SwanAdapter = /** @class */function () {
|
|
|
540
545
|
/**
|
|
541
546
|
* 解绑事件
|
|
542
547
|
*/
|
|
543
|
-
|
|
548
|
+
HarmonyAdapter.prototype.off = function (event, handler) {
|
|
544
549
|
if (this.chartInstance) {
|
|
545
550
|
this.chartInstance.off(event, handler);
|
|
546
551
|
}
|
|
@@ -548,7 +553,7 @@ var SwanAdapter = /** @class */function () {
|
|
|
548
553
|
/**
|
|
549
554
|
* 显示加载动画
|
|
550
555
|
*/
|
|
551
|
-
|
|
556
|
+
HarmonyAdapter.prototype.showLoading = function (opts) {
|
|
552
557
|
if (this.chartInstance) {
|
|
553
558
|
this.chartInstance.showLoading(opts);
|
|
554
559
|
}
|
|
@@ -556,7 +561,7 @@ var SwanAdapter = /** @class */function () {
|
|
|
556
561
|
/**
|
|
557
562
|
* 隐藏加载动画
|
|
558
563
|
*/
|
|
559
|
-
|
|
564
|
+
HarmonyAdapter.prototype.hideLoading = function () {
|
|
560
565
|
if (this.chartInstance) {
|
|
561
566
|
this.chartInstance.hideLoading();
|
|
562
567
|
}
|
|
@@ -564,7 +569,7 @@ var SwanAdapter = /** @class */function () {
|
|
|
564
569
|
/**
|
|
565
570
|
* 销毁图表
|
|
566
571
|
*/
|
|
567
|
-
|
|
572
|
+
HarmonyAdapter.prototype.dispose = function () {
|
|
568
573
|
if (this.chartInstance) {
|
|
569
574
|
this.chartInstance.dispose();
|
|
570
575
|
this.chartInstance = null;
|
|
@@ -573,7 +578,7 @@ var SwanAdapter = /** @class */function () {
|
|
|
573
578
|
/**
|
|
574
579
|
* 处理图表大小变化
|
|
575
580
|
*/
|
|
576
|
-
|
|
581
|
+
HarmonyAdapter.prototype.resize = function (opts) {
|
|
577
582
|
if (this.chartInstance) {
|
|
578
583
|
this.chartInstance.resize(opts);
|
|
579
584
|
}
|
|
@@ -581,13 +586,13 @@ var SwanAdapter = /** @class */function () {
|
|
|
581
586
|
/**
|
|
582
587
|
* 设置组件实例
|
|
583
588
|
*/
|
|
584
|
-
|
|
589
|
+
HarmonyAdapter.prototype.setComponent = function (component) {
|
|
585
590
|
this.component = component;
|
|
586
591
|
};
|
|
587
592
|
/**
|
|
588
593
|
* 渲染图表组件
|
|
589
594
|
*/
|
|
590
|
-
|
|
595
|
+
HarmonyAdapter.prototype.render = function () {
|
|
591
596
|
var _a = this.config,
|
|
592
597
|
_b = _a.canvasId,
|
|
593
598
|
canvasId = _b === void 0 ? 'ec-canvas' : _b,
|
|
@@ -598,7 +603,7 @@ var SwanAdapter = /** @class */function () {
|
|
|
598
603
|
_e = _a.style,
|
|
599
604
|
style = _e === void 0 ? {} : _e;
|
|
600
605
|
// 注意:这里需要根据实际使用的Taro版本和组件库来调整
|
|
601
|
-
return /*#__PURE__*/
|
|
606
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement('view', {
|
|
602
607
|
id: canvasId,
|
|
603
608
|
style: __assign({
|
|
604
609
|
width: width,
|
|
@@ -609,7 +614,7 @@ var SwanAdapter = /** @class */function () {
|
|
|
609
614
|
/**
|
|
610
615
|
* 触发图表行为
|
|
611
616
|
*/
|
|
612
|
-
|
|
617
|
+
HarmonyAdapter.prototype.dispatchAction = function (payload) {
|
|
613
618
|
if (this.chartInstance) {
|
|
614
619
|
this.chartInstance.dispatchAction(payload);
|
|
615
620
|
}
|
|
@@ -617,483 +622,134 @@ var SwanAdapter = /** @class */function () {
|
|
|
617
622
|
/**
|
|
618
623
|
* 获取DataURL
|
|
619
624
|
*/
|
|
620
|
-
|
|
625
|
+
HarmonyAdapter.prototype.getDataURL = function (opts) {
|
|
621
626
|
var _a;
|
|
622
627
|
return (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.getDataURL(opts);
|
|
623
628
|
};
|
|
624
|
-
return
|
|
629
|
+
return HarmonyAdapter;
|
|
625
630
|
}();
|
|
626
|
-
/* harmony default export */ const
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
631
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (HarmonyAdapter);
|
|
632
|
+
|
|
633
|
+
/***/ },
|
|
634
|
+
|
|
635
|
+
/***/ 574
|
|
636
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
637
|
+
|
|
638
|
+
|
|
639
|
+
// EXPORTS
|
|
640
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
641
|
+
li: () => (/* binding */ detectPlatform),
|
|
642
|
+
cK: () => (/* binding */ getAdapter),
|
|
643
|
+
_$: () => (/* binding */ getEnv)
|
|
644
|
+
});
|
|
645
|
+
|
|
646
|
+
// UNUSED EXPORTS: H5Adapter, HarmonyAdapter, PlatformType, SwanAdapter, TTAdapter, WeappAdapter, default, version
|
|
642
647
|
|
|
648
|
+
;// ./src/core/types/common.ts
|
|
643
649
|
/**
|
|
644
|
-
*
|
|
650
|
+
* 图表事件声明
|
|
645
651
|
*/
|
|
646
|
-
var
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
* 获取DOM元素
|
|
748
|
-
*/
|
|
749
|
-
TTAdapter.prototype.getDom = function () {
|
|
750
|
-
return null;
|
|
751
|
-
};
|
|
752
|
-
/**
|
|
753
|
-
* 转换为DataURL
|
|
754
|
-
*/
|
|
755
|
-
TTAdapter.prototype.convertToDataURL = function (opts) {
|
|
756
|
-
var _a;
|
|
757
|
-
return (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.getDataURL(opts);
|
|
758
|
-
};
|
|
759
|
-
/**
|
|
760
|
-
* 清空图表
|
|
761
|
-
*/
|
|
762
|
-
TTAdapter.prototype.clear = function () {
|
|
763
|
-
if (this.chartInstance) {
|
|
764
|
-
this.chartInstance.clear();
|
|
765
|
-
}
|
|
766
|
-
};
|
|
767
|
-
/**
|
|
768
|
-
* 绑定事件
|
|
769
|
-
*/
|
|
770
|
-
TTAdapter.prototype.on = function (event, handler) {
|
|
771
|
-
if (this.chartInstance) {
|
|
772
|
-
this.chartInstance.on(event, handler);
|
|
773
|
-
}
|
|
774
|
-
};
|
|
775
|
-
/**
|
|
776
|
-
* 解绑事件
|
|
777
|
-
*/
|
|
778
|
-
TTAdapter.prototype.off = function (event, handler) {
|
|
779
|
-
if (this.chartInstance) {
|
|
780
|
-
this.chartInstance.off(event, handler);
|
|
781
|
-
}
|
|
782
|
-
};
|
|
783
|
-
/**
|
|
784
|
-
* 显示加载动画
|
|
785
|
-
*/
|
|
786
|
-
TTAdapter.prototype.showLoading = function (opts) {
|
|
787
|
-
if (this.chartInstance) {
|
|
788
|
-
this.chartInstance.showLoading(opts);
|
|
789
|
-
}
|
|
790
|
-
};
|
|
791
|
-
/**
|
|
792
|
-
* 隐藏加载动画
|
|
793
|
-
*/
|
|
794
|
-
TTAdapter.prototype.hideLoading = function () {
|
|
795
|
-
if (this.chartInstance) {
|
|
796
|
-
this.chartInstance.hideLoading();
|
|
797
|
-
}
|
|
798
|
-
};
|
|
799
|
-
/**
|
|
800
|
-
* 销毁图表
|
|
801
|
-
*/
|
|
802
|
-
TTAdapter.prototype.dispose = function () {
|
|
803
|
-
if (this.chartInstance) {
|
|
804
|
-
this.chartInstance.dispose();
|
|
805
|
-
this.chartInstance = null;
|
|
806
|
-
}
|
|
807
|
-
};
|
|
808
|
-
/**
|
|
809
|
-
* 处理图表大小变化
|
|
810
|
-
*/
|
|
811
|
-
TTAdapter.prototype.resize = function (opts) {
|
|
812
|
-
if (this.chartInstance) {
|
|
813
|
-
this.chartInstance.resize(opts);
|
|
814
|
-
}
|
|
815
|
-
};
|
|
816
|
-
/**
|
|
817
|
-
* 设置组件实例
|
|
818
|
-
*/
|
|
819
|
-
TTAdapter.prototype.setComponent = function (component) {
|
|
820
|
-
this.component = component;
|
|
821
|
-
};
|
|
822
|
-
/**
|
|
823
|
-
* 渲染图表组件
|
|
824
|
-
*/
|
|
825
|
-
TTAdapter.prototype.render = function () {
|
|
826
|
-
var _a = this.config,
|
|
827
|
-
_b = _a.canvasId,
|
|
828
|
-
canvasId = _b === void 0 ? 'ec-canvas' : _b,
|
|
829
|
-
_c = _a.width,
|
|
830
|
-
width = _c === void 0 ? '100%' : _c,
|
|
831
|
-
_d = _a.height,
|
|
832
|
-
height = _d === void 0 ? '300px' : _d,
|
|
833
|
-
_e = _a.style,
|
|
834
|
-
style = _e === void 0 ? {} : _e;
|
|
835
|
-
// 注意:这里需要根据实际使用的Taro版本和组件库来调整
|
|
836
|
-
return /*#__PURE__*/external_react_.createElement('view', {
|
|
837
|
-
id: canvasId,
|
|
838
|
-
style: tt_assign({
|
|
839
|
-
width: width,
|
|
840
|
-
height: height
|
|
841
|
-
}, style)
|
|
842
|
-
});
|
|
843
|
-
};
|
|
844
|
-
/**
|
|
845
|
-
* 触发图表行为
|
|
846
|
-
*/
|
|
847
|
-
TTAdapter.prototype.dispatchAction = function (payload) {
|
|
848
|
-
if (this.chartInstance) {
|
|
849
|
-
this.chartInstance.dispatchAction(payload);
|
|
850
|
-
}
|
|
851
|
-
};
|
|
852
|
-
/**
|
|
853
|
-
* 获取DataURL
|
|
854
|
-
*/
|
|
855
|
-
TTAdapter.prototype.getDataURL = function (opts) {
|
|
856
|
-
var _a;
|
|
857
|
-
return (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.getDataURL(opts);
|
|
858
|
-
};
|
|
859
|
-
return TTAdapter;
|
|
860
|
-
}();
|
|
861
|
-
/* harmony default export */ const tt = (TTAdapter);
|
|
862
|
-
;// ./src/adapters/harmony/index.ts
|
|
863
|
-
var harmony_assign = undefined && undefined.__assign || function () {
|
|
864
|
-
harmony_assign = Object.assign || function (t) {
|
|
865
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
866
|
-
s = arguments[i];
|
|
867
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
868
|
-
}
|
|
869
|
-
return t;
|
|
870
|
-
};
|
|
871
|
-
return harmony_assign.apply(this, arguments);
|
|
872
|
-
};
|
|
873
|
-
/**
|
|
874
|
-
* TaroViz HarmonyOS适配器
|
|
875
|
-
* 基于HarmonyOS Canvas实现图表渲染
|
|
876
|
-
*/
|
|
877
|
-
|
|
878
|
-
/**
|
|
879
|
-
* HarmonyOS环境下的图表适配器
|
|
880
|
-
*/
|
|
881
|
-
var HarmonyAdapter = /** @class */function () {
|
|
882
|
-
/**
|
|
883
|
-
* 构造函数
|
|
884
|
-
* @param config 适配器配置
|
|
885
|
-
*/
|
|
886
|
-
function HarmonyAdapter(config) {
|
|
887
|
-
/**
|
|
888
|
-
* 图表实例
|
|
889
|
-
*/
|
|
890
|
-
this.chartInstance = null;
|
|
891
|
-
/**
|
|
892
|
-
* 组件实例
|
|
893
|
-
*/
|
|
894
|
-
this.component = null;
|
|
895
|
-
this.config = config;
|
|
896
|
-
this.component = config.component;
|
|
897
|
-
}
|
|
898
|
-
/**
|
|
899
|
-
* 创建HarmonyOS适配器实例
|
|
900
|
-
* @param options 适配器选项
|
|
901
|
-
* @returns 适配器实例
|
|
902
|
-
*/
|
|
903
|
-
HarmonyAdapter.create = function (options) {
|
|
904
|
-
return new HarmonyAdapter(options);
|
|
905
|
-
};
|
|
906
|
-
/**
|
|
907
|
-
* 获取图表实例
|
|
908
|
-
*/
|
|
909
|
-
HarmonyAdapter.prototype.getInstance = function () {
|
|
910
|
-
return this.chartInstance;
|
|
911
|
-
};
|
|
912
|
-
/**
|
|
913
|
-
* 初始化图表
|
|
914
|
-
*/
|
|
915
|
-
HarmonyAdapter.prototype.init = function () {
|
|
916
|
-
var _a = this.config,
|
|
917
|
-
canvasId = _a.canvasId,
|
|
918
|
-
width = _a.width,
|
|
919
|
-
height = _a.height,
|
|
920
|
-
theme = _a.theme,
|
|
921
|
-
option = _a.option;
|
|
922
|
-
if (!this.component) {
|
|
923
|
-
console.error('[TaroViz] HarmonyAdapter: component is required');
|
|
924
|
-
return null;
|
|
925
|
-
}
|
|
926
|
-
if (!canvasId) {
|
|
927
|
-
console.error('[TaroViz] HarmonyAdapter: canvasId is required');
|
|
928
|
-
return null;
|
|
929
|
-
}
|
|
930
|
-
// 创建图表实例
|
|
931
|
-
var chart = this.component.createChart({
|
|
932
|
-
id: canvasId,
|
|
933
|
-
width: width,
|
|
934
|
-
height: height,
|
|
935
|
-
theme: theme
|
|
936
|
-
});
|
|
937
|
-
// 设置图表选项
|
|
938
|
-
if (option) {
|
|
939
|
-
chart.setOption(option);
|
|
940
|
-
}
|
|
941
|
-
// 存储图表实例
|
|
942
|
-
this.chartInstance = chart;
|
|
943
|
-
// 初始化回调
|
|
944
|
-
if (this.config.onInit) {
|
|
945
|
-
this.config.onInit(chart);
|
|
946
|
-
}
|
|
947
|
-
return chart;
|
|
948
|
-
};
|
|
949
|
-
/**
|
|
950
|
-
* 设置图表选项
|
|
951
|
-
*/
|
|
952
|
-
HarmonyAdapter.prototype.setOption = function (option, opts) {
|
|
953
|
-
if (this.chartInstance) {
|
|
954
|
-
this.chartInstance.setOption(option, opts);
|
|
955
|
-
} else {
|
|
956
|
-
this.config.option = option;
|
|
957
|
-
}
|
|
958
|
-
};
|
|
959
|
-
/**
|
|
960
|
-
* 设置主题
|
|
961
|
-
*/
|
|
962
|
-
HarmonyAdapter.prototype.setTheme = function (theme) {
|
|
963
|
-
var _a, _b;
|
|
964
|
-
this.config.theme = theme;
|
|
965
|
-
if (this.chartInstance) {
|
|
966
|
-
(_b = (_a = this.chartInstance).setTheme) === null || _b === void 0 ? void 0 : _b.call(_a, theme);
|
|
967
|
-
}
|
|
968
|
-
};
|
|
969
|
-
/**
|
|
970
|
-
* 获取图表宽度
|
|
971
|
-
*/
|
|
972
|
-
HarmonyAdapter.prototype.getWidth = function () {
|
|
973
|
-
return 0;
|
|
974
|
-
};
|
|
975
|
-
/**
|
|
976
|
-
* 获取图表高度
|
|
977
|
-
*/
|
|
978
|
-
HarmonyAdapter.prototype.getHeight = function () {
|
|
979
|
-
return 0;
|
|
980
|
-
};
|
|
981
|
-
/**
|
|
982
|
-
* 获取DOM元素
|
|
983
|
-
*/
|
|
984
|
-
HarmonyAdapter.prototype.getDom = function () {
|
|
985
|
-
return null;
|
|
986
|
-
};
|
|
987
|
-
/**
|
|
988
|
-
* 转换为DataURL
|
|
989
|
-
*/
|
|
990
|
-
HarmonyAdapter.prototype.convertToDataURL = function (opts) {
|
|
991
|
-
var _a;
|
|
992
|
-
return (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.getDataURL(opts);
|
|
993
|
-
};
|
|
994
|
-
/**
|
|
995
|
-
* 清空图表
|
|
996
|
-
*/
|
|
997
|
-
HarmonyAdapter.prototype.clear = function () {
|
|
998
|
-
if (this.chartInstance) {
|
|
999
|
-
this.chartInstance.clear();
|
|
1000
|
-
}
|
|
1001
|
-
};
|
|
1002
|
-
/**
|
|
1003
|
-
* 绑定事件
|
|
1004
|
-
*/
|
|
1005
|
-
HarmonyAdapter.prototype.on = function (event, handler) {
|
|
1006
|
-
if (this.chartInstance) {
|
|
1007
|
-
this.chartInstance.on(event, handler);
|
|
1008
|
-
}
|
|
1009
|
-
};
|
|
1010
|
-
/**
|
|
1011
|
-
* 解绑事件
|
|
1012
|
-
*/
|
|
1013
|
-
HarmonyAdapter.prototype.off = function (event, handler) {
|
|
1014
|
-
if (this.chartInstance) {
|
|
1015
|
-
this.chartInstance.off(event, handler);
|
|
1016
|
-
}
|
|
1017
|
-
};
|
|
1018
|
-
/**
|
|
1019
|
-
* 显示加载动画
|
|
1020
|
-
*/
|
|
1021
|
-
HarmonyAdapter.prototype.showLoading = function (opts) {
|
|
1022
|
-
if (this.chartInstance) {
|
|
1023
|
-
this.chartInstance.showLoading(opts);
|
|
1024
|
-
}
|
|
1025
|
-
};
|
|
1026
|
-
/**
|
|
1027
|
-
* 隐藏加载动画
|
|
1028
|
-
*/
|
|
1029
|
-
HarmonyAdapter.prototype.hideLoading = function () {
|
|
1030
|
-
if (this.chartInstance) {
|
|
1031
|
-
this.chartInstance.hideLoading();
|
|
1032
|
-
}
|
|
1033
|
-
};
|
|
1034
|
-
/**
|
|
1035
|
-
* 销毁图表
|
|
1036
|
-
*/
|
|
1037
|
-
HarmonyAdapter.prototype.dispose = function () {
|
|
1038
|
-
if (this.chartInstance) {
|
|
1039
|
-
this.chartInstance.dispose();
|
|
1040
|
-
this.chartInstance = null;
|
|
1041
|
-
}
|
|
1042
|
-
};
|
|
1043
|
-
/**
|
|
1044
|
-
* 处理图表大小变化
|
|
1045
|
-
*/
|
|
1046
|
-
HarmonyAdapter.prototype.resize = function (opts) {
|
|
1047
|
-
if (this.chartInstance) {
|
|
1048
|
-
this.chartInstance.resize(opts);
|
|
1049
|
-
}
|
|
1050
|
-
};
|
|
1051
|
-
/**
|
|
1052
|
-
* 设置组件实例
|
|
1053
|
-
*/
|
|
1054
|
-
HarmonyAdapter.prototype.setComponent = function (component) {
|
|
1055
|
-
this.component = component;
|
|
1056
|
-
};
|
|
1057
|
-
/**
|
|
1058
|
-
* 渲染图表组件
|
|
1059
|
-
*/
|
|
1060
|
-
HarmonyAdapter.prototype.render = function () {
|
|
1061
|
-
var _a = this.config,
|
|
1062
|
-
_b = _a.canvasId,
|
|
1063
|
-
canvasId = _b === void 0 ? 'ec-canvas' : _b,
|
|
1064
|
-
_c = _a.width,
|
|
1065
|
-
width = _c === void 0 ? '100%' : _c,
|
|
1066
|
-
_d = _a.height,
|
|
1067
|
-
height = _d === void 0 ? '300px' : _d,
|
|
1068
|
-
_e = _a.style,
|
|
1069
|
-
style = _e === void 0 ? {} : _e;
|
|
1070
|
-
// 注意:这里需要根据实际使用的Taro版本和组件库来调整
|
|
1071
|
-
return /*#__PURE__*/external_react_.createElement('view', {
|
|
1072
|
-
id: canvasId,
|
|
1073
|
-
style: harmony_assign({
|
|
1074
|
-
width: width,
|
|
1075
|
-
height: height
|
|
1076
|
-
}, style)
|
|
1077
|
-
});
|
|
1078
|
-
};
|
|
1079
|
-
/**
|
|
1080
|
-
* 触发图表行为
|
|
1081
|
-
*/
|
|
1082
|
-
HarmonyAdapter.prototype.dispatchAction = function (payload) {
|
|
1083
|
-
if (this.chartInstance) {
|
|
1084
|
-
this.chartInstance.dispatchAction(payload);
|
|
1085
|
-
}
|
|
1086
|
-
};
|
|
1087
|
-
/**
|
|
1088
|
-
* 获取DataURL
|
|
1089
|
-
*/
|
|
1090
|
-
HarmonyAdapter.prototype.getDataURL = function (opts) {
|
|
1091
|
-
var _a;
|
|
1092
|
-
return (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.getDataURL(opts);
|
|
1093
|
-
};
|
|
1094
|
-
return HarmonyAdapter;
|
|
1095
|
-
}();
|
|
1096
|
-
/* harmony default export */ const harmony = (HarmonyAdapter);
|
|
652
|
+
var ChartEventType;
|
|
653
|
+
(function (ChartEventType) {
|
|
654
|
+
ChartEventType["CLICK"] = "click";
|
|
655
|
+
ChartEventType["MOUSEMOVE"] = "mousemove";
|
|
656
|
+
ChartEventType["MOUSEUP"] = "mouseup";
|
|
657
|
+
ChartEventType["MOUSEDOWN"] = "mousedown";
|
|
658
|
+
ChartEventType["MOUSEOVER"] = "mouseover";
|
|
659
|
+
ChartEventType["MOUSEOUT"] = "mouseout";
|
|
660
|
+
ChartEventType["GLOBALOUT"] = "globalout";
|
|
661
|
+
ChartEventType["LEGENDSELECTED"] = "legendselected";
|
|
662
|
+
ChartEventType["LEGENDUNSELECTED"] = "legendunselected";
|
|
663
|
+
ChartEventType["LEGENDSELECTCHANGED"] = "legendselectchanged";
|
|
664
|
+
ChartEventType["LEGENDSCROLL"] = "legendscroll";
|
|
665
|
+
ChartEventType["DATAZOOM"] = "datazoom";
|
|
666
|
+
ChartEventType["DATARANGESELECTED"] = "datarangeselected";
|
|
667
|
+
ChartEventType["TIMELINECHANGED"] = "timelinechanged";
|
|
668
|
+
ChartEventType["TIMELINEPLAYCHANGED"] = "timelineplaychanged";
|
|
669
|
+
ChartEventType["RESTORE"] = "restore";
|
|
670
|
+
ChartEventType["DATAVIEWCHANGED"] = "dataviewchanged";
|
|
671
|
+
ChartEventType["MAGICTYPECHANGED"] = "magictypechanged";
|
|
672
|
+
ChartEventType["GEOSELECTCHANGED"] = "geoselectchanged";
|
|
673
|
+
ChartEventType["GEOSELECTED"] = "geoselected";
|
|
674
|
+
ChartEventType["GEOUNSELECTED"] = "geounselected";
|
|
675
|
+
ChartEventType["PIESELECTCHANGED"] = "pieselectchanged";
|
|
676
|
+
ChartEventType["PIESELECTED"] = "pieselected";
|
|
677
|
+
ChartEventType["PIEUNSELECTED"] = "pieunselected";
|
|
678
|
+
ChartEventType["MAPSELECTCHANGED"] = "mapselectchanged";
|
|
679
|
+
ChartEventType["MAPSELECTED"] = "mapselected";
|
|
680
|
+
ChartEventType["MAPUNSELECTED"] = "mapunselected";
|
|
681
|
+
ChartEventType["AXISAREASELECTED"] = "axisareaselected";
|
|
682
|
+
ChartEventType["FOCUSNODEADJACENCY"] = "focusnodeadjacency";
|
|
683
|
+
ChartEventType["UNFOCUSNODEADJACENCY"] = "unfocusnodeadjacency";
|
|
684
|
+
ChartEventType["BRUSH"] = "brush";
|
|
685
|
+
ChartEventType["BRUSHSELECTED"] = "brushselected";
|
|
686
|
+
ChartEventType["RENDERED"] = "rendered";
|
|
687
|
+
ChartEventType["FINISHED"] = "finished";
|
|
688
|
+
// 自定义事件
|
|
689
|
+
ChartEventType["CHART_READY"] = "chartReady";
|
|
690
|
+
ChartEventType["CHART_RESIZE"] = "chartResize";
|
|
691
|
+
ChartEventType["CHART_ERROR"] = "chartError";
|
|
692
|
+
ChartEventType["CHART_DISPOSE"] = "chartDispose";
|
|
693
|
+
})(ChartEventType || (ChartEventType = {}));
|
|
694
|
+
;// ./src/core/types/platform.ts
|
|
695
|
+
/**
|
|
696
|
+
* 支持的平台类型
|
|
697
|
+
*/
|
|
698
|
+
var PlatformType;
|
|
699
|
+
(function (PlatformType) {
|
|
700
|
+
PlatformType["H5"] = "h5";
|
|
701
|
+
PlatformType["WEAPP"] = "weapp";
|
|
702
|
+
PlatformType["ALIPAY"] = "alipay";
|
|
703
|
+
PlatformType["SWAN"] = "swan";
|
|
704
|
+
PlatformType["TT"] = "tt";
|
|
705
|
+
PlatformType["QQ"] = "qq";
|
|
706
|
+
PlatformType["JD"] = "jd";
|
|
707
|
+
PlatformType["HARMONY"] = "harmony";
|
|
708
|
+
PlatformType["DD"] = "dd";
|
|
709
|
+
PlatformType["QYWX"] = "qywx";
|
|
710
|
+
PlatformType["LARK"] = "lark";
|
|
711
|
+
PlatformType["KWAI"] = "kwai";
|
|
712
|
+
})(PlatformType || (PlatformType = {}));
|
|
713
|
+
// EXTERNAL MODULE: ./src/core/animation/index.ts + 2 modules
|
|
714
|
+
var animation = __webpack_require__(251);
|
|
715
|
+
;// ./src/core/types/index.ts
|
|
716
|
+
// 公共类型
|
|
717
|
+
|
|
718
|
+
// 平台类型
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
// 导出动画相关类型
|
|
722
|
+
|
|
723
|
+
// EXTERNAL MODULE: ./src/core/utils/index.ts + 2 modules
|
|
724
|
+
var utils = __webpack_require__(524);
|
|
725
|
+
// EXTERNAL MODULE: ./src/core/echarts.ts + 1 modules
|
|
726
|
+
var echarts = __webpack_require__(930);
|
|
727
|
+
;// ./src/core/index.ts
|
|
728
|
+
/**
|
|
729
|
+
* TaroViz 核心组件库
|
|
730
|
+
* 提供基础组件和工具函数
|
|
731
|
+
*/
|
|
732
|
+
// 类型定义
|
|
733
|
+
|
|
734
|
+
// 工具函数
|
|
735
|
+
|
|
736
|
+
// ECharts 统一导出
|
|
737
|
+
|
|
738
|
+
/**
|
|
739
|
+
* 库信息
|
|
740
|
+
*/
|
|
741
|
+
var core_name = 'taroviz';
|
|
742
|
+
var version = '1.2.0';
|
|
743
|
+
// EXTERNAL MODULE: ./src/adapters/h5/index.ts
|
|
744
|
+
var h5 = __webpack_require__(123);
|
|
745
|
+
// EXTERNAL MODULE: ./src/adapters/weapp/index.ts
|
|
746
|
+
var weapp = __webpack_require__(999);
|
|
747
|
+
// EXTERNAL MODULE: ./src/adapters/swan/index.ts
|
|
748
|
+
var swan = __webpack_require__(85);
|
|
749
|
+
// EXTERNAL MODULE: ./src/adapters/tt/index.ts
|
|
750
|
+
var tt = __webpack_require__(280);
|
|
751
|
+
// EXTERNAL MODULE: ./src/adapters/harmony/index.ts
|
|
752
|
+
var harmony = __webpack_require__(382);
|
|
1097
753
|
;// ./src/adapters/types.ts
|
|
1098
754
|
|
|
1099
755
|
|
|
@@ -1101,7 +757,120 @@ var HarmonyAdapter = /** @class */function () {
|
|
|
1101
757
|
/**
|
|
1102
758
|
* TaroViz 平台适配器
|
|
1103
759
|
* 自动检测并加载适合当前平台的适配器
|
|
760
|
+
*
|
|
761
|
+
* 使用动态导入实现按需加载,减少包体积
|
|
1104
762
|
*/
|
|
763
|
+
var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
|
|
764
|
+
function adopt(value) {
|
|
765
|
+
return value instanceof P ? value : new P(function (resolve) {
|
|
766
|
+
resolve(value);
|
|
767
|
+
});
|
|
768
|
+
}
|
|
769
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
770
|
+
function fulfilled(value) {
|
|
771
|
+
try {
|
|
772
|
+
step(generator.next(value));
|
|
773
|
+
} catch (e) {
|
|
774
|
+
reject(e);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
function rejected(value) {
|
|
778
|
+
try {
|
|
779
|
+
step(generator["throw"](value));
|
|
780
|
+
} catch (e) {
|
|
781
|
+
reject(e);
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
function step(result) {
|
|
785
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
786
|
+
}
|
|
787
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
788
|
+
});
|
|
789
|
+
};
|
|
790
|
+
var __generator = undefined && undefined.__generator || function (thisArg, body) {
|
|
791
|
+
var _ = {
|
|
792
|
+
label: 0,
|
|
793
|
+
sent: function () {
|
|
794
|
+
if (t[0] & 1) throw t[1];
|
|
795
|
+
return t[1];
|
|
796
|
+
},
|
|
797
|
+
trys: [],
|
|
798
|
+
ops: []
|
|
799
|
+
},
|
|
800
|
+
f,
|
|
801
|
+
y,
|
|
802
|
+
t,
|
|
803
|
+
g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
804
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function () {
|
|
805
|
+
return this;
|
|
806
|
+
}), g;
|
|
807
|
+
function verb(n) {
|
|
808
|
+
return function (v) {
|
|
809
|
+
return step([n, v]);
|
|
810
|
+
};
|
|
811
|
+
}
|
|
812
|
+
function step(op) {
|
|
813
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
814
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
815
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
816
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
817
|
+
switch (op[0]) {
|
|
818
|
+
case 0:
|
|
819
|
+
case 1:
|
|
820
|
+
t = op;
|
|
821
|
+
break;
|
|
822
|
+
case 4:
|
|
823
|
+
_.label++;
|
|
824
|
+
return {
|
|
825
|
+
value: op[1],
|
|
826
|
+
done: false
|
|
827
|
+
};
|
|
828
|
+
case 5:
|
|
829
|
+
_.label++;
|
|
830
|
+
y = op[1];
|
|
831
|
+
op = [0];
|
|
832
|
+
continue;
|
|
833
|
+
case 7:
|
|
834
|
+
op = _.ops.pop();
|
|
835
|
+
_.trys.pop();
|
|
836
|
+
continue;
|
|
837
|
+
default:
|
|
838
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
839
|
+
_ = 0;
|
|
840
|
+
continue;
|
|
841
|
+
}
|
|
842
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
843
|
+
_.label = op[1];
|
|
844
|
+
break;
|
|
845
|
+
}
|
|
846
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
847
|
+
_.label = t[1];
|
|
848
|
+
t = op;
|
|
849
|
+
break;
|
|
850
|
+
}
|
|
851
|
+
if (t && _.label < t[2]) {
|
|
852
|
+
_.label = t[2];
|
|
853
|
+
_.ops.push(op);
|
|
854
|
+
break;
|
|
855
|
+
}
|
|
856
|
+
if (t[2]) _.ops.pop();
|
|
857
|
+
_.trys.pop();
|
|
858
|
+
continue;
|
|
859
|
+
}
|
|
860
|
+
op = body.call(thisArg, _);
|
|
861
|
+
} catch (e) {
|
|
862
|
+
op = [6, e];
|
|
863
|
+
y = 0;
|
|
864
|
+
} finally {
|
|
865
|
+
f = t = 0;
|
|
866
|
+
}
|
|
867
|
+
if (op[0] & 5) throw op[1];
|
|
868
|
+
return {
|
|
869
|
+
value: op[0] ? op[1] : void 0,
|
|
870
|
+
done: true
|
|
871
|
+
};
|
|
872
|
+
}
|
|
873
|
+
};
|
|
1105
874
|
var _a;
|
|
1106
875
|
|
|
1107
876
|
var PLATFORM_CONFIGS = (_a = {}, _a[PlatformType.H5] = {
|
|
@@ -1145,58 +914,59 @@ function detectPlatform() {
|
|
|
1145
914
|
if (typeof window === 'undefined') {
|
|
1146
915
|
return PlatformType.H5;
|
|
1147
916
|
}
|
|
917
|
+
var win = window;
|
|
1148
918
|
var checks = [{
|
|
1149
919
|
test: function () {
|
|
1150
920
|
var _a, _b;
|
|
1151
|
-
return
|
|
921
|
+
return !!((_a = win.wx) === null || _a === void 0 ? void 0 : _a.getSystemInfoSync) && !((_b = win.wx) === null || _b === void 0 ? void 0 : _b.qy);
|
|
1152
922
|
},
|
|
1153
923
|
platform: PlatformType.WEAPP
|
|
1154
924
|
}, {
|
|
1155
925
|
test: function () {
|
|
1156
926
|
var _a;
|
|
1157
|
-
return
|
|
927
|
+
return !!((_a = win.my) === null || _a === void 0 ? void 0 : _a.getSystemInfoSync);
|
|
1158
928
|
},
|
|
1159
929
|
platform: PlatformType.ALIPAY
|
|
1160
930
|
}, {
|
|
1161
931
|
test: function () {
|
|
1162
932
|
var _a;
|
|
1163
|
-
return
|
|
933
|
+
return !!((_a = win.swan) === null || _a === void 0 ? void 0 : _a.getSystemInfoSync);
|
|
1164
934
|
},
|
|
1165
935
|
platform: PlatformType.SWAN
|
|
1166
936
|
}, {
|
|
1167
937
|
test: function () {
|
|
1168
938
|
var _a;
|
|
1169
|
-
return
|
|
939
|
+
return !!((_a = win.tt) === null || _a === void 0 ? void 0 : _a.getSystemInfoSync);
|
|
1170
940
|
},
|
|
1171
941
|
platform: PlatformType.TT
|
|
1172
942
|
}, {
|
|
1173
943
|
test: function () {
|
|
1174
944
|
var _a;
|
|
1175
|
-
return
|
|
945
|
+
return !!((_a = win.qq) === null || _a === void 0 ? void 0 : _a.getSystemInfoSync);
|
|
1176
946
|
},
|
|
1177
947
|
platform: PlatformType.QQ
|
|
1178
948
|
}, {
|
|
1179
949
|
test: function () {
|
|
1180
950
|
var _a;
|
|
1181
|
-
return
|
|
951
|
+
return !!((_a = win.jd) === null || _a === void 0 ? void 0 : _a.getSystemInfoSync);
|
|
1182
952
|
},
|
|
1183
953
|
platform: PlatformType.JD
|
|
1184
954
|
}, {
|
|
1185
955
|
test: function () {
|
|
1186
956
|
var _a;
|
|
1187
|
-
return
|
|
957
|
+
return !!((_a = win.dd) === null || _a === void 0 ? void 0 : _a.getSystemInfoSync);
|
|
1188
958
|
},
|
|
1189
959
|
platform: PlatformType.DD
|
|
1190
960
|
}, {
|
|
1191
961
|
test: function () {
|
|
1192
962
|
var _a;
|
|
1193
|
-
return
|
|
963
|
+
return !!((_a = win.wx) === null || _a === void 0 ? void 0 : _a.qy);
|
|
1194
964
|
},
|
|
1195
965
|
platform: PlatformType.QYWX
|
|
1196
966
|
}, {
|
|
1197
967
|
test: function () {
|
|
1198
968
|
var _a, _b;
|
|
1199
|
-
return
|
|
969
|
+
return ((_b = (_a = win.tt) === null || _a === void 0 ? void 0 : _a.env) === null || _b === void 0 ? void 0 : _b.appName) === 'lark';
|
|
1200
970
|
},
|
|
1201
971
|
platform: PlatformType.LARK
|
|
1202
972
|
}, {
|
|
@@ -1227,301 +997,412 @@ function getEnv() {
|
|
|
1227
997
|
return 'unknown';
|
|
1228
998
|
}
|
|
1229
999
|
/**
|
|
1230
|
-
*
|
|
1231
|
-
*
|
|
1232
|
-
*/
|
|
1233
|
-
function
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1000
|
+
* 获取适配器
|
|
1001
|
+
* 返回 Promise 以支持动态导入
|
|
1002
|
+
*/
|
|
1003
|
+
function getAdapter(options) {
|
|
1004
|
+
return __awaiter(this, void 0, Promise, function () {
|
|
1005
|
+
var platform, config, _a, h5Adapter, weappAdapter, swanAdapter, ttAdapter, harmonyAdapter, h5Adapter, error_1, h5Adapter;
|
|
1006
|
+
return __generator(this, function (_b) {
|
|
1007
|
+
switch (_b.label) {
|
|
1008
|
+
case 0:
|
|
1009
|
+
platform = detectPlatform();
|
|
1010
|
+
config = PLATFORM_CONFIGS[platform];
|
|
1011
|
+
// 检查是否需要 component 属性
|
|
1012
|
+
if ((config === null || config === void 0 ? void 0 : config.requireComponent) && !('component' in options)) {
|
|
1013
|
+
console.warn("[TaroViz] ".concat(config.name, "Adapter requires component property, fallback to H5Adapter"));
|
|
1014
|
+
}
|
|
1015
|
+
_b.label = 1;
|
|
1016
|
+
case 1:
|
|
1017
|
+
_b.trys.push([1, 15,, 17]);
|
|
1018
|
+
_a = platform;
|
|
1019
|
+
switch (_a) {
|
|
1020
|
+
case PlatformType.H5:
|
|
1021
|
+
return [3 /*break*/, 2];
|
|
1022
|
+
case PlatformType.ALIPAY:
|
|
1023
|
+
return [3 /*break*/, 2];
|
|
1024
|
+
case PlatformType.QQ:
|
|
1025
|
+
return [3 /*break*/, 2];
|
|
1026
|
+
case PlatformType.JD:
|
|
1027
|
+
return [3 /*break*/, 2];
|
|
1028
|
+
case PlatformType.DD:
|
|
1029
|
+
return [3 /*break*/, 2];
|
|
1030
|
+
case PlatformType.QYWX:
|
|
1031
|
+
return [3 /*break*/, 2];
|
|
1032
|
+
case PlatformType.LARK:
|
|
1033
|
+
return [3 /*break*/, 2];
|
|
1034
|
+
case PlatformType.KWAI:
|
|
1035
|
+
return [3 /*break*/, 2];
|
|
1036
|
+
case PlatformType.WEAPP:
|
|
1037
|
+
return [3 /*break*/, 4];
|
|
1038
|
+
case PlatformType.SWAN:
|
|
1039
|
+
return [3 /*break*/, 6];
|
|
1040
|
+
case PlatformType.TT:
|
|
1041
|
+
return [3 /*break*/, 8];
|
|
1042
|
+
case PlatformType.HARMONY:
|
|
1043
|
+
return [3 /*break*/, 10];
|
|
1044
|
+
}
|
|
1045
|
+
return [3 /*break*/, 12];
|
|
1046
|
+
case 2:
|
|
1047
|
+
return [4 /*yield*/, Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 123))];
|
|
1048
|
+
case 3:
|
|
1049
|
+
h5Adapter = _b.sent().default;
|
|
1050
|
+
return [2 /*return*/, h5Adapter.create(options)];
|
|
1051
|
+
case 4:
|
|
1052
|
+
return [4 /*yield*/, Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 999))];
|
|
1053
|
+
case 5:
|
|
1054
|
+
weappAdapter = _b.sent().default;
|
|
1055
|
+
return [2 /*return*/, weappAdapter.create(options)];
|
|
1056
|
+
case 6:
|
|
1057
|
+
return [4 /*yield*/, Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 85))];
|
|
1058
|
+
case 7:
|
|
1059
|
+
swanAdapter = _b.sent().default;
|
|
1060
|
+
return [2 /*return*/, swanAdapter.create(options)];
|
|
1061
|
+
case 8:
|
|
1062
|
+
return [4 /*yield*/, Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 280))];
|
|
1063
|
+
case 9:
|
|
1064
|
+
ttAdapter = _b.sent().default;
|
|
1065
|
+
return [2 /*return*/, ttAdapter.create(options)];
|
|
1066
|
+
case 10:
|
|
1067
|
+
return [4 /*yield*/, Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 382))];
|
|
1068
|
+
case 11:
|
|
1069
|
+
harmonyAdapter = _b.sent().default;
|
|
1070
|
+
return [2 /*return*/, harmonyAdapter.create(options)];
|
|
1071
|
+
case 12:
|
|
1072
|
+
return [4 /*yield*/, Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 123))];
|
|
1073
|
+
case 13:
|
|
1074
|
+
h5Adapter = _b.sent().default;
|
|
1075
|
+
return [2 /*return*/, h5Adapter.create(options)];
|
|
1076
|
+
case 14:
|
|
1077
|
+
return [3 /*break*/, 17];
|
|
1078
|
+
case 15:
|
|
1079
|
+
error_1 = _b.sent();
|
|
1080
|
+
console.error("[TaroViz] Failed to load adapter for platform '".concat(platform, "':"), error_1);
|
|
1081
|
+
return [4 /*yield*/, Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 123))];
|
|
1082
|
+
case 16:
|
|
1083
|
+
h5Adapter = _b.sent().default;
|
|
1084
|
+
return [2 /*return*/, h5Adapter.create(options)];
|
|
1085
|
+
case 17:
|
|
1086
|
+
return [2 /*return*/];
|
|
1087
|
+
}
|
|
1088
|
+
});
|
|
1089
|
+
});
|
|
1256
1090
|
}
|
|
1257
|
-
//
|
|
1091
|
+
// 导出所有适配器
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
|
|
1095
|
+
|
|
1096
|
+
|
|
1097
|
+
/**
|
|
1098
|
+
* 版本信息
|
|
1099
|
+
*/
|
|
1100
|
+
var adapters_version = '1.2.0';
|
|
1258
1101
|
|
|
1102
|
+
/* harmony default export */ const adapters = ({
|
|
1103
|
+
getAdapter: getAdapter,
|
|
1104
|
+
getEnv: getEnv,
|
|
1105
|
+
detectPlatform: detectPlatform
|
|
1106
|
+
});
|
|
1259
1107
|
|
|
1108
|
+
/***/ },
|
|
1260
1109
|
|
|
1110
|
+
/***/ 85
|
|
1111
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
1261
1112
|
|
|
1113
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1114
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1115
|
+
/* harmony export */ SwanAdapter: () => (/* binding */ SwanAdapter),
|
|
1116
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
1117
|
+
/* harmony export */ });
|
|
1118
|
+
/* harmony import */ var _BaseAdapter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(219);
|
|
1119
|
+
/**
|
|
1120
|
+
* TaroViz 百度小程序适配器
|
|
1121
|
+
* 基于百度小程序canvas组件实现图表渲染
|
|
1122
|
+
*/
|
|
1123
|
+
var __extends = undefined && undefined.__extends || function () {
|
|
1124
|
+
var extendStatics = function (d, b) {
|
|
1125
|
+
extendStatics = Object.setPrototypeOf || {
|
|
1126
|
+
__proto__: []
|
|
1127
|
+
} instanceof Array && function (d, b) {
|
|
1128
|
+
d.__proto__ = b;
|
|
1129
|
+
} || function (d, b) {
|
|
1130
|
+
for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
|
|
1131
|
+
};
|
|
1132
|
+
return extendStatics(d, b);
|
|
1133
|
+
};
|
|
1134
|
+
return function (d, b) {
|
|
1135
|
+
if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
1136
|
+
extendStatics(d, b);
|
|
1137
|
+
function __() {
|
|
1138
|
+
this.constructor = d;
|
|
1139
|
+
}
|
|
1140
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
1141
|
+
};
|
|
1142
|
+
}();
|
|
1262
1143
|
|
|
1263
|
-
/**
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
if ((config === null || config === void 0 ? void 0 : config.requireComponent) && !('component' in options)) {
|
|
1271
|
-
console.warn("[TaroViz] ".concat(config.name, "Adapter requires component property, fallback to H5Adapter"));
|
|
1272
|
-
}
|
|
1273
|
-
try {
|
|
1274
|
-
return createAdapterInstance(platform, options);
|
|
1275
|
-
} catch (error) {
|
|
1276
|
-
console.error("[TaroViz] Failed to load adapter for platform '".concat(platform, "':"), error);
|
|
1277
|
-
return h5/* default */.A.create(options);
|
|
1144
|
+
var SwanAdapter = /** @class */function (_super) {
|
|
1145
|
+
__extends(SwanAdapter, _super);
|
|
1146
|
+
function SwanAdapter(config) {
|
|
1147
|
+
var _this = _super.call(this, config) || this;
|
|
1148
|
+
_this.component = null;
|
|
1149
|
+
_this.component = config.component;
|
|
1150
|
+
return _this;
|
|
1278
1151
|
}
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1152
|
+
SwanAdapter.create = function (options) {
|
|
1153
|
+
return new SwanAdapter(options);
|
|
1154
|
+
};
|
|
1155
|
+
SwanAdapter.prototype.init = function () {
|
|
1156
|
+
var config = this.config;
|
|
1157
|
+
var canvasId = config.canvasId,
|
|
1158
|
+
width = config.width,
|
|
1159
|
+
height = config.height,
|
|
1160
|
+
theme = config.theme,
|
|
1161
|
+
option = config.option;
|
|
1162
|
+
if (!this.component) {
|
|
1163
|
+
console.error('[TaroViz] SwanAdapter: component is required');
|
|
1164
|
+
return null;
|
|
1165
|
+
}
|
|
1166
|
+
if (!canvasId) {
|
|
1167
|
+
console.error('[TaroViz] SwanAdapter: canvasId is required');
|
|
1168
|
+
return null;
|
|
1169
|
+
}
|
|
1170
|
+
var chart = this.component.createChart({
|
|
1171
|
+
id: canvasId,
|
|
1172
|
+
width: width,
|
|
1173
|
+
height: height,
|
|
1174
|
+
theme: theme
|
|
1175
|
+
});
|
|
1176
|
+
if (option) {
|
|
1177
|
+
chart.setOption(option);
|
|
1178
|
+
}
|
|
1179
|
+
this.chartInstance = chart;
|
|
1180
|
+
var onInit = this.config['onInit'];
|
|
1181
|
+
if (onInit) {
|
|
1182
|
+
onInit(chart);
|
|
1183
|
+
}
|
|
1184
|
+
return chart;
|
|
1185
|
+
};
|
|
1186
|
+
SwanAdapter.prototype.getWidth = function () {
|
|
1187
|
+
return this.parseSize(this.config.width, 300);
|
|
1188
|
+
};
|
|
1189
|
+
SwanAdapter.prototype.getHeight = function () {
|
|
1190
|
+
return this.parseSize(this.config.height, 300);
|
|
1191
|
+
};
|
|
1192
|
+
SwanAdapter.prototype.setComponent = function (component) {
|
|
1193
|
+
this.component = component;
|
|
1194
|
+
};
|
|
1195
|
+
SwanAdapter.prototype.dispatchAction = function (action) {
|
|
1196
|
+
var _a, _b;
|
|
1197
|
+
(_b = (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.dispatchAction) === null || _b === void 0 ? void 0 : _b.call(_a, action);
|
|
1198
|
+
};
|
|
1199
|
+
SwanAdapter.prototype.getDataURL = function (opts) {
|
|
1200
|
+
var _a, _b;
|
|
1201
|
+
return (_b = (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.getDataURL) === null || _b === void 0 ? void 0 : _b.call(_a, opts);
|
|
1202
|
+
};
|
|
1203
|
+
return SwanAdapter;
|
|
1204
|
+
}(_BaseAdapter__WEBPACK_IMPORTED_MODULE_0__/* .BaseAdapter */ .D);
|
|
1290
1205
|
|
|
1291
|
-
/* harmony default export */ const
|
|
1292
|
-
getAdapter: getAdapter,
|
|
1293
|
-
getEnv: getEnv,
|
|
1294
|
-
detectPlatform: detectPlatform
|
|
1295
|
-
});
|
|
1206
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SwanAdapter);
|
|
1296
1207
|
|
|
1297
1208
|
/***/ },
|
|
1298
1209
|
|
|
1299
|
-
/***/
|
|
1210
|
+
/***/ 280
|
|
1300
1211
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
1301
1212
|
|
|
1213
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1302
1214
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1303
|
-
/* harmony export */
|
|
1215
|
+
/* harmony export */ TTAdapter: () => (/* binding */ TTAdapter),
|
|
1216
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
1304
1217
|
/* harmony export */ });
|
|
1305
|
-
/* harmony import */ var
|
|
1306
|
-
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
1307
|
-
var __assign = undefined && undefined.__assign || function () {
|
|
1308
|
-
__assign = Object.assign || function (t) {
|
|
1309
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
1310
|
-
s = arguments[i];
|
|
1311
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
1312
|
-
}
|
|
1313
|
-
return t;
|
|
1314
|
-
};
|
|
1315
|
-
return __assign.apply(this, arguments);
|
|
1316
|
-
};
|
|
1218
|
+
/* harmony import */ var _BaseAdapter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(219);
|
|
1317
1219
|
/**
|
|
1318
|
-
* TaroViz
|
|
1319
|
-
*
|
|
1220
|
+
* TaroViz 抖音小程序适配器
|
|
1221
|
+
* 基于抖音小程序canvas组件实现图表渲染
|
|
1320
1222
|
*/
|
|
1223
|
+
var __extends = undefined && undefined.__extends || function () {
|
|
1224
|
+
var extendStatics = function (d, b) {
|
|
1225
|
+
extendStatics = Object.setPrototypeOf || {
|
|
1226
|
+
__proto__: []
|
|
1227
|
+
} instanceof Array && function (d, b) {
|
|
1228
|
+
d.__proto__ = b;
|
|
1229
|
+
} || function (d, b) {
|
|
1230
|
+
for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
|
|
1231
|
+
};
|
|
1232
|
+
return extendStatics(d, b);
|
|
1233
|
+
};
|
|
1234
|
+
return function (d, b) {
|
|
1235
|
+
if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
1236
|
+
extendStatics(d, b);
|
|
1237
|
+
function __() {
|
|
1238
|
+
this.constructor = d;
|
|
1239
|
+
}
|
|
1240
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
1241
|
+
};
|
|
1242
|
+
}();
|
|
1321
1243
|
|
|
1322
|
-
/**
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
var
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
*/
|
|
1330
|
-
function WeappAdapter(config) {
|
|
1331
|
-
/**
|
|
1332
|
-
* 图表实例
|
|
1333
|
-
*/
|
|
1334
|
-
this.chartInstance = null;
|
|
1335
|
-
/**
|
|
1336
|
-
* 组件实例
|
|
1337
|
-
*/
|
|
1338
|
-
this.component = null;
|
|
1339
|
-
this.config = config;
|
|
1340
|
-
this.component = config.component;
|
|
1244
|
+
var TTAdapter = /** @class */function (_super) {
|
|
1245
|
+
__extends(TTAdapter, _super);
|
|
1246
|
+
function TTAdapter(config) {
|
|
1247
|
+
var _this = _super.call(this, config) || this;
|
|
1248
|
+
_this.component = null;
|
|
1249
|
+
_this.component = config.component;
|
|
1250
|
+
return _this;
|
|
1341
1251
|
}
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
* @param options 适配器选项
|
|
1345
|
-
* @returns 适配器实例
|
|
1346
|
-
*/
|
|
1347
|
-
WeappAdapter.create = function (options) {
|
|
1348
|
-
return new WeappAdapter(options);
|
|
1349
|
-
};
|
|
1350
|
-
/**
|
|
1351
|
-
* 获取图表实例
|
|
1352
|
-
*/
|
|
1353
|
-
WeappAdapter.prototype.getInstance = function () {
|
|
1354
|
-
return this.chartInstance;
|
|
1252
|
+
TTAdapter.create = function (options) {
|
|
1253
|
+
return new TTAdapter(options);
|
|
1355
1254
|
};
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
height = _a.height,
|
|
1364
|
-
theme = _a.theme,
|
|
1365
|
-
option = _a.option;
|
|
1255
|
+
TTAdapter.prototype.init = function () {
|
|
1256
|
+
var config = this.config;
|
|
1257
|
+
var canvasId = config.canvasId,
|
|
1258
|
+
width = config.width,
|
|
1259
|
+
height = config.height,
|
|
1260
|
+
theme = config.theme,
|
|
1261
|
+
option = config.option;
|
|
1366
1262
|
if (!this.component) {
|
|
1367
|
-
console.error('[TaroViz]
|
|
1263
|
+
console.error('[TaroViz] TTAdapter: component is required');
|
|
1368
1264
|
return null;
|
|
1369
1265
|
}
|
|
1370
1266
|
if (!canvasId) {
|
|
1371
|
-
console.error('[TaroViz]
|
|
1267
|
+
console.error('[TaroViz] TTAdapter: canvasId is required');
|
|
1372
1268
|
return null;
|
|
1373
1269
|
}
|
|
1374
|
-
// 创建图表实例
|
|
1375
1270
|
var chart = this.component.createChart({
|
|
1376
1271
|
id: canvasId,
|
|
1377
1272
|
width: width,
|
|
1378
1273
|
height: height,
|
|
1379
1274
|
theme: theme
|
|
1380
1275
|
});
|
|
1381
|
-
// 设置图表选项
|
|
1382
1276
|
if (option) {
|
|
1383
1277
|
chart.setOption(option);
|
|
1384
1278
|
}
|
|
1385
|
-
// 存储图表实例
|
|
1386
1279
|
this.chartInstance = chart;
|
|
1387
|
-
|
|
1388
|
-
if (
|
|
1389
|
-
|
|
1280
|
+
var onInit = this.config['onInit'];
|
|
1281
|
+
if (onInit) {
|
|
1282
|
+
onInit(chart);
|
|
1390
1283
|
}
|
|
1391
1284
|
return chart;
|
|
1392
1285
|
};
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
*/
|
|
1396
|
-
WeappAdapter.prototype.setOption = function (option, opts) {
|
|
1397
|
-
if (this.chartInstance) {
|
|
1398
|
-
this.chartInstance.setOption(option, opts);
|
|
1399
|
-
} else {
|
|
1400
|
-
this.config.option = option;
|
|
1401
|
-
}
|
|
1286
|
+
TTAdapter.prototype.getWidth = function () {
|
|
1287
|
+
return this.parseSize(this.config.width, 300);
|
|
1402
1288
|
};
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
*/
|
|
1406
|
-
WeappAdapter.prototype.setTheme = function (theme) {
|
|
1407
|
-
var _a, _b;
|
|
1408
|
-
this.config.theme = theme;
|
|
1409
|
-
if (this.chartInstance) {
|
|
1410
|
-
(_b = (_a = this.chartInstance).setTheme) === null || _b === void 0 ? void 0 : _b.call(_a, theme);
|
|
1411
|
-
}
|
|
1289
|
+
TTAdapter.prototype.getHeight = function () {
|
|
1290
|
+
return this.parseSize(this.config.height, 300);
|
|
1412
1291
|
};
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
*/
|
|
1416
|
-
WeappAdapter.prototype.getWidth = function () {
|
|
1417
|
-
return 0;
|
|
1292
|
+
TTAdapter.prototype.setComponent = function (component) {
|
|
1293
|
+
this.component = component;
|
|
1418
1294
|
};
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
WeappAdapter.prototype.getHeight = function () {
|
|
1423
|
-
return 0;
|
|
1295
|
+
TTAdapter.prototype.dispatchAction = function (action) {
|
|
1296
|
+
var _a, _b;
|
|
1297
|
+
(_b = (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.dispatchAction) === null || _b === void 0 ? void 0 : _b.call(_a, action);
|
|
1424
1298
|
};
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
WeappAdapter.prototype.getDom = function () {
|
|
1429
|
-
return null;
|
|
1299
|
+
TTAdapter.prototype.getDataURL = function (opts) {
|
|
1300
|
+
var _a, _b;
|
|
1301
|
+
return (_b = (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.getDataURL) === null || _b === void 0 ? void 0 : _b.call(_a, opts);
|
|
1430
1302
|
};
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1303
|
+
return TTAdapter;
|
|
1304
|
+
}(_BaseAdapter__WEBPACK_IMPORTED_MODULE_0__/* .BaseAdapter */ .D);
|
|
1305
|
+
|
|
1306
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TTAdapter);
|
|
1307
|
+
|
|
1308
|
+
/***/ },
|
|
1309
|
+
|
|
1310
|
+
/***/ 999
|
|
1311
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
1312
|
+
|
|
1313
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1314
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1315
|
+
/* harmony export */ WeappAdapter: () => (/* binding */ WeappAdapter),
|
|
1316
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
1317
|
+
/* harmony export */ });
|
|
1318
|
+
/* harmony import */ var _BaseAdapter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(219);
|
|
1319
|
+
/**
|
|
1320
|
+
* TaroViz 微信小程序适配器
|
|
1321
|
+
* 基于微信小程序canvas组件实现图表渲染
|
|
1322
|
+
*/
|
|
1323
|
+
var __extends = undefined && undefined.__extends || function () {
|
|
1324
|
+
var extendStatics = function (d, b) {
|
|
1325
|
+
extendStatics = Object.setPrototypeOf || {
|
|
1326
|
+
__proto__: []
|
|
1327
|
+
} instanceof Array && function (d, b) {
|
|
1328
|
+
d.__proto__ = b;
|
|
1329
|
+
} || function (d, b) {
|
|
1330
|
+
for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
|
|
1331
|
+
};
|
|
1332
|
+
return extendStatics(d, b);
|
|
1437
1333
|
};
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
this.chartInstance.clear();
|
|
1334
|
+
return function (d, b) {
|
|
1335
|
+
if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
1336
|
+
extendStatics(d, b);
|
|
1337
|
+
function __() {
|
|
1338
|
+
this.constructor = d;
|
|
1444
1339
|
}
|
|
1340
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
1445
1341
|
};
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
WeappAdapter
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1342
|
+
}();
|
|
1343
|
+
|
|
1344
|
+
var WeappAdapter = /** @class */function (_super) {
|
|
1345
|
+
__extends(WeappAdapter, _super);
|
|
1346
|
+
function WeappAdapter(config) {
|
|
1347
|
+
var _this = _super.call(this, config) || this;
|
|
1348
|
+
_this.component = null;
|
|
1349
|
+
_this.component = config.component;
|
|
1350
|
+
return _this;
|
|
1351
|
+
}
|
|
1352
|
+
WeappAdapter.create = function (options) {
|
|
1353
|
+
return new WeappAdapter(options);
|
|
1453
1354
|
};
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1355
|
+
WeappAdapter.prototype.init = function () {
|
|
1356
|
+
var config = this.config;
|
|
1357
|
+
var canvasId = config.canvasId,
|
|
1358
|
+
width = config.width,
|
|
1359
|
+
height = config.height,
|
|
1360
|
+
theme = config.theme,
|
|
1361
|
+
option = config.option;
|
|
1362
|
+
if (!this.component) {
|
|
1363
|
+
console.error('[TaroViz] WeappAdapter: component is required');
|
|
1364
|
+
return null;
|
|
1460
1365
|
}
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
*/
|
|
1465
|
-
WeappAdapter.prototype.showLoading = function (opts) {
|
|
1466
|
-
if (this.chartInstance) {
|
|
1467
|
-
this.chartInstance.showLoading(opts);
|
|
1366
|
+
if (!canvasId) {
|
|
1367
|
+
console.error('[TaroViz] WeappAdapter: canvasId is required');
|
|
1368
|
+
return null;
|
|
1468
1369
|
}
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1370
|
+
var chart = this.component.createChart({
|
|
1371
|
+
id: canvasId,
|
|
1372
|
+
width: width,
|
|
1373
|
+
height: height,
|
|
1374
|
+
theme: theme
|
|
1375
|
+
});
|
|
1376
|
+
if (option) {
|
|
1377
|
+
chart.setOption(option);
|
|
1476
1378
|
}
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
WeappAdapter.prototype.dispose = function () {
|
|
1482
|
-
if (this.chartInstance) {
|
|
1483
|
-
this.chartInstance.dispose();
|
|
1484
|
-
this.chartInstance = null;
|
|
1379
|
+
this.chartInstance = chart;
|
|
1380
|
+
var onInit = this.config['onInit'];
|
|
1381
|
+
if (onInit) {
|
|
1382
|
+
onInit(chart);
|
|
1485
1383
|
}
|
|
1384
|
+
return chart;
|
|
1486
1385
|
};
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
WeappAdapter.prototype.
|
|
1491
|
-
|
|
1492
|
-
this.chartInstance.resize(opts);
|
|
1493
|
-
}
|
|
1386
|
+
WeappAdapter.prototype.getWidth = function () {
|
|
1387
|
+
return this.parseSize(this.config.width, 300);
|
|
1388
|
+
};
|
|
1389
|
+
WeappAdapter.prototype.getHeight = function () {
|
|
1390
|
+
return this.parseSize(this.config.height, 300);
|
|
1494
1391
|
};
|
|
1495
|
-
/**
|
|
1496
|
-
* 设置组件实例
|
|
1497
|
-
*/
|
|
1498
1392
|
WeappAdapter.prototype.setComponent = function (component) {
|
|
1499
1393
|
this.component = component;
|
|
1500
1394
|
};
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
_c = _a.width,
|
|
1509
|
-
width = _c === void 0 ? '100%' : _c,
|
|
1510
|
-
_d = _a.height,
|
|
1511
|
-
height = _d === void 0 ? '300px' : _d,
|
|
1512
|
-
_e = _a.style,
|
|
1513
|
-
style = _e === void 0 ? {} : _e;
|
|
1514
|
-
// 注意:这里需要根据实际使用的Taro版本和组件库来调整
|
|
1515
|
-
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement('view', {
|
|
1516
|
-
id: canvasId,
|
|
1517
|
-
style: __assign({
|
|
1518
|
-
width: width,
|
|
1519
|
-
height: height
|
|
1520
|
-
}, style)
|
|
1521
|
-
});
|
|
1395
|
+
WeappAdapter.prototype.dispatchAction = function (action) {
|
|
1396
|
+
var _a, _b;
|
|
1397
|
+
(_b = (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.dispatchAction) === null || _b === void 0 ? void 0 : _b.call(_a, action);
|
|
1398
|
+
};
|
|
1399
|
+
WeappAdapter.prototype.getDataURL = function (opts) {
|
|
1400
|
+
var _a, _b;
|
|
1401
|
+
return (_b = (_a = this.chartInstance) === null || _a === void 0 ? void 0 : _a.getDataURL) === null || _b === void 0 ? void 0 : _b.call(_a, opts);
|
|
1522
1402
|
};
|
|
1523
1403
|
return WeappAdapter;
|
|
1524
|
-
}();
|
|
1404
|
+
}(_BaseAdapter__WEBPACK_IMPORTED_MODULE_0__/* .BaseAdapter */ .D);
|
|
1405
|
+
|
|
1525
1406
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WeappAdapter);
|
|
1526
1407
|
|
|
1527
1408
|
/***/ },
|
|
@@ -1548,19 +1429,17 @@ var __assign = undefined && undefined.__assign || function () {
|
|
|
1548
1429
|
return __assign.apply(this, arguments);
|
|
1549
1430
|
};
|
|
1550
1431
|
/**
|
|
1551
|
-
*
|
|
1432
|
+
* BarChart组件
|
|
1552
1433
|
*/
|
|
1553
1434
|
|
|
1554
1435
|
|
|
1555
1436
|
|
|
1556
|
-
|
|
1557
|
-
* 柱状图组件
|
|
1558
|
-
*/
|
|
1559
|
-
var BarChart = function (props) {
|
|
1437
|
+
var BarChart = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(function (props) {
|
|
1560
1438
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_common_BaseChartWrapper__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A, __assign({}, props, {
|
|
1561
1439
|
chartType: "bar-chart"
|
|
1562
1440
|
}));
|
|
1563
|
-
};
|
|
1441
|
+
});
|
|
1442
|
+
BarChart.displayName = 'BarChart';
|
|
1564
1443
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BarChart);
|
|
1565
1444
|
|
|
1566
1445
|
/***/ },
|
|
@@ -1577,8 +1456,8 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
1577
1456
|
// EXTERNAL MODULE: external "react"
|
|
1578
1457
|
var external_react_ = __webpack_require__(15);
|
|
1579
1458
|
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
|
|
1580
|
-
// EXTERNAL MODULE: ./src/adapters/index.ts +
|
|
1581
|
-
var adapters = __webpack_require__(
|
|
1459
|
+
// EXTERNAL MODULE: ./src/adapters/index.ts + 5 modules
|
|
1460
|
+
var adapters = __webpack_require__(574);
|
|
1582
1461
|
// EXTERNAL MODULE: ./src/core/utils/index.ts + 2 modules
|
|
1583
1462
|
var utils = __webpack_require__(524);
|
|
1584
1463
|
;// ./src/charts/utils.ts
|
|
@@ -1645,6 +1524,121 @@ var BaseChartWrapper_assign = undefined && undefined.__assign || function () {
|
|
|
1645
1524
|
};
|
|
1646
1525
|
return BaseChartWrapper_assign.apply(this, arguments);
|
|
1647
1526
|
};
|
|
1527
|
+
var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
|
|
1528
|
+
function adopt(value) {
|
|
1529
|
+
return value instanceof P ? value : new P(function (resolve) {
|
|
1530
|
+
resolve(value);
|
|
1531
|
+
});
|
|
1532
|
+
}
|
|
1533
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1534
|
+
function fulfilled(value) {
|
|
1535
|
+
try {
|
|
1536
|
+
step(generator.next(value));
|
|
1537
|
+
} catch (e) {
|
|
1538
|
+
reject(e);
|
|
1539
|
+
}
|
|
1540
|
+
}
|
|
1541
|
+
function rejected(value) {
|
|
1542
|
+
try {
|
|
1543
|
+
step(generator["throw"](value));
|
|
1544
|
+
} catch (e) {
|
|
1545
|
+
reject(e);
|
|
1546
|
+
}
|
|
1547
|
+
}
|
|
1548
|
+
function step(result) {
|
|
1549
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
1550
|
+
}
|
|
1551
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
1552
|
+
});
|
|
1553
|
+
};
|
|
1554
|
+
var __generator = undefined && undefined.__generator || function (thisArg, body) {
|
|
1555
|
+
var _ = {
|
|
1556
|
+
label: 0,
|
|
1557
|
+
sent: function () {
|
|
1558
|
+
if (t[0] & 1) throw t[1];
|
|
1559
|
+
return t[1];
|
|
1560
|
+
},
|
|
1561
|
+
trys: [],
|
|
1562
|
+
ops: []
|
|
1563
|
+
},
|
|
1564
|
+
f,
|
|
1565
|
+
y,
|
|
1566
|
+
t,
|
|
1567
|
+
g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
1568
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function () {
|
|
1569
|
+
return this;
|
|
1570
|
+
}), g;
|
|
1571
|
+
function verb(n) {
|
|
1572
|
+
return function (v) {
|
|
1573
|
+
return step([n, v]);
|
|
1574
|
+
};
|
|
1575
|
+
}
|
|
1576
|
+
function step(op) {
|
|
1577
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
1578
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
1579
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
1580
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
1581
|
+
switch (op[0]) {
|
|
1582
|
+
case 0:
|
|
1583
|
+
case 1:
|
|
1584
|
+
t = op;
|
|
1585
|
+
break;
|
|
1586
|
+
case 4:
|
|
1587
|
+
_.label++;
|
|
1588
|
+
return {
|
|
1589
|
+
value: op[1],
|
|
1590
|
+
done: false
|
|
1591
|
+
};
|
|
1592
|
+
case 5:
|
|
1593
|
+
_.label++;
|
|
1594
|
+
y = op[1];
|
|
1595
|
+
op = [0];
|
|
1596
|
+
continue;
|
|
1597
|
+
case 7:
|
|
1598
|
+
op = _.ops.pop();
|
|
1599
|
+
_.trys.pop();
|
|
1600
|
+
continue;
|
|
1601
|
+
default:
|
|
1602
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
1603
|
+
_ = 0;
|
|
1604
|
+
continue;
|
|
1605
|
+
}
|
|
1606
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
1607
|
+
_.label = op[1];
|
|
1608
|
+
break;
|
|
1609
|
+
}
|
|
1610
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
1611
|
+
_.label = t[1];
|
|
1612
|
+
t = op;
|
|
1613
|
+
break;
|
|
1614
|
+
}
|
|
1615
|
+
if (t && _.label < t[2]) {
|
|
1616
|
+
_.label = t[2];
|
|
1617
|
+
_.ops.push(op);
|
|
1618
|
+
break;
|
|
1619
|
+
}
|
|
1620
|
+
if (t[2]) _.ops.pop();
|
|
1621
|
+
_.trys.pop();
|
|
1622
|
+
continue;
|
|
1623
|
+
}
|
|
1624
|
+
op = body.call(thisArg, _);
|
|
1625
|
+
} catch (e) {
|
|
1626
|
+
op = [6, e];
|
|
1627
|
+
y = 0;
|
|
1628
|
+
} finally {
|
|
1629
|
+
f = t = 0;
|
|
1630
|
+
}
|
|
1631
|
+
if (op[0] & 5) throw op[1];
|
|
1632
|
+
return {
|
|
1633
|
+
value: op[0] ? op[1] : void 0,
|
|
1634
|
+
done: true
|
|
1635
|
+
};
|
|
1636
|
+
}
|
|
1637
|
+
};
|
|
1638
|
+
/**
|
|
1639
|
+
* 基础图表包装组件
|
|
1640
|
+
* 提供统一的图表初始化、渲染和生命周期管理
|
|
1641
|
+
*/
|
|
1648
1642
|
|
|
1649
1643
|
|
|
1650
1644
|
|
|
@@ -1692,49 +1686,68 @@ var BaseChartWrapper = function (_a) {
|
|
|
1692
1686
|
renderer: renderer,
|
|
1693
1687
|
option: option
|
|
1694
1688
|
});
|
|
1695
|
-
}, [width, height, theme, autoResize, renderer, option
|
|
1689
|
+
}, [width, height, theme, autoResize, renderer, option]);
|
|
1696
1690
|
// 处理图表初始化
|
|
1697
1691
|
(0,external_react_.useEffect)(function () {
|
|
1698
|
-
var
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1692
|
+
var initChart = function () {
|
|
1693
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
1694
|
+
var initConfig, adapter;
|
|
1695
|
+
return __generator(this, function (_a) {
|
|
1696
|
+
switch (_a.label) {
|
|
1697
|
+
case 0:
|
|
1698
|
+
initConfig = processAdapterConfig(BaseChartWrapper_assign(BaseChartWrapper_assign({}, adapterConfig), {
|
|
1699
|
+
onInit: function (instance) {
|
|
1700
|
+
chartInstance.current = instance;
|
|
1701
|
+
// 绑定事件
|
|
1702
|
+
if (onEvents) {
|
|
1703
|
+
Object.keys(onEvents).forEach(function (eventName) {
|
|
1704
|
+
instance.on(eventName, onEvents[eventName]);
|
|
1705
|
+
});
|
|
1706
|
+
}
|
|
1707
|
+
// 初始化回调
|
|
1708
|
+
if (onChartInit) {
|
|
1709
|
+
onChartInit(instance);
|
|
1710
|
+
}
|
|
1711
|
+
// 准备好回调
|
|
1712
|
+
if (onChartReady) {
|
|
1713
|
+
onChartReady(instance);
|
|
1714
|
+
}
|
|
1715
|
+
}
|
|
1716
|
+
}));
|
|
1717
|
+
return [4 /*yield*/, (0,adapters/* getAdapter */.cK)(initConfig)];
|
|
1718
|
+
case 1:
|
|
1719
|
+
adapter = _a.sent();
|
|
1720
|
+
adapter.init();
|
|
1721
|
+
// 返回清理函数
|
|
1722
|
+
return [2 /*return*/, function () {
|
|
1723
|
+
if (chartInstance.current) {
|
|
1724
|
+
// 解绑事件
|
|
1725
|
+
if (onEvents) {
|
|
1726
|
+
Object.keys(onEvents).forEach(function (eventName) {
|
|
1727
|
+
var _a;
|
|
1728
|
+
(_a = chartInstance.current) === null || _a === void 0 ? void 0 : _a.off(eventName);
|
|
1729
|
+
});
|
|
1730
|
+
}
|
|
1731
|
+
chartInstance.current.dispose();
|
|
1732
|
+
chartInstance.current = null;
|
|
1733
|
+
}
|
|
1734
|
+
}];
|
|
1735
|
+
}
|
|
1736
|
+
});
|
|
1737
|
+
});
|
|
1738
|
+
};
|
|
1739
|
+
// 执行异步初始化并获取清理函数
|
|
1740
|
+
var cleanupPromise = initChart();
|
|
1741
|
+
// 返回清理函数
|
|
1721
1742
|
return function () {
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
Object.keys(onEvents).forEach(function (eventName) {
|
|
1726
|
-
var _a;
|
|
1727
|
-
(_a = chartInstance.current) === null || _a === void 0 ? void 0 : _a.off(eventName);
|
|
1728
|
-
});
|
|
1729
|
-
}
|
|
1730
|
-
chartInstance.current.dispose();
|
|
1731
|
-
chartInstance.current = null;
|
|
1732
|
-
}
|
|
1743
|
+
cleanupPromise.then(function (cleanup) {
|
|
1744
|
+
return cleanup === null || cleanup === void 0 ? void 0 : cleanup();
|
|
1745
|
+
});
|
|
1733
1746
|
};
|
|
1734
1747
|
}, [adapterConfig, onChartInit, onChartReady, onEvents]);
|
|
1735
1748
|
// 更新配置
|
|
1736
1749
|
(0,external_react_.useEffect)(function () {
|
|
1737
|
-
if (chartInstance.current) {
|
|
1750
|
+
if (chartInstance.current && option) {
|
|
1738
1751
|
chartInstance.current.setOption(option, true);
|
|
1739
1752
|
}
|
|
1740
1753
|
}, [option]);
|
|
@@ -1785,19 +1798,17 @@ var __assign = undefined && undefined.__assign || function () {
|
|
|
1785
1798
|
return __assign.apply(this, arguments);
|
|
1786
1799
|
};
|
|
1787
1800
|
/**
|
|
1788
|
-
*
|
|
1801
|
+
* FunnelChart组件
|
|
1789
1802
|
*/
|
|
1790
1803
|
|
|
1791
1804
|
|
|
1792
1805
|
|
|
1793
|
-
|
|
1794
|
-
* 漏斗图组件
|
|
1795
|
-
*/
|
|
1796
|
-
var FunnelChart = function (props) {
|
|
1806
|
+
var FunnelChart = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(function (props) {
|
|
1797
1807
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_common_BaseChartWrapper__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A, __assign({}, props, {
|
|
1798
1808
|
chartType: "funnel-chart"
|
|
1799
1809
|
}));
|
|
1800
|
-
};
|
|
1810
|
+
});
|
|
1811
|
+
FunnelChart.displayName = 'FunnelChart';
|
|
1801
1812
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FunnelChart);
|
|
1802
1813
|
|
|
1803
1814
|
/***/ },
|
|
@@ -1824,19 +1835,17 @@ var __assign = undefined && undefined.__assign || function () {
|
|
|
1824
1835
|
return __assign.apply(this, arguments);
|
|
1825
1836
|
};
|
|
1826
1837
|
/**
|
|
1827
|
-
*
|
|
1838
|
+
* GaugeChart组件
|
|
1828
1839
|
*/
|
|
1829
1840
|
|
|
1830
1841
|
|
|
1831
1842
|
|
|
1832
|
-
|
|
1833
|
-
* 仪表盘组件
|
|
1834
|
-
*/
|
|
1835
|
-
var GaugeChart = function (props) {
|
|
1843
|
+
var GaugeChart = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(function (props) {
|
|
1836
1844
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_common_BaseChartWrapper__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A, __assign({}, props, {
|
|
1837
1845
|
chartType: "gauge-chart"
|
|
1838
1846
|
}));
|
|
1839
|
-
};
|
|
1847
|
+
});
|
|
1848
|
+
GaugeChart.displayName = 'GaugeChart';
|
|
1840
1849
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (GaugeChart);
|
|
1841
1850
|
|
|
1842
1851
|
/***/ },
|
|
@@ -1863,19 +1872,17 @@ var __assign = undefined && undefined.__assign || function () {
|
|
|
1863
1872
|
return __assign.apply(this, arguments);
|
|
1864
1873
|
};
|
|
1865
1874
|
/**
|
|
1866
|
-
*
|
|
1875
|
+
* HeatmapChart组件
|
|
1867
1876
|
*/
|
|
1868
1877
|
|
|
1869
1878
|
|
|
1870
1879
|
|
|
1871
|
-
|
|
1872
|
-
* 热力图组件
|
|
1873
|
-
*/
|
|
1874
|
-
var HeatmapChart = function (props) {
|
|
1880
|
+
var HeatmapChart = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(function (props) {
|
|
1875
1881
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_common_BaseChartWrapper__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A, __assign({}, props, {
|
|
1876
1882
|
chartType: "heatmap-chart"
|
|
1877
1883
|
}));
|
|
1878
|
-
};
|
|
1884
|
+
});
|
|
1885
|
+
HeatmapChart.displayName = 'HeatmapChart';
|
|
1879
1886
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (HeatmapChart);
|
|
1880
1887
|
|
|
1881
1888
|
/***/ },
|
|
@@ -1907,14 +1914,12 @@ var __assign = undefined && undefined.__assign || function () {
|
|
|
1907
1914
|
|
|
1908
1915
|
|
|
1909
1916
|
|
|
1910
|
-
|
|
1911
|
-
* 折线图组件
|
|
1912
|
-
*/
|
|
1913
|
-
var LineChart = function (props) {
|
|
1917
|
+
var LineChart = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(function (props) {
|
|
1914
1918
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_common_BaseChartWrapper__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A, __assign({}, props, {
|
|
1915
1919
|
chartType: "line-chart"
|
|
1916
1920
|
}));
|
|
1917
|
-
};
|
|
1921
|
+
});
|
|
1922
|
+
LineChart.displayName = 'LineChart';
|
|
1918
1923
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LineChart);
|
|
1919
1924
|
|
|
1920
1925
|
/***/ },
|
|
@@ -1941,20 +1946,17 @@ var __assign = undefined && undefined.__assign || function () {
|
|
|
1941
1946
|
return __assign.apply(this, arguments);
|
|
1942
1947
|
};
|
|
1943
1948
|
/**
|
|
1944
|
-
*
|
|
1949
|
+
* PieChart组件
|
|
1945
1950
|
*/
|
|
1946
1951
|
|
|
1947
1952
|
|
|
1948
|
-
// 导入统一注册的 echarts
|
|
1949
1953
|
|
|
1950
|
-
|
|
1951
|
-
* 饼图组件
|
|
1952
|
-
*/
|
|
1953
|
-
var PieChart = function (props) {
|
|
1954
|
+
var PieChart = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(function (props) {
|
|
1954
1955
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_common_BaseChartWrapper__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A, __assign({}, props, {
|
|
1955
1956
|
chartType: "pie-chart"
|
|
1956
1957
|
}));
|
|
1957
|
-
};
|
|
1958
|
+
});
|
|
1959
|
+
PieChart.displayName = 'PieChart';
|
|
1958
1960
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PieChart);
|
|
1959
1961
|
|
|
1960
1962
|
/***/ },
|
|
@@ -1981,19 +1983,17 @@ var __assign = undefined && undefined.__assign || function () {
|
|
|
1981
1983
|
return __assign.apply(this, arguments);
|
|
1982
1984
|
};
|
|
1983
1985
|
/**
|
|
1984
|
-
*
|
|
1986
|
+
* RadarChart组件
|
|
1985
1987
|
*/
|
|
1986
1988
|
|
|
1987
1989
|
|
|
1988
1990
|
|
|
1989
|
-
|
|
1990
|
-
* 雷达图组件
|
|
1991
|
-
*/
|
|
1992
|
-
var RadarChart = function (props) {
|
|
1991
|
+
var RadarChart = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(function (props) {
|
|
1993
1992
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_common_BaseChartWrapper__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A, __assign({}, props, {
|
|
1994
1993
|
chartType: "radar-chart"
|
|
1995
1994
|
}));
|
|
1996
|
-
};
|
|
1995
|
+
});
|
|
1996
|
+
RadarChart.displayName = 'RadarChart';
|
|
1997
1997
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RadarChart);
|
|
1998
1998
|
|
|
1999
1999
|
/***/ },
|
|
@@ -2059,19 +2059,17 @@ var __assign = undefined && undefined.__assign || function () {
|
|
|
2059
2059
|
return __assign.apply(this, arguments);
|
|
2060
2060
|
};
|
|
2061
2061
|
/**
|
|
2062
|
-
*
|
|
2062
|
+
* ScatterChart组件
|
|
2063
2063
|
*/
|
|
2064
2064
|
|
|
2065
2065
|
|
|
2066
2066
|
|
|
2067
|
-
|
|
2068
|
-
* 散点图组件
|
|
2069
|
-
*/
|
|
2070
|
-
var ScatterChart = function (props) {
|
|
2067
|
+
var ScatterChart = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(function (props) {
|
|
2071
2068
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_common_BaseChartWrapper__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A, __assign({}, props, {
|
|
2072
2069
|
chartType: "scatter-chart"
|
|
2073
2070
|
}));
|
|
2074
|
-
};
|
|
2071
|
+
});
|
|
2072
|
+
ScatterChart.displayName = 'ScatterChart';
|
|
2075
2073
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ScatterChart);
|
|
2076
2074
|
|
|
2077
2075
|
/***/ },
|
|
@@ -2326,6 +2324,9 @@ var AnimationManager = /** @class */function () {
|
|
|
2326
2324
|
AnimationManager.getInstance = function (config) {
|
|
2327
2325
|
if (!AnimationManager.instance) {
|
|
2328
2326
|
AnimationManager.instance = new AnimationManager(config);
|
|
2327
|
+
} else if (config) {
|
|
2328
|
+
// 如果传入了新配置,更新配置
|
|
2329
|
+
AnimationManager.instance.updateConfig(config);
|
|
2329
2330
|
}
|
|
2330
2331
|
return AnimationManager.instance;
|
|
2331
2332
|
};
|
|
@@ -2508,6 +2509,17 @@ var AnimationManager = /** @class */function () {
|
|
|
2508
2509
|
AnimationManager.prototype.updatePerformanceConfig = function (config) {
|
|
2509
2510
|
this.performanceConfig = __assign(__assign({}, this.performanceConfig), config);
|
|
2510
2511
|
};
|
|
2512
|
+
/**
|
|
2513
|
+
* 更新配置
|
|
2514
|
+
*/
|
|
2515
|
+
AnimationManager.prototype.updateConfig = function (config) {
|
|
2516
|
+
if (config.defaultConfig) {
|
|
2517
|
+
this.defaultConfig = config.defaultConfig;
|
|
2518
|
+
}
|
|
2519
|
+
if (config.performance) {
|
|
2520
|
+
this.updatePerformanceConfig(config.performance);
|
|
2521
|
+
}
|
|
2522
|
+
};
|
|
2511
2523
|
/**
|
|
2512
2524
|
* 获取性能配置
|
|
2513
2525
|
*/
|
|
@@ -3275,11 +3287,19 @@ var __webpack_exports__ = {};
|
|
|
3275
3287
|
// EXTERNAL MODULE: external "react"
|
|
3276
3288
|
var external_react_ = __webpack_require__(15);
|
|
3277
3289
|
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
|
|
3278
|
-
// EXTERNAL MODULE: ./src/adapters/index.ts + 8 modules
|
|
3279
|
-
var adapters = __webpack_require__(234);
|
|
3280
3290
|
// EXTERNAL MODULE: ./src/core/animation/index.ts + 2 modules
|
|
3281
|
-
var
|
|
3291
|
+
var core_animation = __webpack_require__(251);
|
|
3282
3292
|
;// ./src/core/utils/chartInstances.ts
|
|
3293
|
+
var __assign = undefined && undefined.__assign || function () {
|
|
3294
|
+
__assign = Object.assign || function (t) {
|
|
3295
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
3296
|
+
s = arguments[i];
|
|
3297
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
3298
|
+
}
|
|
3299
|
+
return t;
|
|
3300
|
+
};
|
|
3301
|
+
return __assign.apply(this, arguments);
|
|
3302
|
+
};
|
|
3283
3303
|
/**
|
|
3284
3304
|
* 全局图表实例存储
|
|
3285
3305
|
*/
|
|
@@ -3315,15 +3335,20 @@ function getChart(id) {
|
|
|
3315
3335
|
*/
|
|
3316
3336
|
function removeChart(id) {
|
|
3317
3337
|
if (CHART_INSTANCES[id]) {
|
|
3338
|
+
try {
|
|
3339
|
+
CHART_INSTANCES[id].dispose();
|
|
3340
|
+
} catch (e) {
|
|
3341
|
+
console.warn("Failed to dispose chart on removal: ".concat(id), e);
|
|
3342
|
+
}
|
|
3318
3343
|
delete CHART_INSTANCES[id];
|
|
3319
3344
|
}
|
|
3320
3345
|
}
|
|
3321
3346
|
/**
|
|
3322
3347
|
* 获取所有图表实例
|
|
3323
|
-
* @returns
|
|
3348
|
+
* @returns 所有图表实例的浅拷贝
|
|
3324
3349
|
*/
|
|
3325
3350
|
function getAllCharts() {
|
|
3326
|
-
return CHART_INSTANCES;
|
|
3351
|
+
return __assign({}, CHART_INSTANCES);
|
|
3327
3352
|
}
|
|
3328
3353
|
/**
|
|
3329
3354
|
* 清空所有图表实例
|
|
@@ -3377,15 +3402,15 @@ var DebugPanelEventType;
|
|
|
3377
3402
|
DebugPanelEventType["INFO_UPDATE"] = "debugPanelInfoUpdate";
|
|
3378
3403
|
})(DebugPanelEventType || (DebugPanelEventType = {}));
|
|
3379
3404
|
;// ./src/core/utils/debug/DebugPanel.tsx
|
|
3380
|
-
var
|
|
3381
|
-
|
|
3405
|
+
var DebugPanel_assign = undefined && undefined.__assign || function () {
|
|
3406
|
+
DebugPanel_assign = Object.assign || function (t) {
|
|
3382
3407
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
3383
3408
|
s = arguments[i];
|
|
3384
3409
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
3385
3410
|
}
|
|
3386
3411
|
return t;
|
|
3387
3412
|
};
|
|
3388
|
-
return
|
|
3413
|
+
return DebugPanel_assign.apply(this, arguments);
|
|
3389
3414
|
};
|
|
3390
3415
|
/**
|
|
3391
3416
|
* TaroViz 调试面板组件
|
|
@@ -3709,7 +3734,7 @@ var DebugPanel = function (_a) {
|
|
|
3709
3734
|
}, "\u91CD\u7F6E\u56FE\u8868")));
|
|
3710
3735
|
};
|
|
3711
3736
|
// 构建面板样式
|
|
3712
|
-
var panelStyle =
|
|
3737
|
+
var panelStyle = DebugPanel_assign(DebugPanel_assign(DebugPanel_assign(DebugPanel_assign(DebugPanel_assign(DebugPanel_assign({
|
|
3713
3738
|
position: 'fixed',
|
|
3714
3739
|
zIndex: 9999,
|
|
3715
3740
|
backgroundColor: 'rgba(255, 255, 255, 0.95)',
|
|
@@ -3751,43 +3776,43 @@ var DebugPanel = function (_a) {
|
|
|
3751
3776
|
}, isExpanded ? '▼' : '▶')), isExpanded && (/*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
|
|
3752
3777
|
style: styles.debugPanelTabs
|
|
3753
3778
|
}, /*#__PURE__*/external_react_default().createElement("button", {
|
|
3754
|
-
style:
|
|
3779
|
+
style: DebugPanel_assign(DebugPanel_assign({}, styles.debugTab), activeTab === 'instance' && styles.debugTabActive),
|
|
3755
3780
|
onClick: function () {
|
|
3756
3781
|
return switchTab('instance');
|
|
3757
3782
|
},
|
|
3758
3783
|
title: "\u5B9E\u4F8B\u4FE1\u606F"
|
|
3759
3784
|
}, "\u5B9E\u4F8B"), /*#__PURE__*/external_react_default().createElement("button", {
|
|
3760
|
-
style:
|
|
3785
|
+
style: DebugPanel_assign(DebugPanel_assign({}, styles.debugTab), activeTab === 'config' && styles.debugTabActive),
|
|
3761
3786
|
onClick: function () {
|
|
3762
3787
|
return switchTab('config');
|
|
3763
3788
|
},
|
|
3764
3789
|
title: "\u914D\u7F6E\u4FE1\u606F"
|
|
3765
3790
|
}, "\u914D\u7F6E"), /*#__PURE__*/external_react_default().createElement("button", {
|
|
3766
|
-
style:
|
|
3791
|
+
style: DebugPanel_assign(DebugPanel_assign({}, styles.debugTab), activeTab === 'data' && styles.debugTabActive),
|
|
3767
3792
|
onClick: function () {
|
|
3768
3793
|
return switchTab('data');
|
|
3769
3794
|
},
|
|
3770
3795
|
title: "\u6570\u636E\u4FE1\u606F"
|
|
3771
3796
|
}, "\u6570\u636E"), /*#__PURE__*/external_react_default().createElement("button", {
|
|
3772
|
-
style:
|
|
3797
|
+
style: DebugPanel_assign(DebugPanel_assign({}, styles.debugTab), activeTab === 'performance' && styles.debugTabActive),
|
|
3773
3798
|
onClick: function () {
|
|
3774
3799
|
return switchTab('performance');
|
|
3775
3800
|
},
|
|
3776
3801
|
title: "\u6027\u80FD\u4FE1\u606F"
|
|
3777
3802
|
}, "\u6027\u80FD"), /*#__PURE__*/external_react_default().createElement("button", {
|
|
3778
|
-
style:
|
|
3803
|
+
style: DebugPanel_assign(DebugPanel_assign({}, styles.debugTab), activeTab === 'events' && styles.debugTabActive),
|
|
3779
3804
|
onClick: function () {
|
|
3780
3805
|
return switchTab('events');
|
|
3781
3806
|
},
|
|
3782
3807
|
title: "\u4E8B\u4EF6\u4FE1\u606F"
|
|
3783
3808
|
}, "\u4E8B\u4EF6"), /*#__PURE__*/external_react_default().createElement("button", {
|
|
3784
|
-
style:
|
|
3809
|
+
style: DebugPanel_assign(DebugPanel_assign({}, styles.debugTab), activeTab === 'errors' && styles.debugTabActive),
|
|
3785
3810
|
onClick: function () {
|
|
3786
3811
|
return switchTab('errors');
|
|
3787
3812
|
},
|
|
3788
3813
|
title: "\u9519\u8BEF\u4FE1\u606F"
|
|
3789
3814
|
}, "\u9519\u8BEF"), /*#__PURE__*/external_react_default().createElement("button", {
|
|
3790
|
-
style:
|
|
3815
|
+
style: DebugPanel_assign(DebugPanel_assign({}, styles.debugTab), activeTab === 'tools' && styles.debugTabActive),
|
|
3791
3816
|
onClick: function () {
|
|
3792
3817
|
return switchTab('tools');
|
|
3793
3818
|
},
|
|
@@ -4405,6 +4430,10 @@ var PerformanceAnalyzer = /** @class */function () {
|
|
|
4405
4430
|
this.sampleIntervalId = null;
|
|
4406
4431
|
this.frameRateHistory = [];
|
|
4407
4432
|
this.lastFrameTime = 0;
|
|
4433
|
+
/**
|
|
4434
|
+
* RAF 动画帧 ID,用于取消
|
|
4435
|
+
*/
|
|
4436
|
+
this.rafId = null;
|
|
4408
4437
|
this.config = PerformanceAnalyzer_assign({
|
|
4409
4438
|
enabled: true,
|
|
4410
4439
|
metrics: ['initTime', 'renderTime', 'updateTime', 'dataSize', 'frameRate'],
|
|
@@ -4516,32 +4545,53 @@ var PerformanceAnalyzer = /** @class */function () {
|
|
|
4516
4545
|
this.stopFrameRateMonitoring();
|
|
4517
4546
|
this.emit(PerformanceEventType.MONITORING_END);
|
|
4518
4547
|
};
|
|
4548
|
+
/**
|
|
4549
|
+
* 释放资源
|
|
4550
|
+
* 完全清理性能分析器,包括单例实例
|
|
4551
|
+
*/
|
|
4552
|
+
PerformanceAnalyzer.prototype.dispose = function () {
|
|
4553
|
+
this.stop();
|
|
4554
|
+
this.metrics.clear();
|
|
4555
|
+
this.eventHandlers.clear();
|
|
4556
|
+
this.frameRateHistory = [];
|
|
4557
|
+
// 如果是当前单例,清除单例引用
|
|
4558
|
+
if (PerformanceAnalyzer.instance === this) {
|
|
4559
|
+
PerformanceAnalyzer.instance = null;
|
|
4560
|
+
}
|
|
4561
|
+
};
|
|
4519
4562
|
/**
|
|
4520
4563
|
* 开始帧率监控
|
|
4521
4564
|
*/
|
|
4522
4565
|
PerformanceAnalyzer.prototype.startFrameRateMonitoring = function () {
|
|
4523
4566
|
var _this = this;
|
|
4524
4567
|
var updateFrameRate = function () {
|
|
4568
|
+
var _a;
|
|
4525
4569
|
if (!_this.isMonitoring) {
|
|
4526
4570
|
return;
|
|
4527
4571
|
}
|
|
4528
4572
|
var currentTime = performance.now();
|
|
4529
4573
|
var deltaTime = currentTime - _this.lastFrameTime;
|
|
4530
4574
|
var frameRate = deltaTime > 0 ? Math.round(1000 / deltaTime) : 0;
|
|
4531
|
-
|
|
4532
|
-
|
|
4575
|
+
// 使用 config.maxSamples 限制历史记录长度
|
|
4576
|
+
var maxSamples = (_a = _this.config.maxSamples) !== null && _a !== void 0 ? _a : 100;
|
|
4577
|
+
if (_this.frameRateHistory.length >= maxSamples) {
|
|
4533
4578
|
_this.frameRateHistory.shift();
|
|
4534
4579
|
}
|
|
4580
|
+
_this.frameRateHistory.push(frameRate);
|
|
4535
4581
|
_this.lastFrameTime = currentTime;
|
|
4536
|
-
requestAnimationFrame(updateFrameRate);
|
|
4582
|
+
_this.rafId = requestAnimationFrame(updateFrameRate);
|
|
4537
4583
|
};
|
|
4538
|
-
requestAnimationFrame(updateFrameRate);
|
|
4584
|
+
this.rafId = requestAnimationFrame(updateFrameRate);
|
|
4539
4585
|
};
|
|
4540
4586
|
/**
|
|
4541
4587
|
* 停止帧率监控
|
|
4542
4588
|
*/
|
|
4543
4589
|
PerformanceAnalyzer.prototype.stopFrameRateMonitoring = function () {
|
|
4544
|
-
//
|
|
4590
|
+
// 取消 RAF 循环,防止继续运行
|
|
4591
|
+
if (this.rafId !== null) {
|
|
4592
|
+
cancelAnimationFrame(this.rafId);
|
|
4593
|
+
this.rafId = null;
|
|
4594
|
+
}
|
|
4545
4595
|
this.frameRateHistory = [];
|
|
4546
4596
|
};
|
|
4547
4597
|
/**
|
|
@@ -4843,6 +4893,53 @@ var PerformanceAnalyzer = /** @class */function () {
|
|
|
4843
4893
|
// 导出默认实例
|
|
4844
4894
|
|
|
4845
4895
|
var performanceAnalyzer = PerformanceAnalyzer.getInstance();
|
|
4896
|
+
;// ./src/core/utils/chartUtils.ts
|
|
4897
|
+
/**
|
|
4898
|
+
* Normalize size value to CSS string
|
|
4899
|
+
*/
|
|
4900
|
+
function normalizeSize(value, fallback) {
|
|
4901
|
+
if (value === undefined) return fallback;
|
|
4902
|
+
return typeof value === 'number' ? "".concat(value, "px") : value;
|
|
4903
|
+
}
|
|
4904
|
+
/**
|
|
4905
|
+
* Calculate total data points in an ECharts option for animation optimization
|
|
4906
|
+
*/
|
|
4907
|
+
function calculateDataLength(option) {
|
|
4908
|
+
if (!option) return 0;
|
|
4909
|
+
var count = 0;
|
|
4910
|
+
if (option.series) {
|
|
4911
|
+
var series = Array.isArray(option.series) ? option.series : [option.series];
|
|
4912
|
+
for (var _i = 0, _a = series; _i < _a.length; _i++) {
|
|
4913
|
+
var seriesItem = _a[_i];
|
|
4914
|
+
if (seriesItem.data) {
|
|
4915
|
+
if (Array.isArray(seriesItem.data)) {
|
|
4916
|
+
count += seriesItem.data.length;
|
|
4917
|
+
} else if (typeof seriesItem.data === 'object') {
|
|
4918
|
+
count += Object.keys(seriesItem.data).length;
|
|
4919
|
+
}
|
|
4920
|
+
}
|
|
4921
|
+
}
|
|
4922
|
+
}
|
|
4923
|
+
return count;
|
|
4924
|
+
}
|
|
4925
|
+
/**
|
|
4926
|
+
* Filter data by filter conditions
|
|
4927
|
+
*/
|
|
4928
|
+
function filterDataByKeys(data, filters) {
|
|
4929
|
+
if (!filters || Object.keys(filters).length === 0) return data;
|
|
4930
|
+
return data.filter(function (item) {
|
|
4931
|
+
var _a, _b;
|
|
4932
|
+
for (var _i = 0, _c = Object.entries(filters); _i < _c.length; _i++) {
|
|
4933
|
+
var _d = _c[_i],
|
|
4934
|
+
key = _d[0],
|
|
4935
|
+
value = _d[1];
|
|
4936
|
+
if (item[key] !== value && !((_b = (_a = item[key]) === null || _a === void 0 ? void 0 : _a.includes) === null || _b === void 0 ? void 0 : _b.call(_a, value))) return false;
|
|
4937
|
+
}
|
|
4938
|
+
return true;
|
|
4939
|
+
});
|
|
4940
|
+
}
|
|
4941
|
+
// EXTERNAL MODULE: ./src/charts/common/BaseChartWrapper.tsx + 1 modules
|
|
4942
|
+
var BaseChartWrapper = __webpack_require__(412);
|
|
4846
4943
|
;// ./src/core/components/BaseChart.tsx
|
|
4847
4944
|
var BaseChart_assign = undefined && undefined.__assign || function () {
|
|
4848
4945
|
BaseChart_assign = Object.assign || function (t) {
|
|
@@ -4867,18 +4964,15 @@ var BaseChart_assign = undefined && undefined.__assign || function () {
|
|
|
4867
4964
|
|
|
4868
4965
|
|
|
4869
4966
|
|
|
4870
|
-
|
|
4871
|
-
|
|
4872
|
-
|
|
4873
|
-
|
|
4874
|
-
* @returns {JSX.Element} - 返回的 JSX 元素
|
|
4875
|
-
*
|
|
4876
|
-
* @description 基础图表组件,所有具体图表组件的基类
|
|
4877
|
-
* 负责处理图表的初始化、事件绑定、主题设置等核心逻辑
|
|
4878
|
-
*/
|
|
4967
|
+
|
|
4968
|
+
// ============================================================================
|
|
4969
|
+
// BaseChart 组件
|
|
4970
|
+
// ============================================================================
|
|
4879
4971
|
var BaseChart = function (props) {
|
|
4880
4972
|
var chartId = props.chartId,
|
|
4881
4973
|
option = props.option,
|
|
4974
|
+
animation = props.animation,
|
|
4975
|
+
debug = props.debug,
|
|
4882
4976
|
_a = props.width,
|
|
4883
4977
|
width = _a === void 0 ? '100%' : _a,
|
|
4884
4978
|
_b = props.height,
|
|
@@ -4893,7 +4987,7 @@ var BaseChart = function (props) {
|
|
|
4893
4987
|
onDataZoom = props.onDataZoom,
|
|
4894
4988
|
style = props.style,
|
|
4895
4989
|
className = props.className,
|
|
4896
|
-
|
|
4990
|
+
_children = props.children,
|
|
4897
4991
|
_e = props.virtualScroll,
|
|
4898
4992
|
virtualScroll = _e === void 0 ? false : _e,
|
|
4899
4993
|
_f = props.virtualScrollPageSize,
|
|
@@ -4904,7 +4998,7 @@ var BaseChart = function (props) {
|
|
|
4904
4998
|
enablePerformanceMonitoring = _h === void 0 ? false : _h,
|
|
4905
4999
|
onPerformance = props.onPerformance,
|
|
4906
5000
|
_j = props.enableZoom,
|
|
4907
|
-
|
|
5001
|
+
_enableZoom = _j === void 0 ? false : _j,
|
|
4908
5002
|
onZoom = props.onZoom,
|
|
4909
5003
|
_k = props.enableDataFiltering,
|
|
4910
5004
|
enableDataFiltering = _k === void 0 ? false : _k,
|
|
@@ -4925,735 +5019,308 @@ var BaseChart = function (props) {
|
|
|
4925
5019
|
customTooltipStyle = props.customTooltipStyle,
|
|
4926
5020
|
onTooltipShow = props.onTooltipShow,
|
|
4927
5021
|
onTooltipHide = props.onTooltipHide,
|
|
4928
|
-
|
|
5022
|
+
_onExport = props.onExport,
|
|
4929
5023
|
_q = props.linkageConfig,
|
|
4930
5024
|
linkageConfig = _q === void 0 ? {} : _q,
|
|
4931
5025
|
onDataUpdate = props.onDataUpdate,
|
|
4932
5026
|
_r = props.dataUpdateOptions,
|
|
4933
5027
|
dataUpdateOptions = _r === void 0 ? {} : _r;
|
|
4934
|
-
|
|
4935
|
-
|
|
4936
|
-
*/
|
|
4937
|
-
var chartRef = (0,external_react_.useRef)(null);
|
|
4938
|
-
/**
|
|
4939
|
-
* 图表适配器的引用
|
|
4940
|
-
*/
|
|
4941
|
-
var adapterRef = (0,external_react_.useRef)(null);
|
|
4942
|
-
/**
|
|
4943
|
-
* 虚拟滚动状态
|
|
4944
|
-
*/
|
|
4945
|
-
var virtualScrollRef = (0,external_react_.useRef)({
|
|
4946
|
-
currentPage: 0,
|
|
4947
|
-
totalPages: 1,
|
|
4948
|
-
totalDataCount: 0,
|
|
4949
|
-
startIndex: 0,
|
|
4950
|
-
endIndex: 0,
|
|
4951
|
-
isScrolling: false
|
|
4952
|
-
});
|
|
4953
|
-
/**
|
|
4954
|
-
* 性能分析器实例引用
|
|
4955
|
-
*/
|
|
4956
|
-
var performanceAnalyzerRef = (0,external_react_.useRef)(null);
|
|
4957
|
-
/**
|
|
4958
|
-
* 性能监控状态
|
|
4959
|
-
*/
|
|
5028
|
+
// Refs
|
|
5029
|
+
var chartInstanceRef = (0,external_react_.useRef)(null);
|
|
4960
5030
|
var performanceRef = (0,external_react_.useRef)({
|
|
4961
5031
|
initStartTime: 0,
|
|
4962
5032
|
initEndTime: 0,
|
|
4963
5033
|
renderStartTime: 0,
|
|
4964
5034
|
renderEndTime: 0,
|
|
4965
5035
|
updateStartTime: 0,
|
|
4966
|
-
updateEndTime: 0
|
|
4967
|
-
|
|
5036
|
+
updateEndTime: 0
|
|
5037
|
+
});
|
|
5038
|
+
var virtualScrollRef = (0,external_react_.useRef)({
|
|
5039
|
+
currentPage: 0,
|
|
5040
|
+
totalPages: 1,
|
|
5041
|
+
totalDataCount: 0,
|
|
5042
|
+
isScrolling: false
|
|
4968
5043
|
});
|
|
4969
|
-
/**
|
|
4970
|
-
* 旧的图表配置引用,用于数据更新监听
|
|
4971
|
-
*/
|
|
4972
5044
|
var oldOptionRef = (0,external_react_.useRef)(option);
|
|
4973
|
-
|
|
4974
|
-
* 调试配置引用
|
|
4975
|
-
*/
|
|
5045
|
+
var adapterRef = (0,external_react_.useRef)(null);
|
|
4976
5046
|
var debugConfigRef = (0,external_react_.useRef)(null);
|
|
4977
|
-
|
|
4978
|
-
|
|
4979
|
-
|
|
4980
|
-
|
|
4981
|
-
|
|
4982
|
-
|
|
4983
|
-
|
|
4984
|
-
|
|
4985
|
-
return {
|
|
4986
|
-
enabled: props.debug,
|
|
4987
|
-
autoExpand: false
|
|
4988
|
-
};
|
|
4989
|
-
}
|
|
4990
|
-
return BaseChart_assign({
|
|
5047
|
+
var performanceAnalyzerRef = (0,external_react_.useRef)(null);
|
|
5048
|
+
// Debug config
|
|
5049
|
+
var debugConfig = (0,external_react_.useMemo)(function () {
|
|
5050
|
+
if (!debug) return null;
|
|
5051
|
+
return typeof debug === 'boolean' ? {
|
|
5052
|
+
enabled: debug,
|
|
5053
|
+
autoExpand: false
|
|
5054
|
+
} : BaseChart_assign({
|
|
4991
5055
|
enabled: true
|
|
4992
|
-
},
|
|
4993
|
-
};
|
|
4994
|
-
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
|
|
4998
|
-
|
|
4999
|
-
|
|
5000
|
-
|
|
5001
|
-
|
|
5002
|
-
|
|
5003
|
-
|
|
5004
|
-
|
|
5005
|
-
|
|
5006
|
-
|
|
5007
|
-
|
|
5008
|
-
|
|
5009
|
-
|
|
5010
|
-
|
|
5011
|
-
|
|
5012
|
-
|
|
5013
|
-
|
|
5014
|
-
|
|
5015
|
-
|
|
5016
|
-
|
|
5017
|
-
});
|
|
5018
|
-
// 触发导出回调
|
|
5019
|
-
if (onExport && dataURL) {
|
|
5020
|
-
onExport(dataURL, options);
|
|
5021
|
-
}
|
|
5022
|
-
return dataURL;
|
|
5023
|
-
};
|
|
5024
|
-
/**
|
|
5025
|
-
* 导出图表并下载
|
|
5026
|
-
* @param options 导出选项
|
|
5027
|
-
*/
|
|
5028
|
-
var exportChart = function (options) {
|
|
5029
|
-
if (options === void 0) {
|
|
5030
|
-
options = {};
|
|
5031
|
-
}
|
|
5032
|
-
var dataURL = exportChartToDataURL(options);
|
|
5033
|
-
if (!dataURL) {
|
|
5034
|
-
console.error('Failed to export chart');
|
|
5035
|
-
return;
|
|
5036
|
-
}
|
|
5037
|
-
var _a = options.type,
|
|
5038
|
-
type = _a === void 0 ? 'png' : _a,
|
|
5039
|
-
_b = options.filename,
|
|
5040
|
-
filename = _b === void 0 ? "chart-".concat(Date.now()) : _b;
|
|
5041
|
-
var fullFilename = "".concat(filename, ".").concat(type);
|
|
5042
|
-
// 创建下载链接
|
|
5043
|
-
var link = document.createElement('a');
|
|
5044
|
-
link.download = fullFilename;
|
|
5045
|
-
link.href = dataURL;
|
|
5046
|
-
link.click();
|
|
5047
|
-
};
|
|
5048
|
-
/**
|
|
5049
|
-
* 组件实例引用,用于暴露公共方法
|
|
5050
|
-
*/
|
|
5051
|
-
var chartInstanceRef = (0,external_react_.useRef)({
|
|
5052
|
-
exportChartToDataURL: exportChartToDataURL,
|
|
5053
|
-
exportChart: exportChart
|
|
5054
|
-
});
|
|
5055
|
-
// 暴露组件实例方法
|
|
5056
|
-
external_react_default().useImperativeHandle(props, function () {
|
|
5057
|
-
return chartInstanceRef.current;
|
|
5058
|
-
});
|
|
5059
|
-
/**
|
|
5060
|
-
* 记录性能数据
|
|
5061
|
-
* @param type 性能数据类型
|
|
5062
|
-
* @param data 性能数据
|
|
5063
|
-
*/
|
|
5064
|
-
var recordPerformance = function (type, _data) {
|
|
5065
|
-
var now = Date.now();
|
|
5066
|
-
switch (type) {
|
|
5067
|
-
case 'init':
|
|
5068
|
-
if (!performanceRef.current.initStartTime) {
|
|
5069
|
-
performanceRef.current.initStartTime = now;
|
|
5070
|
-
} else {
|
|
5071
|
-
performanceRef.current.initEndTime = now;
|
|
5072
|
-
var initTime = performanceRef.current.initEndTime - performanceRef.current.initStartTime;
|
|
5073
|
-
// 计算数据大小
|
|
5074
|
-
var dataSize = JSON.stringify(option).length;
|
|
5075
|
-
// 使用性能分析器记录数据
|
|
5076
|
-
if (performanceAnalyzerRef.current) {
|
|
5077
|
-
performanceAnalyzerRef.current.recordInitTime(initTime);
|
|
5078
|
-
performanceAnalyzerRef.current.recordDataSize(option);
|
|
5079
|
-
}
|
|
5080
|
-
// 触发性能回调
|
|
5081
|
-
if (onPerformance) {
|
|
5082
|
-
onPerformance({
|
|
5083
|
-
renderTime: 0,
|
|
5084
|
-
initTime: initTime,
|
|
5085
|
-
updateTime: 0,
|
|
5086
|
-
dataSize: dataSize
|
|
5087
|
-
});
|
|
5088
|
-
}
|
|
5089
|
-
}
|
|
5090
|
-
break;
|
|
5091
|
-
case 'render':
|
|
5092
|
-
if (!performanceRef.current.renderStartTime) {
|
|
5093
|
-
performanceRef.current.renderStartTime = now;
|
|
5094
|
-
} else {
|
|
5095
|
-
performanceRef.current.renderEndTime = now;
|
|
5096
|
-
var renderTime = performanceRef.current.renderEndTime - performanceRef.current.renderStartTime;
|
|
5097
|
-
// 计算数据大小
|
|
5098
|
-
var dataSize = JSON.stringify(option).length;
|
|
5099
|
-
// 使用性能分析器记录数据
|
|
5100
|
-
if (performanceAnalyzerRef.current) {
|
|
5101
|
-
performanceAnalyzerRef.current.recordRenderTime(renderTime);
|
|
5102
|
-
}
|
|
5103
|
-
// 触发性能回调
|
|
5104
|
-
if (onPerformance) {
|
|
5105
|
-
onPerformance({
|
|
5106
|
-
renderTime: renderTime,
|
|
5107
|
-
initTime: performanceRef.current.initEndTime - performanceRef.current.initStartTime,
|
|
5108
|
-
updateTime: 0,
|
|
5109
|
-
dataSize: dataSize
|
|
5110
|
-
});
|
|
5111
|
-
}
|
|
5112
|
-
}
|
|
5113
|
-
break;
|
|
5114
|
-
case 'update':
|
|
5115
|
-
if (!performanceRef.current.updateStartTime) {
|
|
5116
|
-
performanceRef.current.updateStartTime = now;
|
|
5117
|
-
} else {
|
|
5118
|
-
performanceRef.current.updateEndTime = now;
|
|
5119
|
-
var updateTime = performanceRef.current.updateEndTime - performanceRef.current.updateStartTime;
|
|
5120
|
-
// 计算数据大小
|
|
5121
|
-
var dataSize = JSON.stringify(option).length;
|
|
5122
|
-
// 使用性能分析器记录数据
|
|
5123
|
-
if (performanceAnalyzerRef.current) {
|
|
5124
|
-
performanceAnalyzerRef.current.recordUpdateTime(updateTime);
|
|
5125
|
-
performanceAnalyzerRef.current.recordDataSize(option);
|
|
5126
|
-
}
|
|
5127
|
-
// 触发性能回调
|
|
5128
|
-
if (onPerformance) {
|
|
5129
|
-
onPerformance({
|
|
5130
|
-
renderTime: 0,
|
|
5131
|
-
initTime: 0,
|
|
5132
|
-
updateTime: updateTime,
|
|
5133
|
-
dataSize: dataSize
|
|
5056
|
+
}, debug);
|
|
5057
|
+
}, [debug]);
|
|
5058
|
+
// Wrapper option that applies virtual scroll + data filtering
|
|
5059
|
+
var wrappedOption = (0,external_react_.useMemo)(function () {
|
|
5060
|
+
if (!option) return undefined;
|
|
5061
|
+
var processed = BaseChart_assign({}, option);
|
|
5062
|
+
// Apply data filtering
|
|
5063
|
+
if (enableDataFiltering && filters && Object.keys(filters).length > 0) {
|
|
5064
|
+
processed = JSON.parse(JSON.stringify(processed));
|
|
5065
|
+
if (processed.series && Array.isArray(processed.series)) {
|
|
5066
|
+
processed.series = processed.series.map(function (s) {
|
|
5067
|
+
if (s.data && Array.isArray(s.data)) {
|
|
5068
|
+
var filtered = filterDataByKeys(s.data, filters);
|
|
5069
|
+
if (onDataFiltered) onDataFiltered(filtered, filters);
|
|
5070
|
+
if (virtualScroll) {
|
|
5071
|
+
virtualScrollRef.current.totalDataCount = filtered.length;
|
|
5072
|
+
virtualScrollRef.current.totalPages = Math.ceil(filtered.length / virtualScrollPageSize);
|
|
5073
|
+
var start = virtualScrollRef.current.currentPage * virtualScrollPageSize;
|
|
5074
|
+
var end = Math.min(start + virtualScrollPageSize + virtualScrollPreloadSize, filtered.length);
|
|
5075
|
+
return BaseChart_assign(BaseChart_assign({}, s), {
|
|
5076
|
+
data: filtered.slice(start, end)
|
|
5077
|
+
});
|
|
5078
|
+
}
|
|
5079
|
+
return BaseChart_assign(BaseChart_assign({}, s), {
|
|
5080
|
+
data: filtered
|
|
5134
5081
|
});
|
|
5135
5082
|
}
|
|
5136
|
-
|
|
5137
|
-
|
|
5138
|
-
}
|
|
5139
|
-
};
|
|
5140
|
-
/**
|
|
5141
|
-
* 筛选数据
|
|
5142
|
-
* @param data 原始数据
|
|
5143
|
-
* @param filters 筛选条件
|
|
5144
|
-
* @returns 筛选后的数据
|
|
5145
|
-
*/
|
|
5146
|
-
var filterData = function (data, filters) {
|
|
5147
|
-
if (!enableDataFiltering || !filters || Object.keys(filters).length === 0) {
|
|
5148
|
-
return data;
|
|
5149
|
-
}
|
|
5150
|
-
return data.filter(function (item) {
|
|
5151
|
-
var _a, _b;
|
|
5152
|
-
// 遍历所有筛选条件
|
|
5153
|
-
for (var _i = 0, _c = Object.entries(filters); _i < _c.length; _i++) {
|
|
5154
|
-
var _d = _c[_i],
|
|
5155
|
-
key = _d[0],
|
|
5156
|
-
value = _d[1];
|
|
5157
|
-
// 检查数据项是否满足筛选条件
|
|
5158
|
-
if (item[key] !== value && !((_b = (_a = item[key]) === null || _a === void 0 ? void 0 : _a.includes) === null || _b === void 0 ? void 0 : _b.call(_a, value))) {
|
|
5159
|
-
return false;
|
|
5160
|
-
}
|
|
5083
|
+
return s;
|
|
5084
|
+
});
|
|
5161
5085
|
}
|
|
5162
|
-
|
|
5163
|
-
|
|
5164
|
-
|
|
5165
|
-
|
|
5166
|
-
|
|
5167
|
-
|
|
5168
|
-
|
|
5169
|
-
|
|
5170
|
-
|
|
5171
|
-
|
|
5172
|
-
|
|
5173
|
-
|
|
5174
|
-
|
|
5175
|
-
|
|
5176
|
-
|
|
5177
|
-
|
|
5178
|
-
|
|
5179
|
-
|
|
5180
|
-
|
|
5181
|
-
|
|
5086
|
+
}
|
|
5087
|
+
// Apply animation config
|
|
5088
|
+
var dataLength = calculateDataLength(processed);
|
|
5089
|
+
var animConfig = (0,core_animation/* generateEChartsAnimationConfig */.ek)(animation, dataLength);
|
|
5090
|
+
return BaseChart_assign(BaseChart_assign({}, processed), animConfig);
|
|
5091
|
+
}, [option, animation, enableDataFiltering, filters, virtualScroll, virtualScrollPageSize, virtualScrollPreloadSize, onDataFiltered]);
|
|
5092
|
+
// Internal chartInit that wraps the user's callback
|
|
5093
|
+
var handleChartInit = (0,external_react_.useCallback)(function (instance) {
|
|
5094
|
+
var _a;
|
|
5095
|
+
chartInstanceRef.current = instance;
|
|
5096
|
+
adapterRef.current = instance;
|
|
5097
|
+
// Performance monitoring init
|
|
5098
|
+
if (enablePerformanceMonitoring) {
|
|
5099
|
+
performanceAnalyzerRef.current = PerformanceAnalyzer.getInstance({
|
|
5100
|
+
enabled: true,
|
|
5101
|
+
metrics: ['initTime', 'renderTime', 'updateTime', 'dataSize', 'frameRate'],
|
|
5102
|
+
sampleInterval: 1000,
|
|
5103
|
+
maxSamples: 100,
|
|
5104
|
+
realTime: true,
|
|
5105
|
+
autoStart: true
|
|
5182
5106
|
});
|
|
5183
5107
|
}
|
|
5184
|
-
|
|
5185
|
-
|
|
5186
|
-
|
|
5187
|
-
|
|
5188
|
-
|
|
5189
|
-
|
|
5190
|
-
|
|
5191
|
-
|
|
5192
|
-
|
|
5193
|
-
|
|
5194
|
-
|
|
5195
|
-
|
|
5196
|
-
|
|
5197
|
-
// 处理series数据
|
|
5198
|
-
if (processedOption.series && Array.isArray(processedOption.series)) {
|
|
5199
|
-
// 使用类型断言解决类型不匹配问题
|
|
5200
|
-
processedOption.series = processedOption.series.map(function (series) {
|
|
5201
|
-
if (series.data && Array.isArray(series.data)) {
|
|
5202
|
-
var data = series.data;
|
|
5203
|
-
// 应用数据筛选
|
|
5204
|
-
var filteredData = filterData(data, filters);
|
|
5205
|
-
// 触发数据筛选回调
|
|
5206
|
-
if (onDataFiltered) {
|
|
5207
|
-
onDataFiltered(filteredData, filters);
|
|
5208
|
-
}
|
|
5209
|
-
// 应用虚拟滚动
|
|
5210
|
-
if (virtualScroll) {
|
|
5211
|
-
virtualScrollRef.current.totalDataCount = filteredData.length;
|
|
5212
|
-
virtualScrollRef.current.totalPages = Math.ceil(filteredData.length / virtualScrollPageSize);
|
|
5213
|
-
// 计算当前页的起始和结束索引
|
|
5214
|
-
var startIndex = virtualScrollRef.current.currentPage * virtualScrollPageSize;
|
|
5215
|
-
var endIndex = Math.min(startIndex + virtualScrollPageSize + virtualScrollPreloadSize, filteredData.length);
|
|
5216
|
-
virtualScrollRef.current.startIndex = startIndex;
|
|
5217
|
-
virtualScrollRef.current.endIndex = endIndex;
|
|
5218
|
-
// 返回只包含当前页数据的series
|
|
5219
|
-
return BaseChart_assign(BaseChart_assign({}, series), {
|
|
5220
|
-
data: filteredData.slice(startIndex, endIndex)
|
|
5108
|
+
performanceRef.current.initStartTime = Date.now();
|
|
5109
|
+
// Register for linkage
|
|
5110
|
+
if (chartId) registerChart(chartId, instance);
|
|
5111
|
+
// Setup internal event handlers for linkage + virtual scroll
|
|
5112
|
+
if (instance) {
|
|
5113
|
+
// Click linkage
|
|
5114
|
+
if (linkageConfig.enableClickLinkage && chartId && linkageConfig.linkedChartIds) {
|
|
5115
|
+
instance.on('click', function (params) {
|
|
5116
|
+
linkageConfig.linkedChartIds.forEach(function (lid) {
|
|
5117
|
+
var linked = getChart(lid);
|
|
5118
|
+
if (linked) linked.dispatchAction({
|
|
5119
|
+
type: 'highlight',
|
|
5120
|
+
name: params.name
|
|
5221
5121
|
});
|
|
5222
|
-
}
|
|
5223
|
-
// 只应用数据筛选,不应用虚拟滚动
|
|
5224
|
-
return BaseChart_assign(BaseChart_assign({}, series), {
|
|
5225
|
-
data: filteredData
|
|
5226
5122
|
});
|
|
5227
|
-
}
|
|
5228
|
-
return series;
|
|
5229
|
-
});
|
|
5230
|
-
}
|
|
5231
|
-
// 生成动画配置
|
|
5232
|
-
var dataLength = calculateDataLength(processedOption);
|
|
5233
|
-
var animationOption = (0,animation/* generateEChartsAnimationConfig */.ek)(props.animation, dataLength);
|
|
5234
|
-
// 合并动画配置到图表选项
|
|
5235
|
-
return BaseChart_assign(BaseChart_assign({}, processedOption), animationOption);
|
|
5236
|
-
};
|
|
5237
|
-
/**
|
|
5238
|
-
* 初始化图表的 useEffect
|
|
5239
|
-
*
|
|
5240
|
-
* @description 当图表容器 ref 变化时,初始化图表适配器和图表实例
|
|
5241
|
-
* 负责图表的创建、事件绑定和清理工作
|
|
5242
|
-
*/
|
|
5243
|
-
(0,external_react_.useEffect)(function () {
|
|
5244
|
-
if (chartRef.current) {
|
|
5245
|
-
// 处理调试配置
|
|
5246
|
-
var debugConfig_1 = processDebugConfig();
|
|
5247
|
-
debugConfigRef.current = debugConfig_1;
|
|
5248
|
-
// 初始化性能分析器
|
|
5249
|
-
if (enablePerformanceMonitoring) {
|
|
5250
|
-
performanceAnalyzerRef.current = PerformanceAnalyzer.getInstance({
|
|
5251
|
-
enabled: true,
|
|
5252
|
-
metrics: ['initTime', 'renderTime', 'updateTime', 'dataSize', 'frameRate'],
|
|
5253
|
-
sampleInterval: 1000,
|
|
5254
|
-
maxSamples: 100,
|
|
5255
|
-
realTime: true,
|
|
5256
|
-
autoStart: true
|
|
5257
|
-
});
|
|
5258
|
-
}
|
|
5259
|
-
// 开始记录初始化时间
|
|
5260
|
-
recordPerformance('init');
|
|
5261
|
-
// 处理虚拟滚动
|
|
5262
|
-
var processedOption = processVirtualScroll(option);
|
|
5263
|
-
// 获取适配器实例
|
|
5264
|
-
var chartAdapter_1 = (0,adapters/* getAdapter */.cK)({
|
|
5265
|
-
width: width,
|
|
5266
|
-
height: height,
|
|
5267
|
-
theme: theme,
|
|
5268
|
-
option: processedOption,
|
|
5269
|
-
onInit: onInit,
|
|
5270
|
-
containerRef: chartRef,
|
|
5271
|
-
direction: direction
|
|
5272
|
-
});
|
|
5273
|
-
// 设置组件实例(针对小程序环境)
|
|
5274
|
-
if (typeof chartAdapter_1.setComponent === 'function') {
|
|
5275
|
-
chartAdapter_1.setComponent({
|
|
5276
|
-
createChart: function (_config) {
|
|
5277
|
-
// 这里应该根据具体平台实现创建图表的逻辑
|
|
5278
|
-
return {};
|
|
5279
|
-
}
|
|
5280
|
-
});
|
|
5281
|
-
}
|
|
5282
|
-
// 开始记录渲染时间
|
|
5283
|
-
recordPerformance('render');
|
|
5284
|
-
// 初始化图表
|
|
5285
|
-
var instance_1 = chartAdapter_1.init();
|
|
5286
|
-
// 结束记录渲染时间
|
|
5287
|
-
recordPerformance('render');
|
|
5288
|
-
// 注册图表实例
|
|
5289
|
-
if (chartId && instance_1) {
|
|
5290
|
-
registerChart(chartId, instance_1);
|
|
5291
|
-
}
|
|
5292
|
-
// 更新调试信息
|
|
5293
|
-
if (debugConfig_1 === null || debugConfig_1 === void 0 ? void 0 : debugConfig_1.enabled) {
|
|
5294
|
-
// 更新实例信息
|
|
5295
|
-
updateDebugInfo({
|
|
5296
|
-
instance: {
|
|
5297
|
-
id: chartId,
|
|
5298
|
-
type: 'ECharts',
|
|
5299
|
-
renderer: 'canvas',
|
|
5300
|
-
// 简化处理,使用默认值
|
|
5301
|
-
width: typeof width === 'number' ? width : undefined,
|
|
5302
|
-
height: typeof height === 'number' ? height : undefined,
|
|
5303
|
-
platform: 'web' // 简化处理,使用默认值
|
|
5304
|
-
},
|
|
5305
|
-
config: processedOption,
|
|
5306
|
-
data: {
|
|
5307
|
-
series: Array.isArray(processedOption.series) ? processedOption.series : [],
|
|
5308
|
-
totalDataCount: calculateDataLength(processedOption),
|
|
5309
|
-
currentDataCount: calculateDataLength(processedOption)
|
|
5310
|
-
},
|
|
5311
|
-
performance: {
|
|
5312
|
-
initTime: performanceRef.current.initEndTime - performanceRef.current.initStartTime,
|
|
5313
|
-
renderTime: performanceRef.current.renderEndTime - performanceRef.current.renderStartTime,
|
|
5314
|
-
dataSize: JSON.stringify(processedOption).length
|
|
5315
|
-
}
|
|
5316
5123
|
});
|
|
5317
5124
|
}
|
|
5318
|
-
//
|
|
5319
|
-
|
|
5320
|
-
|
|
5321
|
-
|
|
5322
|
-
|
|
5323
|
-
|
|
5324
|
-
linkageConfig.linkedChartIds.forEach(function (linkedChartId) {
|
|
5325
|
-
var linkedChart = getChart(linkedChartId);
|
|
5326
|
-
if (linkedChart) {
|
|
5327
|
-
// 这里可以根据需要实现点击联动逻辑
|
|
5328
|
-
// 例如:高亮联动图表中对应的系列或数据点
|
|
5329
|
-
linkedChart.dispatchAction({
|
|
5330
|
-
type: 'highlight',
|
|
5331
|
-
name: params.name
|
|
5332
|
-
});
|
|
5333
|
-
}
|
|
5334
|
-
});
|
|
5335
|
-
}
|
|
5125
|
+
// Zoom + zoom linkage + virtual scroll page update
|
|
5126
|
+
instance.on('datazoom', function (params) {
|
|
5127
|
+
if (onZoom) onZoom({
|
|
5128
|
+
start: params.start || 0,
|
|
5129
|
+
end: params.end || 100,
|
|
5130
|
+
dataZoomIndex: params.dataZoomIndex || 0
|
|
5336
5131
|
});
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
|
|
5340
|
-
|
|
5341
|
-
|
|
5342
|
-
|
|
5343
|
-
onDataZoom(params);
|
|
5344
|
-
}
|
|
5345
|
-
// 触发缩放事件
|
|
5346
|
-
if (onZoom) {
|
|
5347
|
-
onZoom({
|
|
5348
|
-
start: params.start || 0,
|
|
5349
|
-
end: params.end || 100,
|
|
5350
|
-
dataZoomIndex: params.dataZoomIndex || 0
|
|
5351
|
-
});
|
|
5132
|
+
if (virtualScroll && !virtualScrollRef.current.isScrolling) {
|
|
5133
|
+
virtualScrollRef.current.isScrolling = true;
|
|
5134
|
+
var newPage = Math.floor((params.start || 0) / 100 * virtualScrollRef.current.totalPages);
|
|
5135
|
+
if (newPage !== virtualScrollRef.current.currentPage) {
|
|
5136
|
+
virtualScrollRef.current.currentPage = newPage;
|
|
5137
|
+
// Trigger re-render via option update
|
|
5352
5138
|
}
|
|
5353
|
-
|
|
5354
|
-
|
|
5355
|
-
|
|
5356
|
-
|
|
5357
|
-
|
|
5358
|
-
|
|
5359
|
-
|
|
5360
|
-
|
|
5361
|
-
|
|
5362
|
-
|
|
5363
|
-
|
|
5364
|
-
|
|
5139
|
+
setTimeout(function () {
|
|
5140
|
+
virtualScrollRef.current.isScrolling = false;
|
|
5141
|
+
}, 100);
|
|
5142
|
+
}
|
|
5143
|
+
if (linkageConfig.enableZoomLinkage && chartId && linkageConfig.linkedChartIds) {
|
|
5144
|
+
linkageConfig.linkedChartIds.forEach(function (lid) {
|
|
5145
|
+
var linked = getChart(lid);
|
|
5146
|
+
if (linked) linked.dispatchAction({
|
|
5147
|
+
type: 'dataZoom',
|
|
5148
|
+
start: params.start,
|
|
5149
|
+
end: params.end,
|
|
5150
|
+
dataZoomIndex: params.dataZoomIndex
|
|
5365
5151
|
});
|
|
5366
|
-
}
|
|
5367
|
-
|
|
5368
|
-
|
|
5369
|
-
|
|
5370
|
-
|
|
5371
|
-
|
|
5372
|
-
virtualScrollRef.current.isScrolling = true;
|
|
5373
|
-
// 根据滚动位置计算当前页码
|
|
5374
|
-
var scrollPercent = params.start || 0;
|
|
5375
|
-
var newPage = Math.floor(scrollPercent / 100 * virtualScrollRef.current.totalPages);
|
|
5376
|
-
if (newPage !== virtualScrollRef.current.currentPage) {
|
|
5377
|
-
virtualScrollRef.current.currentPage = newPage;
|
|
5378
|
-
// 更新图表数据
|
|
5379
|
-
var updatedOption = processVirtualScroll(option);
|
|
5380
|
-
chartAdapter_1.setOption(updatedOption);
|
|
5381
|
-
}
|
|
5382
|
-
// 延迟重置滚动状态,避免频繁触发
|
|
5383
|
-
setTimeout(function () {
|
|
5384
|
-
virtualScrollRef.current.isScrolling = false;
|
|
5385
|
-
}, 100);
|
|
5386
|
-
}
|
|
5387
|
-
});
|
|
5388
|
-
}
|
|
5389
|
-
// 启用图表缩放功能
|
|
5390
|
-
if (instance_1 && enableZoom) {
|
|
5391
|
-
// 这里可以根据需要添加更多缩放相关的配置
|
|
5392
|
-
// 例如:instance.setOption({ dataZoom: [{ type: 'inside', start: 0, end: 100 }] });
|
|
5393
|
-
}
|
|
5394
|
-
// 增强图例交互功能
|
|
5395
|
-
if (instance_1 && enableLegendInteraction) {
|
|
5396
|
-
// 图例选择事件
|
|
5397
|
-
instance_1.on('legendselectchanged', function (params) {
|
|
5152
|
+
});
|
|
5153
|
+
}
|
|
5154
|
+
});
|
|
5155
|
+
// Legend interaction
|
|
5156
|
+
if (enableLegendInteraction) {
|
|
5157
|
+
instance.on('legendselectchanged', function (params) {
|
|
5398
5158
|
var name = params.name,
|
|
5399
5159
|
selected = params.selected;
|
|
5400
|
-
// 图例联动
|
|
5401
5160
|
if (linkageConfig.enableLegendLinkage && chartId && linkageConfig.linkedChartIds) {
|
|
5402
|
-
linkageConfig.linkedChartIds.forEach(function (
|
|
5403
|
-
var
|
|
5404
|
-
if (
|
|
5405
|
-
|
|
5406
|
-
|
|
5407
|
-
|
|
5408
|
-
|
|
5409
|
-
});
|
|
5410
|
-
}
|
|
5161
|
+
linkageConfig.linkedChartIds.forEach(function (lid) {
|
|
5162
|
+
var linked = getChart(lid);
|
|
5163
|
+
if (linked) linked.setOption({
|
|
5164
|
+
legend: {
|
|
5165
|
+
selected: selected
|
|
5166
|
+
}
|
|
5167
|
+
});
|
|
5411
5168
|
});
|
|
5412
5169
|
}
|
|
5413
|
-
// 根据交互模式处理图例选择
|
|
5414
5170
|
if (legendInteractionMode === 'single') {
|
|
5415
|
-
// 单选模式:只显示当前选中项
|
|
5416
5171
|
var newSelected_1 = {};
|
|
5417
|
-
Object.keys(selected).forEach(function (
|
|
5418
|
-
newSelected_1[
|
|
5172
|
+
Object.keys(selected).forEach(function (k) {
|
|
5173
|
+
newSelected_1[k] = k === name;
|
|
5419
5174
|
});
|
|
5420
|
-
|
|
5175
|
+
instance.setOption({
|
|
5421
5176
|
legend: {
|
|
5422
5177
|
selected: newSelected_1
|
|
5423
5178
|
}
|
|
5424
5179
|
});
|
|
5425
|
-
|
|
5426
|
-
|
|
5427
|
-
|
|
5428
|
-
|
|
5429
|
-
selected: newSelected_1
|
|
5430
|
-
});
|
|
5431
|
-
}
|
|
5180
|
+
onLegendSelect === null || onLegendSelect === void 0 ? void 0 : onLegendSelect({
|
|
5181
|
+
name: name,
|
|
5182
|
+
selected: newSelected_1
|
|
5183
|
+
});
|
|
5432
5184
|
} else {
|
|
5433
|
-
|
|
5434
|
-
|
|
5435
|
-
|
|
5436
|
-
|
|
5437
|
-
|
|
5438
|
-
|
|
5439
|
-
|
|
5440
|
-
});
|
|
5441
|
-
}
|
|
5442
|
-
} else {
|
|
5443
|
-
// 取消选择图例项
|
|
5444
|
-
if (onLegendUnselect) {
|
|
5445
|
-
onLegendUnselect({
|
|
5446
|
-
name: name,
|
|
5447
|
-
selected: selected
|
|
5448
|
-
});
|
|
5449
|
-
}
|
|
5450
|
-
}
|
|
5451
|
-
}
|
|
5452
|
-
});
|
|
5453
|
-
// 图例全选功能
|
|
5454
|
-
if (legendInteractionMode === 'all') {
|
|
5455
|
-
// 这里可以添加全选/反选的逻辑
|
|
5456
|
-
// 例如:监听特定事件或添加自定义按钮
|
|
5457
|
-
}
|
|
5458
|
-
}
|
|
5459
|
-
// 自定义提示框功能
|
|
5460
|
-
if (instance_1 && enableCustomTooltip) {
|
|
5461
|
-
// 提示框显示事件
|
|
5462
|
-
instance_1.on('tooltipshow', function (params) {
|
|
5463
|
-
// 触发提示框显示回调
|
|
5464
|
-
if (onTooltipShow) {
|
|
5465
|
-
onTooltipShow(params);
|
|
5466
|
-
}
|
|
5467
|
-
});
|
|
5468
|
-
// 提示框隐藏事件
|
|
5469
|
-
instance_1.on('tooltiphide', function (params) {
|
|
5470
|
-
// 触发提示框隐藏回调
|
|
5471
|
-
if (onTooltipHide) {
|
|
5472
|
-
onTooltipHide(params);
|
|
5185
|
+
if (selected[name]) onLegendSelect === null || onLegendSelect === void 0 ? void 0 : onLegendSelect({
|
|
5186
|
+
name: name,
|
|
5187
|
+
selected: selected
|
|
5188
|
+
});else onLegendUnselect === null || onLegendUnselect === void 0 ? void 0 : onLegendUnselect({
|
|
5189
|
+
name: name,
|
|
5190
|
+
selected: selected
|
|
5191
|
+
});
|
|
5473
5192
|
}
|
|
5474
5193
|
});
|
|
5475
|
-
|
|
5476
|
-
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
|
|
5485
|
-
|
|
5486
|
-
|
|
5487
|
-
|
|
5488
|
-
|
|
5489
|
-
|
|
5490
|
-
|
|
5491
|
-
|
|
5492
|
-
|
|
5493
|
-
|
|
5494
|
-
|
|
5495
|
-
|
|
5496
|
-
|
|
5497
|
-
|
|
5498
|
-
|
|
5499
|
-
|
|
5500
|
-
// 移除图表实例
|
|
5501
|
-
if (chartId) {
|
|
5502
|
-
removeChart(chartId);
|
|
5503
|
-
}
|
|
5504
|
-
// 停止性能监控
|
|
5505
|
-
if (performanceAnalyzerRef.current) {
|
|
5506
|
-
performanceAnalyzerRef.current.stop();
|
|
5507
|
-
performanceAnalyzerRef.current = null;
|
|
5508
|
-
}
|
|
5509
|
-
if (chartAdapter_1) {
|
|
5510
|
-
chartAdapter_1.dispose();
|
|
5511
|
-
}
|
|
5512
|
-
};
|
|
5513
|
-
}
|
|
5514
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
5515
|
-
}, [chartRef, width, height, theme, option, onInit, onClick, onDataZoom, chartId, linkageConfig]);
|
|
5516
|
-
/**
|
|
5517
|
-
* 更新图表尺寸的 useEffect
|
|
5518
|
-
*
|
|
5519
|
-
* @description 当图表宽度或高度变化时,调整图表大小
|
|
5520
|
-
*/
|
|
5521
|
-
(0,external_react_.useEffect)(function () {
|
|
5522
|
-
if (adapterRef.current) {
|
|
5523
|
-
adapterRef.current.resize();
|
|
5524
|
-
}
|
|
5525
|
-
}, [width, height]);
|
|
5526
|
-
/**
|
|
5527
|
-
* 比较两个配置是否相同
|
|
5528
|
-
* @param oldOption 旧的配置
|
|
5529
|
-
* @param newOption 新的配置
|
|
5530
|
-
* @returns 是否相同
|
|
5531
|
-
*/
|
|
5532
|
-
var isOptionEqual = function (oldOption, newOption) {
|
|
5533
|
-
if (oldOption === newOption) {
|
|
5534
|
-
return true;
|
|
5535
|
-
}
|
|
5536
|
-
if (!oldOption || !newOption) {
|
|
5537
|
-
return false;
|
|
5538
|
-
}
|
|
5539
|
-
if (dataUpdateOptions.deepCompare) {
|
|
5540
|
-
// 深度比较
|
|
5541
|
-
return JSON.stringify(oldOption) === JSON.stringify(newOption);
|
|
5542
|
-
} else {
|
|
5543
|
-
// 浅比较,只比较引用
|
|
5544
|
-
return oldOption === newOption;
|
|
5545
|
-
}
|
|
5546
|
-
};
|
|
5547
|
-
/**
|
|
5548
|
-
* 更新图表配置的 useEffect
|
|
5549
|
-
*
|
|
5550
|
-
* @description 当图表配置项变化时,更新图表
|
|
5551
|
-
*/
|
|
5552
|
-
(0,external_react_.useEffect)(function () {
|
|
5553
|
-
if (adapterRef.current && option) {
|
|
5554
|
-
// 开始记录更新时间
|
|
5555
|
-
recordPerformance('update');
|
|
5556
|
-
// 处理虚拟滚动
|
|
5557
|
-
var processedOption = processVirtualScroll(option);
|
|
5558
|
-
adapterRef.current.setOption(processedOption);
|
|
5559
|
-
// 结束记录更新时间
|
|
5560
|
-
recordPerformance('update');
|
|
5561
|
-
}
|
|
5562
|
-
// 数据更新监听
|
|
5563
|
-
if (onDataUpdate && dataUpdateOptions.enabled !== false) {
|
|
5564
|
-
var oldOption = oldOptionRef.current;
|
|
5565
|
-
if (!isOptionEqual(oldOption, option)) {
|
|
5566
|
-
onDataUpdate(oldOption, option);
|
|
5567
|
-
// 更新旧的配置引用
|
|
5568
|
-
oldOptionRef.current = option;
|
|
5569
|
-
}
|
|
5570
|
-
}
|
|
5571
|
-
}, [option, onDataUpdate, dataUpdateOptions]);
|
|
5572
|
-
/**
|
|
5573
|
-
* 更新图表主题的 useEffect
|
|
5574
|
-
*
|
|
5575
|
-
* @description 当图表主题变化时,更新图表主题
|
|
5576
|
-
*/
|
|
5577
|
-
(0,external_react_.useEffect)(function () {
|
|
5578
|
-
if (adapterRef.current && theme) {
|
|
5579
|
-
adapterRef.current.setTheme(theme);
|
|
5580
|
-
}
|
|
5581
|
-
}, [theme]);
|
|
5582
|
-
/**
|
|
5583
|
-
* 处理窗口大小变化的 useEffect
|
|
5584
|
-
*
|
|
5585
|
-
* @description 当窗口大小变化时,如果开启了自动调整大小,则调整图表大小
|
|
5586
|
-
*/
|
|
5587
|
-
(0,external_react_.useEffect)(function () {
|
|
5588
|
-
if (!autoResize || !adapterRef.current) {
|
|
5589
|
-
return;
|
|
5590
|
-
}
|
|
5591
|
-
var handleResize = function () {
|
|
5592
|
-
adapterRef.current.resize();
|
|
5593
|
-
};
|
|
5594
|
-
window.addEventListener('resize', handleResize);
|
|
5595
|
-
return function () {
|
|
5596
|
-
window.removeEventListener('resize', handleResize);
|
|
5597
|
-
};
|
|
5598
|
-
}, [autoResize]);
|
|
5599
|
-
/**
|
|
5600
|
-
* 合并后的样式对象
|
|
5601
|
-
*
|
|
5602
|
-
* @description 合并用户传入的样式和组件默认样式
|
|
5603
|
-
*/
|
|
5604
|
-
var mergedStyle = BaseChart_assign({
|
|
5605
|
-
width: typeof width === 'number' ? "".concat(width, "px") : width,
|
|
5606
|
-
height: typeof height === 'number' ? "".concat(height, "px") : height,
|
|
5607
|
-
direction: direction
|
|
5608
|
-
}, style);
|
|
5609
|
-
/**
|
|
5610
|
-
* 组件渲染函数
|
|
5611
|
-
*
|
|
5612
|
-
* @returns {JSX.Element} - 返回渲染后的 JSX 元素
|
|
5613
|
-
* @description 渲染图表容器,并将 chartRef 绑定到容器上
|
|
5614
|
-
*/
|
|
5615
|
-
var debugConfig = processDebugConfig();
|
|
5616
|
-
// 渲染图表容器
|
|
5617
|
-
var chartContainer = /*#__PURE__*/external_react_default().createElement('div', {
|
|
5618
|
-
ref: chartRef,
|
|
5619
|
-
style: mergedStyle,
|
|
5620
|
-
className: className
|
|
5621
|
-
}, children);
|
|
5622
|
-
// 如果启用了调试面板,渲染调试面板
|
|
5623
|
-
if (debugConfig === null || debugConfig === void 0 ? void 0 : debugConfig.enabled) {
|
|
5624
|
-
return /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, chartContainer, /*#__PURE__*/external_react_default().createElement(DebugPanel, {
|
|
5625
|
-
options: debugConfig,
|
|
5626
|
-
debugInfo: {
|
|
5194
|
+
}
|
|
5195
|
+
// Custom tooltip
|
|
5196
|
+
if (enableCustomTooltip && customTooltipContent) {
|
|
5197
|
+
instance.on('tooltipshow', function (params) {
|
|
5198
|
+
return onTooltipShow === null || onTooltipShow === void 0 ? void 0 : onTooltipShow(params);
|
|
5199
|
+
});
|
|
5200
|
+
instance.on('tooltiphide', function (params) {
|
|
5201
|
+
return onTooltipHide === null || onTooltipHide === void 0 ? void 0 : onTooltipHide(params);
|
|
5202
|
+
});
|
|
5203
|
+
instance.setOption({
|
|
5204
|
+
tooltip: BaseChart_assign({
|
|
5205
|
+
formatter: function (params) {
|
|
5206
|
+
return String(customTooltipContent(params));
|
|
5207
|
+
}
|
|
5208
|
+
}, customTooltipStyle && {
|
|
5209
|
+
backgroundColor: 'transparent',
|
|
5210
|
+
borderColor: 'transparent',
|
|
5211
|
+
textStyle: {}
|
|
5212
|
+
})
|
|
5213
|
+
});
|
|
5214
|
+
}
|
|
5215
|
+
}
|
|
5216
|
+
// Update debug panel
|
|
5217
|
+
if ((_a = debugConfigRef.current) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
5218
|
+
updateDebugInfo({
|
|
5627
5219
|
instance: {
|
|
5628
5220
|
id: chartId,
|
|
5629
5221
|
type: 'ECharts',
|
|
5630
5222
|
renderer: 'canvas',
|
|
5631
|
-
// 简化处理,使用默认值
|
|
5632
5223
|
width: typeof width === 'number' ? width : undefined,
|
|
5633
5224
|
height: typeof height === 'number' ? height : undefined,
|
|
5634
|
-
platform: 'web'
|
|
5225
|
+
platform: 'web'
|
|
5635
5226
|
},
|
|
5636
|
-
config:
|
|
5227
|
+
config: wrappedOption,
|
|
5637
5228
|
data: {
|
|
5638
|
-
series: Array.isArray(
|
|
5639
|
-
totalDataCount: calculateDataLength(
|
|
5640
|
-
currentDataCount: calculateDataLength(
|
|
5229
|
+
series: Array.isArray(wrappedOption === null || wrappedOption === void 0 ? void 0 : wrappedOption.series) ? wrappedOption.series : [],
|
|
5230
|
+
totalDataCount: calculateDataLength(wrappedOption),
|
|
5231
|
+
currentDataCount: calculateDataLength(wrappedOption)
|
|
5641
5232
|
},
|
|
5642
5233
|
performance: {
|
|
5643
|
-
initTime:
|
|
5644
|
-
renderTime:
|
|
5645
|
-
|
|
5646
|
-
dataSize: JSON.stringify(option).length
|
|
5234
|
+
initTime: 0,
|
|
5235
|
+
renderTime: 0,
|
|
5236
|
+
dataSize: JSON.stringify(wrappedOption).length
|
|
5647
5237
|
}
|
|
5238
|
+
});
|
|
5239
|
+
}
|
|
5240
|
+
onInit === null || onInit === void 0 ? void 0 : onInit(instance);
|
|
5241
|
+
performanceRef.current.initEndTime = Date.now();
|
|
5242
|
+
}, [chartId, enablePerformanceMonitoring, onInit, linkageConfig, virtualScroll, onZoom, enableLegendInteraction, legendInteractionMode, onLegendSelect, onLegendUnselect, enableCustomTooltip, customTooltipContent, customTooltipStyle, onTooltipShow, onTooltipHide, wrappedOption, width, height]);
|
|
5243
|
+
// Update performance record
|
|
5244
|
+
(0,external_react_.useEffect)(function () {
|
|
5245
|
+
if (chartInstanceRef.current && onPerformance) {
|
|
5246
|
+
var p = performanceRef.current;
|
|
5247
|
+
onPerformance({
|
|
5248
|
+
renderTime: p.renderEndTime - p.renderStartTime,
|
|
5249
|
+
initTime: p.initEndTime - p.initStartTime,
|
|
5250
|
+
updateTime: p.updateEndTime - p.updateStartTime,
|
|
5251
|
+
dataSize: JSON.stringify(option).length
|
|
5252
|
+
});
|
|
5253
|
+
}
|
|
5254
|
+
}, [option, onPerformance]);
|
|
5255
|
+
// Data update callback
|
|
5256
|
+
(0,external_react_.useEffect)(function () {
|
|
5257
|
+
if (onDataUpdate && (dataUpdateOptions === null || dataUpdateOptions === void 0 ? void 0 : dataUpdateOptions.enabled) !== false) {
|
|
5258
|
+
var oldOpt = oldOptionRef.current;
|
|
5259
|
+
if (oldOpt !== option) {
|
|
5260
|
+
onDataUpdate(oldOpt, option);
|
|
5261
|
+
oldOptionRef.current = option;
|
|
5648
5262
|
}
|
|
5649
|
-
}
|
|
5650
|
-
}
|
|
5651
|
-
//
|
|
5652
|
-
|
|
5263
|
+
}
|
|
5264
|
+
}, [option, onDataUpdate, dataUpdateOptions]);
|
|
5265
|
+
// Cleanup on unmount
|
|
5266
|
+
(0,external_react_.useEffect)(function () {
|
|
5267
|
+
return function () {
|
|
5268
|
+
if (chartId) removeChart(chartId);
|
|
5269
|
+
if (performanceAnalyzerRef.current) {
|
|
5270
|
+
performanceAnalyzerRef.current.dispose();
|
|
5271
|
+
performanceAnalyzerRef.current = null;
|
|
5272
|
+
}
|
|
5273
|
+
if (adapterRef.current) adapterRef.current.dispose();
|
|
5274
|
+
};
|
|
5275
|
+
}, [chartId]);
|
|
5276
|
+
var mergedStyle = BaseChart_assign({}, normalizeSizeObject(width, height, direction, style));
|
|
5277
|
+
var wrapperProps = {
|
|
5278
|
+
option: wrappedOption,
|
|
5279
|
+
width: width,
|
|
5280
|
+
height: height,
|
|
5281
|
+
theme: typeof theme === 'string' ? theme : theme,
|
|
5282
|
+
autoResize: autoResize,
|
|
5283
|
+
loading: false,
|
|
5284
|
+
onChartInit: handleChartInit,
|
|
5285
|
+
renderer: 'canvas',
|
|
5286
|
+
onEvents: {},
|
|
5287
|
+
chartType: 'base',
|
|
5288
|
+
style: mergedStyle,
|
|
5289
|
+
className: className
|
|
5290
|
+
};
|
|
5291
|
+
return /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement(BaseChartWrapper/* default */.A, BaseChart_assign({}, wrapperProps)), (debugConfig === null || debugConfig === void 0 ? void 0 : debugConfig.enabled) && (/*#__PURE__*/external_react_default().createElement(DebugPanel, {
|
|
5292
|
+
options: debugConfig,
|
|
5293
|
+
debugInfo: {
|
|
5294
|
+
instance: {
|
|
5295
|
+
id: chartId,
|
|
5296
|
+
type: 'ECharts',
|
|
5297
|
+
renderer: 'canvas',
|
|
5298
|
+
width: typeof width === 'number' ? width : undefined,
|
|
5299
|
+
height: typeof height === 'number' ? height : undefined,
|
|
5300
|
+
platform: 'web'
|
|
5301
|
+
},
|
|
5302
|
+
config: option,
|
|
5303
|
+
data: {
|
|
5304
|
+
series: Array.isArray(option === null || option === void 0 ? void 0 : option.series) ? option.series : [],
|
|
5305
|
+
totalDataCount: calculateDataLength(option),
|
|
5306
|
+
currentDataCount: calculateDataLength(option)
|
|
5307
|
+
},
|
|
5308
|
+
performance: {
|
|
5309
|
+
initTime: performanceRef.current.initEndTime - performanceRef.current.initStartTime,
|
|
5310
|
+
renderTime: performanceRef.current.renderEndTime - performanceRef.current.renderStartTime,
|
|
5311
|
+
updateTime: 0,
|
|
5312
|
+
dataSize: JSON.stringify(option).length
|
|
5313
|
+
}
|
|
5314
|
+
}
|
|
5315
|
+
})));
|
|
5653
5316
|
};
|
|
5654
|
-
|
|
5655
|
-
|
|
5656
|
-
|
|
5317
|
+
function normalizeSizeObject(width, height, direction, style) {
|
|
5318
|
+
return BaseChart_assign({
|
|
5319
|
+
width: normalizeSize(width, '100%'),
|
|
5320
|
+
height: normalizeSize(height, '300px'),
|
|
5321
|
+
direction: direction
|
|
5322
|
+
}, style);
|
|
5323
|
+
}
|
|
5657
5324
|
/* harmony default export */ const components_BaseChart = (BaseChart);
|
|
5658
5325
|
// EXTERNAL MODULE: ./src/core/utils/index.ts + 2 modules
|
|
5659
5326
|
var utils = __webpack_require__(524);
|
|
@@ -5679,6 +5346,77 @@ var treemap = __webpack_require__(37);
|
|
|
5679
5346
|
var sunburst = __webpack_require__(673);
|
|
5680
5347
|
// EXTERNAL MODULE: ./src/charts/sankey/index.tsx
|
|
5681
5348
|
var sankey = __webpack_require__(490);
|
|
5349
|
+
;// ./src/charts/graph/index.tsx
|
|
5350
|
+
var graph_assign = undefined && undefined.__assign || function () {
|
|
5351
|
+
graph_assign = Object.assign || function (t) {
|
|
5352
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5353
|
+
s = arguments[i];
|
|
5354
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
5355
|
+
}
|
|
5356
|
+
return t;
|
|
5357
|
+
};
|
|
5358
|
+
return graph_assign.apply(this, arguments);
|
|
5359
|
+
};
|
|
5360
|
+
/**
|
|
5361
|
+
* GraphChart组件
|
|
5362
|
+
*/
|
|
5363
|
+
|
|
5364
|
+
|
|
5365
|
+
var GraphChart = /*#__PURE__*/(0,external_react_.memo)(function (props) {
|
|
5366
|
+
return /*#__PURE__*/external_react_default().createElement(BaseChartWrapper/* default */.A, graph_assign({}, props, {
|
|
5367
|
+
chartType: "graph-chart"
|
|
5368
|
+
}));
|
|
5369
|
+
});
|
|
5370
|
+
GraphChart.displayName = 'GraphChart';
|
|
5371
|
+
/* harmony default export */ const graph = (GraphChart);
|
|
5372
|
+
;// ./src/charts/candlestick/index.tsx
|
|
5373
|
+
var candlestick_assign = undefined && undefined.__assign || function () {
|
|
5374
|
+
candlestick_assign = Object.assign || function (t) {
|
|
5375
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5376
|
+
s = arguments[i];
|
|
5377
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
5378
|
+
}
|
|
5379
|
+
return t;
|
|
5380
|
+
};
|
|
5381
|
+
return candlestick_assign.apply(this, arguments);
|
|
5382
|
+
};
|
|
5383
|
+
/**
|
|
5384
|
+
* CandlestickChart组件
|
|
5385
|
+
*/
|
|
5386
|
+
|
|
5387
|
+
|
|
5388
|
+
var CandlestickChart = /*#__PURE__*/(0,external_react_.memo)(function (props) {
|
|
5389
|
+
return /*#__PURE__*/external_react_default().createElement(BaseChartWrapper/* default */.A, candlestick_assign({}, props, {
|
|
5390
|
+
chartType: "candlestick-chart"
|
|
5391
|
+
}));
|
|
5392
|
+
});
|
|
5393
|
+
CandlestickChart.displayName = 'CandlestickChart';
|
|
5394
|
+
/* harmony default export */ const candlestick = (CandlestickChart);
|
|
5395
|
+
;// ./src/charts/wordcloud/index.tsx
|
|
5396
|
+
var wordcloud_assign = undefined && undefined.__assign || function () {
|
|
5397
|
+
wordcloud_assign = Object.assign || function (t) {
|
|
5398
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5399
|
+
s = arguments[i];
|
|
5400
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
5401
|
+
}
|
|
5402
|
+
return t;
|
|
5403
|
+
};
|
|
5404
|
+
return wordcloud_assign.apply(this, arguments);
|
|
5405
|
+
};
|
|
5406
|
+
/**
|
|
5407
|
+
* WordCloudChart组件
|
|
5408
|
+
*/
|
|
5409
|
+
|
|
5410
|
+
|
|
5411
|
+
var WordCloudChart = /*#__PURE__*/(0,external_react_.memo)(function (props) {
|
|
5412
|
+
return /*#__PURE__*/external_react_default().createElement(BaseChartWrapper/* default */.A, wordcloud_assign({}, props, {
|
|
5413
|
+
chartType: "wordcloud-chart"
|
|
5414
|
+
}));
|
|
5415
|
+
});
|
|
5416
|
+
WordCloudChart.displayName = 'WordCloudChart';
|
|
5417
|
+
/* harmony default export */ const wordcloud = (WordCloudChart);
|
|
5418
|
+
// EXTERNAL MODULE: ./src/adapters/index.ts + 5 modules
|
|
5419
|
+
var adapters = __webpack_require__(574);
|
|
5682
5420
|
// EXTERNAL MODULE: ./src/adapters/h5/index.ts
|
|
5683
5421
|
var h5 = __webpack_require__(123);
|
|
5684
5422
|
// EXTERNAL MODULE: ./src/adapters/weapp/index.ts
|
|
@@ -6016,7 +5754,7 @@ var elegantTheme = {
|
|
|
6016
5754
|
* @param options 自定义选项
|
|
6017
5755
|
* @returns 合并后的主题配置
|
|
6018
5756
|
*/
|
|
6019
|
-
function
|
|
5757
|
+
function getTheme(options) {
|
|
6020
5758
|
if (!options) {
|
|
6021
5759
|
return defaultTheme;
|
|
6022
5760
|
}
|
|
@@ -6065,6 +5803,19 @@ function getThemeByName(name) {
|
|
|
6065
5803
|
function unregisterTheme(name) {
|
|
6066
5804
|
themeRegistry.delete(name);
|
|
6067
5805
|
}
|
|
5806
|
+
/**
|
|
5807
|
+
* 重置主题注册表(清除所有已注册的主题,恢复内置主题)
|
|
5808
|
+
* 主要用于测试环境
|
|
5809
|
+
*/
|
|
5810
|
+
function resetThemeRegistry() {
|
|
5811
|
+
themeRegistry.clear();
|
|
5812
|
+
// 重新注册所有内置主题
|
|
5813
|
+
Object.entries(builtinThemes).forEach(function (_a) {
|
|
5814
|
+
var name = _a[0],
|
|
5815
|
+
theme = _a[1];
|
|
5816
|
+
themeRegistry.set(name, theme);
|
|
5817
|
+
});
|
|
5818
|
+
}
|
|
6068
5819
|
/**
|
|
6069
5820
|
* 动态切换主题
|
|
6070
5821
|
* @param theme 主题名称或主题配置
|
|
@@ -6203,17 +5954,22 @@ Object.entries(builtinThemes).forEach(function (_a) {
|
|
|
6203
5954
|
cyberTheme: cyberTheme,
|
|
6204
5955
|
retroTheme: retroTheme,
|
|
6205
5956
|
elegantTheme: elegantTheme,
|
|
6206
|
-
getTheme:
|
|
5957
|
+
getTheme: getTheme,
|
|
6207
5958
|
registerTheme: registerTheme,
|
|
6208
5959
|
getRegisteredThemes: getRegisteredThemes,
|
|
6209
5960
|
getThemeByName: getThemeByName,
|
|
6210
5961
|
unregisterTheme: unregisterTheme,
|
|
5962
|
+
resetThemeRegistry: resetThemeRegistry,
|
|
6211
5963
|
switchTheme: switchTheme,
|
|
6212
5964
|
getThemesByTag: getThemesByTag,
|
|
6213
5965
|
getLightThemes: getLightThemes,
|
|
6214
5966
|
getDarkThemes: getDarkThemes
|
|
6215
5967
|
});
|
|
6216
5968
|
;// ./src/core/themes/ThemeManager.ts
|
|
5969
|
+
/**
|
|
5970
|
+
* TaroViz 主题系统
|
|
5971
|
+
* 支持 CSS 变量、动态主题切换、自定义主题
|
|
5972
|
+
*/
|
|
6217
5973
|
var ThemeManager_assign = undefined && undefined.__assign || function () {
|
|
6218
5974
|
ThemeManager_assign = Object.assign || function (t) {
|
|
6219
5975
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
@@ -6839,31 +6595,26 @@ var ThemeEditor = function (_a) {
|
|
|
6839
6595
|
var handleColorChange = function (index, color) {
|
|
6840
6596
|
var newColors = ThemeEditor_spreadArray([], colors, true);
|
|
6841
6597
|
newColors[index] = color;
|
|
6842
|
-
setColors(newColors);
|
|
6843
6598
|
updateCurrentTheme({
|
|
6844
6599
|
colors: newColors
|
|
6845
6600
|
});
|
|
6846
6601
|
};
|
|
6847
6602
|
// 处理背景色变化
|
|
6848
6603
|
var handleBackgroundColorChange = function (color) {
|
|
6849
|
-
setBackgroundColor(color);
|
|
6850
6604
|
updateCurrentTheme({
|
|
6851
6605
|
backgroundColor: color
|
|
6852
6606
|
});
|
|
6853
6607
|
};
|
|
6854
6608
|
// 处理文本颜色变化
|
|
6855
6609
|
var handleTextColorChange = function (color) {
|
|
6856
|
-
setTextColor(color);
|
|
6857
6610
|
updateCurrentTheme({
|
|
6858
6611
|
textColor: color
|
|
6859
6612
|
});
|
|
6860
6613
|
};
|
|
6861
6614
|
// 处理深色模式切换
|
|
6862
6615
|
var handleDarkModeToggle = function () {
|
|
6863
|
-
var newDarkMode = !darkMode;
|
|
6864
|
-
setDarkMode(newDarkMode);
|
|
6865
6616
|
updateCurrentTheme({
|
|
6866
|
-
darkMode:
|
|
6617
|
+
darkMode: !darkMode
|
|
6867
6618
|
});
|
|
6868
6619
|
};
|
|
6869
6620
|
// 更新当前主题
|
|
@@ -7367,7 +7118,8 @@ function withErrorBoundary(ChartComponent, errorBoundaryProps) {
|
|
|
7367
7118
|
var WrappedChart = function (props) {
|
|
7368
7119
|
return /*#__PURE__*/external_react_default().createElement(ErrorBoundary, ErrorBoundary_assign({}, errorBoundaryProps), /*#__PURE__*/external_react_default().createElement(ChartComponent, ErrorBoundary_assign({}, props)));
|
|
7369
7120
|
};
|
|
7370
|
-
|
|
7121
|
+
var componentName = ChartComponent.displayName || ChartComponent.name;
|
|
7122
|
+
WrappedChart.displayName = componentName ? "withErrorBoundary(".concat(componentName, ")") : 'withErrorBoundary(WrappedChart)';
|
|
7371
7123
|
return WrappedChart;
|
|
7372
7124
|
}
|
|
7373
7125
|
/* harmony default export */ const components_ErrorBoundary = ((/* unused pure expression or super */ null && (ErrorBoundary)));
|
|
@@ -7429,6 +7181,43 @@ var LazySunburstChart = /*#__PURE__*/(0,external_react_.lazy)(function () {
|
|
|
7429
7181
|
var LazySankeyChart = /*#__PURE__*/(0,external_react_.lazy)(function () {
|
|
7430
7182
|
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 490));
|
|
7431
7183
|
});
|
|
7184
|
+
// 统一的图表类型到懒加载组件映射
|
|
7185
|
+
var LAZY_CHART_MODULES = {
|
|
7186
|
+
line: function () {
|
|
7187
|
+
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 127));
|
|
7188
|
+
},
|
|
7189
|
+
bar: function () {
|
|
7190
|
+
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 188));
|
|
7191
|
+
},
|
|
7192
|
+
pie: function () {
|
|
7193
|
+
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 481));
|
|
7194
|
+
},
|
|
7195
|
+
scatter: function () {
|
|
7196
|
+
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 589));
|
|
7197
|
+
},
|
|
7198
|
+
radar: function () {
|
|
7199
|
+
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 443));
|
|
7200
|
+
},
|
|
7201
|
+
heatmap: function () {
|
|
7202
|
+
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 835));
|
|
7203
|
+
},
|
|
7204
|
+
gauge: function () {
|
|
7205
|
+
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 334));
|
|
7206
|
+
},
|
|
7207
|
+
funnel: function () {
|
|
7208
|
+
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 133));
|
|
7209
|
+
},
|
|
7210
|
+
treemap: function () {
|
|
7211
|
+
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 37));
|
|
7212
|
+
},
|
|
7213
|
+
sunburst: function () {
|
|
7214
|
+
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 673));
|
|
7215
|
+
},
|
|
7216
|
+
sankey: function () {
|
|
7217
|
+
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 490));
|
|
7218
|
+
}
|
|
7219
|
+
};
|
|
7220
|
+
var LAZY_CHART_TYPES = Object.keys(LAZY_CHART_MODULES);
|
|
7432
7221
|
/**
|
|
7433
7222
|
* 默认加载状态组件
|
|
7434
7223
|
*/
|
|
@@ -7488,56 +7277,31 @@ function withLazyLoad(ChartComponent, loadingFallback) {
|
|
|
7488
7277
|
/**
|
|
7489
7278
|
* 预加载图表组件
|
|
7490
7279
|
* 在需要显示图表之前预先加载
|
|
7280
|
+
* @param silent - 如果为 true,错误不会被打印到控制台(保持旧行为兼容)
|
|
7281
|
+
* @returns Promise that resolves when loaded, rejects on error
|
|
7491
7282
|
*/
|
|
7492
|
-
function preloadChart(chartType) {
|
|
7493
|
-
|
|
7494
|
-
|
|
7495
|
-
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 127));
|
|
7496
|
-
},
|
|
7497
|
-
bar: function () {
|
|
7498
|
-
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 188));
|
|
7499
|
-
},
|
|
7500
|
-
pie: function () {
|
|
7501
|
-
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 481));
|
|
7502
|
-
},
|
|
7503
|
-
scatter: function () {
|
|
7504
|
-
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 589));
|
|
7505
|
-
},
|
|
7506
|
-
radar: function () {
|
|
7507
|
-
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 443));
|
|
7508
|
-
},
|
|
7509
|
-
heatmap: function () {
|
|
7510
|
-
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 835));
|
|
7511
|
-
},
|
|
7512
|
-
gauge: function () {
|
|
7513
|
-
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 334));
|
|
7514
|
-
},
|
|
7515
|
-
funnel: function () {
|
|
7516
|
-
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 133));
|
|
7517
|
-
},
|
|
7518
|
-
treemap: function () {
|
|
7519
|
-
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 37));
|
|
7520
|
-
},
|
|
7521
|
-
sunburst: function () {
|
|
7522
|
-
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 673));
|
|
7523
|
-
},
|
|
7524
|
-
sankey: function () {
|
|
7525
|
-
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 490));
|
|
7526
|
-
}
|
|
7527
|
-
};
|
|
7528
|
-
var loader = chartModules[chartType];
|
|
7529
|
-
if (loader) {
|
|
7530
|
-
loader().catch(console.error);
|
|
7283
|
+
function preloadChart(chartType, silent) {
|
|
7284
|
+
if (silent === void 0) {
|
|
7285
|
+
silent = true;
|
|
7531
7286
|
}
|
|
7287
|
+
var loader = LAZY_CHART_MODULES[chartType];
|
|
7288
|
+
if (!loader) {
|
|
7289
|
+
if (silent) return Promise.resolve();
|
|
7290
|
+
return Promise.reject(new Error("Unknown chart type: ".concat(chartType)));
|
|
7291
|
+
}
|
|
7292
|
+
return loader().then(function () {
|
|
7293
|
+
return undefined;
|
|
7294
|
+
}).catch(function (e) {
|
|
7295
|
+
if (!silent) console.error('[TaroViz] Failed to preload chart:', chartType, e);
|
|
7296
|
+
});
|
|
7532
7297
|
}
|
|
7533
7298
|
/**
|
|
7534
7299
|
* 预加载所有图表组件
|
|
7535
7300
|
*/
|
|
7536
7301
|
function preloadAllCharts() {
|
|
7537
|
-
|
|
7538
|
-
chartTypes.forEach(function (type) {
|
|
7302
|
+
return Promise.all(LAZY_CHART_TYPES.map(function (type) {
|
|
7539
7303
|
return preloadChart(type);
|
|
7540
|
-
});
|
|
7304
|
+
}));
|
|
7541
7305
|
}
|
|
7542
7306
|
/**
|
|
7543
7307
|
* 创建懒加载图表映射
|
|
@@ -7567,11 +7331,14 @@ var LazyChartRegistry = {
|
|
|
7567
7331
|
get: function (chartType) {
|
|
7568
7332
|
return createLazyChart(chartType);
|
|
7569
7333
|
},
|
|
7570
|
-
preload: function (chartType) {
|
|
7571
|
-
|
|
7334
|
+
preload: function (chartType, silent) {
|
|
7335
|
+
if (silent === void 0) {
|
|
7336
|
+
silent = true;
|
|
7337
|
+
}
|
|
7338
|
+
return preloadChart(chartType, silent);
|
|
7572
7339
|
},
|
|
7573
7340
|
preloadAll: function () {
|
|
7574
|
-
preloadAllCharts();
|
|
7341
|
+
return preloadAllCharts();
|
|
7575
7342
|
}
|
|
7576
7343
|
};
|
|
7577
7344
|
|
|
@@ -7701,15 +7468,19 @@ function useAnnotation(props) {
|
|
|
7701
7468
|
markArea = props.markArea,
|
|
7702
7469
|
scatter = props.scatter;
|
|
7703
7470
|
return (0,external_react_.useMemo)(function () {
|
|
7471
|
+
// 使用 any 避免类型复杂性问题
|
|
7704
7472
|
var series = [];
|
|
7705
7473
|
if (type === 'line' && markLine) {
|
|
7706
|
-
|
|
7474
|
+
var markLineResult = convertAnnotationToMarkLine(markLine);
|
|
7475
|
+
series.push.apply(series, Array.isArray(markLineResult) ? markLineResult : [markLineResult]);
|
|
7707
7476
|
}
|
|
7708
7477
|
if (type === 'area' && markArea) {
|
|
7709
|
-
|
|
7478
|
+
var markAreaResult = convertAnnotationToMarkArea(markArea);
|
|
7479
|
+
series.push.apply(series, Array.isArray(markAreaResult) ? markAreaResult : [markAreaResult]);
|
|
7710
7480
|
}
|
|
7711
7481
|
if (type === 'scatter' && scatter) {
|
|
7712
|
-
|
|
7482
|
+
var scatterResult = convertAnnotationToScatter(scatter);
|
|
7483
|
+
series.push.apply(series, Array.isArray(scatterResult) ? scatterResult : [scatterResult]);
|
|
7713
7484
|
}
|
|
7714
7485
|
return {
|
|
7715
7486
|
series: series
|
|
@@ -7860,13 +7631,16 @@ function createCompositeAnnotation(annotations) {
|
|
|
7860
7631
|
var allSeries = [];
|
|
7861
7632
|
annotations.forEach(function (annotation) {
|
|
7862
7633
|
if (annotation.type === 'line' && annotation.markLine) {
|
|
7863
|
-
|
|
7634
|
+
var result = convertAnnotationToMarkLine(annotation.markLine);
|
|
7635
|
+
allSeries.push.apply(allSeries, Array.isArray(result) ? result : [result]);
|
|
7864
7636
|
}
|
|
7865
7637
|
if (annotation.type === 'area' && annotation.markArea) {
|
|
7866
|
-
|
|
7638
|
+
var result = convertAnnotationToMarkArea(annotation.markArea);
|
|
7639
|
+
allSeries.push.apply(allSeries, Array.isArray(result) ? result : [result]);
|
|
7867
7640
|
}
|
|
7868
7641
|
if (annotation.type === 'scatter' && annotation.scatter) {
|
|
7869
|
-
|
|
7642
|
+
var result = convertAnnotationToScatter(annotation.scatter);
|
|
7643
|
+
allSeries.push.apply(allSeries, Array.isArray(result) ? result : [result]);
|
|
7870
7644
|
}
|
|
7871
7645
|
});
|
|
7872
7646
|
return {
|
|
@@ -8026,7 +7800,7 @@ function dataURLToBlob(dataURL) {
|
|
|
8026
7800
|
/**
|
|
8027
7801
|
* 下载文件
|
|
8028
7802
|
*/
|
|
8029
|
-
function downloadFile(data, filename,
|
|
7803
|
+
function downloadFile(data, filename, _mimeType) {
|
|
8030
7804
|
var blob = typeof data === 'string' ? dataURLToBlob(data) : data;
|
|
8031
7805
|
var url = URL.createObjectURL(blob);
|
|
8032
7806
|
var link = document.createElement('a');
|
|
@@ -8073,6 +7847,7 @@ var ChartExporter = /** @class */function () {
|
|
|
8073
7847
|
_d = options.quality,
|
|
8074
7848
|
quality = _d === void 0 ? 0.8 : _d;
|
|
8075
7849
|
var mimeType = "image/".concat(type);
|
|
7850
|
+
// 使用 any 避免 ECharts 类型定义与实际支持类型不匹配
|
|
8076
7851
|
var data = chart.getDataURL({
|
|
8077
7852
|
type: type,
|
|
8078
7853
|
pixelRatio: pixelRatio,
|
|
@@ -8094,8 +7869,11 @@ var ChartExporter = /** @class */function () {
|
|
|
8094
7869
|
}
|
|
8095
7870
|
var _a = options.compress,
|
|
8096
7871
|
compress = _a === void 0 ? false : _a;
|
|
8097
|
-
|
|
8098
|
-
|
|
7872
|
+
// ECharts 5.x 使用 getDataURL 获取 SVG
|
|
7873
|
+
var svgData = chart.getDataURL({
|
|
7874
|
+
type: 'svg'
|
|
7875
|
+
});
|
|
7876
|
+
if (!svgData || svgData === 'data:image/svg+xml;charset=utf8,') {
|
|
8099
7877
|
throw new Error('SVG export is not supported. Please use canvas renderer.');
|
|
8100
7878
|
}
|
|
8101
7879
|
var data = svgData;
|
|
@@ -8117,11 +7895,12 @@ var ChartExporter = /** @class */function () {
|
|
|
8117
7895
|
ChartExporter.exportPDF = function (chart_1) {
|
|
8118
7896
|
return __awaiter(this, arguments, Promise, function (chart, options) {
|
|
8119
7897
|
var _a, orientation, _b, pageSize, _c, title, _d, author, _e, margin, _f, includeTitle, imageData, jsPDF, _g, pageSizes, size, isLandscape, doc, chartWidth, chartHeight, pageWidth, pageHeight, marginTop, marginLeft, chartY, chartX, footerY, pdfBlob;
|
|
7898
|
+
var _h;
|
|
8120
7899
|
if (options === void 0) {
|
|
8121
7900
|
options = {};
|
|
8122
7901
|
}
|
|
8123
|
-
return __generator(this, function (
|
|
8124
|
-
switch (
|
|
7902
|
+
return __generator(this, function (_j) {
|
|
7903
|
+
switch (_j.label) {
|
|
8125
7904
|
case 0:
|
|
8126
7905
|
_a = options.orientation, orientation = _a === void 0 ? 'portrait' : _a, _b = options.pageSize, pageSize = _b === void 0 ? 'a4' : _b, _c = options.title, title = _c === void 0 ? 'Chart Export' : _c, _d = options.author, author = _d === void 0 ? 'TaroViz' : _d, _e = options.margin, margin = _e === void 0 ? {
|
|
8127
7906
|
top: 40,
|
|
@@ -8134,17 +7913,17 @@ var ChartExporter = /** @class */function () {
|
|
|
8134
7913
|
pixelRatio: 2,
|
|
8135
7914
|
backgroundColor: '#ffffff'
|
|
8136
7915
|
});
|
|
8137
|
-
|
|
7916
|
+
_j.label = 1;
|
|
8138
7917
|
case 1:
|
|
8139
|
-
|
|
7918
|
+
_j.trys.push([1, 3,, 4]);
|
|
8140
7919
|
return [4 /*yield*/, import(/* webpackIgnore: true */'jspdf')];
|
|
8141
7920
|
case 2:
|
|
8142
7921
|
// 尝试使用动态导入,使用 webpackIgnore 注释避免预解析
|
|
8143
|
-
// @ts-
|
|
8144
|
-
jsPDF =
|
|
7922
|
+
// @ts-expect-error - 动态导入
|
|
7923
|
+
jsPDF = _j.sent().default;
|
|
8145
7924
|
return [3 /*break*/, 4];
|
|
8146
7925
|
case 3:
|
|
8147
|
-
_g =
|
|
7926
|
+
_g = _j.sent();
|
|
8148
7927
|
// 如果没有 jspdf,提供备选方案
|
|
8149
7928
|
console.warn('[TaroViz] jspdf not found, falling back to image download');
|
|
8150
7929
|
return [2 /*return*/, {
|
|
@@ -8200,7 +7979,7 @@ var ChartExporter = /** @class */function () {
|
|
|
8200
7979
|
chartY = includeTitle ? marginTop + 15 : marginTop;
|
|
8201
7980
|
chartX = (pageWidth - chartWidth) / 2;
|
|
8202
7981
|
doc.addImage(imageData, 'PNG', chartX, chartY, chartWidth, chartHeight);
|
|
8203
|
-
footerY = pageHeight - margin.bottom / 2;
|
|
7982
|
+
footerY = pageHeight - ((_h = margin.bottom) !== null && _h !== void 0 ? _h : 40) / 2;
|
|
8204
7983
|
doc.setFontSize(10);
|
|
8205
7984
|
doc.setTextColor(153, 153, 153);
|
|
8206
7985
|
doc.text("Generated by TaroViz on ".concat(new Date().toLocaleDateString()), marginLeft, footerY);
|
|
@@ -8220,11 +7999,11 @@ var ChartExporter = /** @class */function () {
|
|
|
8220
7999
|
*/
|
|
8221
8000
|
ChartExporter.exportBatch = function (charts, options) {
|
|
8222
8001
|
return __awaiter(this, void 0, Promise, function () {
|
|
8223
|
-
var format, _a,
|
|
8002
|
+
var format, _a, _filenamePrefix, compress, results, _i, charts_1, _b, name, chart, result, error_1;
|
|
8224
8003
|
return __generator(this, function (_c) {
|
|
8225
8004
|
switch (_c.label) {
|
|
8226
8005
|
case 0:
|
|
8227
|
-
format = options.format, _a = options.filenamePrefix,
|
|
8006
|
+
format = options.format, _a = options.filenamePrefix, _filenamePrefix = _a === void 0 ? 'chart' : _a, compress = options.compress;
|
|
8228
8007
|
results = [];
|
|
8229
8008
|
_i = 0, charts_1 = charts;
|
|
8230
8009
|
_c.label = 1;
|
|
@@ -8324,6 +8103,466 @@ var ChartExporter = /** @class */function () {
|
|
|
8324
8103
|
}();
|
|
8325
8104
|
var exportChart = ChartExporter;
|
|
8326
8105
|
/* harmony default export */ const ExportUtils = ((/* unused pure expression or super */ null && (ChartExporter)));
|
|
8106
|
+
;// ./src/hooks/useDataTransform.ts
|
|
8107
|
+
var useDataTransform_assign = undefined && undefined.__assign || function () {
|
|
8108
|
+
useDataTransform_assign = Object.assign || function (t) {
|
|
8109
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
8110
|
+
s = arguments[i];
|
|
8111
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
8112
|
+
}
|
|
8113
|
+
return t;
|
|
8114
|
+
};
|
|
8115
|
+
return useDataTransform_assign.apply(this, arguments);
|
|
8116
|
+
};
|
|
8117
|
+
var useDataTransform_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {
|
|
8118
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
8119
|
+
if (ar || !(i in from)) {
|
|
8120
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
8121
|
+
ar[i] = from[i];
|
|
8122
|
+
}
|
|
8123
|
+
}
|
|
8124
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
8125
|
+
};
|
|
8126
|
+
/**
|
|
8127
|
+
* useDataTransform - 数据转换 Hook
|
|
8128
|
+
* 提供便捷的数据转换功能,将原始数据转换为 ECharts 配置
|
|
8129
|
+
*/
|
|
8130
|
+
|
|
8131
|
+
// ============================================================================
|
|
8132
|
+
// 数据转换 Hook
|
|
8133
|
+
// ============================================================================
|
|
8134
|
+
/**
|
|
8135
|
+
* 使用数据转换
|
|
8136
|
+
* @param options 转换选项
|
|
8137
|
+
* @returns 转换后的 ECharts 配置
|
|
8138
|
+
*/
|
|
8139
|
+
function useDataTransform(options) {
|
|
8140
|
+
var data = options.data,
|
|
8141
|
+
chartType = options.chartType,
|
|
8142
|
+
_a = options.mapping,
|
|
8143
|
+
mapping = _a === void 0 ? {} : _a,
|
|
8144
|
+
_b = options.extraConfig,
|
|
8145
|
+
extraConfig = _b === void 0 ? {} : _b;
|
|
8146
|
+
return (0,external_react_.useMemo)(function () {
|
|
8147
|
+
switch (chartType) {
|
|
8148
|
+
case 'line':
|
|
8149
|
+
case 'bar':
|
|
8150
|
+
return transformLineOrBar(data, chartType, mapping, extraConfig);
|
|
8151
|
+
case 'pie':
|
|
8152
|
+
return transformPie(data, mapping, extraConfig);
|
|
8153
|
+
case 'scatter':
|
|
8154
|
+
return transformScatter(data, mapping, extraConfig);
|
|
8155
|
+
case 'radar':
|
|
8156
|
+
return transformRadar(data, mapping, extraConfig);
|
|
8157
|
+
case 'heatmap':
|
|
8158
|
+
return transformHeatmap(data, mapping, extraConfig);
|
|
8159
|
+
default:
|
|
8160
|
+
return {};
|
|
8161
|
+
}
|
|
8162
|
+
}, [data, chartType, mapping, extraConfig]);
|
|
8163
|
+
}
|
|
8164
|
+
/**
|
|
8165
|
+
* 使用表格数据转换
|
|
8166
|
+
* 将表格数据转换为 ECharts 配置
|
|
8167
|
+
*/
|
|
8168
|
+
function useTableTransform(options) {
|
|
8169
|
+
var data = options.data,
|
|
8170
|
+
_a = options.columns,
|
|
8171
|
+
columns = _a === void 0 ? [] : _a,
|
|
8172
|
+
_b = options.transpose,
|
|
8173
|
+
transpose = _b === void 0 ? false : _b,
|
|
8174
|
+
_c = options.extraConfig,
|
|
8175
|
+
extraConfig = _c === void 0 ? {} : _c;
|
|
8176
|
+
return (0,external_react_.useMemo)(function () {
|
|
8177
|
+
if (!data || data.length === 0) {
|
|
8178
|
+
return {};
|
|
8179
|
+
}
|
|
8180
|
+
var firstRow = data[0];
|
|
8181
|
+
var fields = columns.length > 0 ? columns.map(function (c) {
|
|
8182
|
+
return c.field;
|
|
8183
|
+
}) : Object.keys(firstRow);
|
|
8184
|
+
// Build columns map for O(1) lookup instead of O(n) find
|
|
8185
|
+
var columnsMap = new Map(columns.map(function (c) {
|
|
8186
|
+
return [c.field, c];
|
|
8187
|
+
}));
|
|
8188
|
+
var categories = transpose ? fields : data.map(function (row) {
|
|
8189
|
+
return String(row[fields[0]] || '');
|
|
8190
|
+
});
|
|
8191
|
+
// For non-transpose, we skip the first field (it's used for categories)
|
|
8192
|
+
var seriesFields = transpose ? fields : fields.slice(1);
|
|
8193
|
+
var series = seriesFields.map(function (fieldName) {
|
|
8194
|
+
var key = typeof fieldName === 'string' ? fieldName : '';
|
|
8195
|
+
var colConfig = columnsMap.get(key);
|
|
8196
|
+
// values calculation is the same regardless of transpose
|
|
8197
|
+
var values = data.map(function (row) {
|
|
8198
|
+
return Number(row[key]) || 0;
|
|
8199
|
+
});
|
|
8200
|
+
return {
|
|
8201
|
+
name: (colConfig === null || colConfig === void 0 ? void 0 : colConfig.label) || key,
|
|
8202
|
+
type: 'bar',
|
|
8203
|
+
data: values,
|
|
8204
|
+
itemStyle: (colConfig === null || colConfig === void 0 ? void 0 : colConfig.color) ? {
|
|
8205
|
+
color: colConfig.color
|
|
8206
|
+
} : undefined
|
|
8207
|
+
};
|
|
8208
|
+
});
|
|
8209
|
+
return useDataTransform_assign({
|
|
8210
|
+
xAxis: {
|
|
8211
|
+
type: 'category',
|
|
8212
|
+
data: categories
|
|
8213
|
+
},
|
|
8214
|
+
yAxis: {
|
|
8215
|
+
type: 'value'
|
|
8216
|
+
},
|
|
8217
|
+
series: series
|
|
8218
|
+
}, extraConfig);
|
|
8219
|
+
}, [data, columns, transpose, extraConfig]);
|
|
8220
|
+
}
|
|
8221
|
+
/**
|
|
8222
|
+
* 使用时间序列转换
|
|
8223
|
+
* 将时间序列数据转换为 ECharts 配置
|
|
8224
|
+
*/
|
|
8225
|
+
function useTimeSeriesTransform(options) {
|
|
8226
|
+
var data = options.data,
|
|
8227
|
+
dateField = options.dateField,
|
|
8228
|
+
valueField = options.valueField,
|
|
8229
|
+
groupField = options.groupField,
|
|
8230
|
+
_a = options.period,
|
|
8231
|
+
period = _a === void 0 ? 'day' : _a,
|
|
8232
|
+
_b = options.aggregation,
|
|
8233
|
+
aggregation = _b === void 0 ? 'sum' : _b,
|
|
8234
|
+
_c = options.fillMissing,
|
|
8235
|
+
fillMissing = _c === void 0 ? 'forward' : _c,
|
|
8236
|
+
_d = options.extraConfig,
|
|
8237
|
+
extraConfig = _d === void 0 ? {} : _d;
|
|
8238
|
+
return (0,external_react_.useMemo)(function () {
|
|
8239
|
+
if (!data || data.length === 0) {
|
|
8240
|
+
return {};
|
|
8241
|
+
}
|
|
8242
|
+
// 按时间分组
|
|
8243
|
+
var groupedData = groupByTime(data, dateField, period);
|
|
8244
|
+
var categories = Object.keys(groupedData).sort();
|
|
8245
|
+
if (groupField) {
|
|
8246
|
+
// 多系列
|
|
8247
|
+
var groups = new Set(data.map(function (d) {
|
|
8248
|
+
return String(d[groupField]);
|
|
8249
|
+
}));
|
|
8250
|
+
var series = Array.from(groups).map(function (group) {
|
|
8251
|
+
var groupValues = categories.map(function (date) {
|
|
8252
|
+
var _a;
|
|
8253
|
+
var items = ((_a = groupedData[date]) === null || _a === void 0 ? void 0 : _a.filter(function (d) {
|
|
8254
|
+
return String(d[groupField]) === group;
|
|
8255
|
+
})) || [];
|
|
8256
|
+
return aggregateValues(items, valueField, aggregation, fillMissing);
|
|
8257
|
+
});
|
|
8258
|
+
return {
|
|
8259
|
+
name: group,
|
|
8260
|
+
type: 'line',
|
|
8261
|
+
data: groupValues,
|
|
8262
|
+
smooth: true
|
|
8263
|
+
};
|
|
8264
|
+
});
|
|
8265
|
+
return useDataTransform_assign({
|
|
8266
|
+
xAxis: {
|
|
8267
|
+
type: 'category',
|
|
8268
|
+
data: categories
|
|
8269
|
+
},
|
|
8270
|
+
yAxis: {
|
|
8271
|
+
type: 'value'
|
|
8272
|
+
},
|
|
8273
|
+
series: series
|
|
8274
|
+
}, extraConfig);
|
|
8275
|
+
} else {
|
|
8276
|
+
// 单系列
|
|
8277
|
+
var values = categories.map(function (date) {
|
|
8278
|
+
return aggregateValues(groupedData[date] || [], valueField, aggregation, fillMissing);
|
|
8279
|
+
});
|
|
8280
|
+
return useDataTransform_assign({
|
|
8281
|
+
xAxis: {
|
|
8282
|
+
type: 'category',
|
|
8283
|
+
data: categories
|
|
8284
|
+
},
|
|
8285
|
+
yAxis: {
|
|
8286
|
+
type: 'value'
|
|
8287
|
+
},
|
|
8288
|
+
series: [{
|
|
8289
|
+
type: 'line',
|
|
8290
|
+
data: values,
|
|
8291
|
+
smooth: true
|
|
8292
|
+
}]
|
|
8293
|
+
}, extraConfig);
|
|
8294
|
+
}
|
|
8295
|
+
}, [data, dateField, valueField, groupField, period, aggregation, fillMissing, extraConfig]);
|
|
8296
|
+
}
|
|
8297
|
+
// ============================================================================
|
|
8298
|
+
// 辅助函数
|
|
8299
|
+
// ============================================================================
|
|
8300
|
+
function transformLineOrBar(data, chartType, mapping, extraConfig) {
|
|
8301
|
+
var _a;
|
|
8302
|
+
var _b = mapping || {},
|
|
8303
|
+
_c = _b.xField,
|
|
8304
|
+
xField = _c === void 0 ? 'name' : _c,
|
|
8305
|
+
_d = _b.yField,
|
|
8306
|
+
yField = _d === void 0 ? 'value' : _d,
|
|
8307
|
+
seriesField = _b.seriesField;
|
|
8308
|
+
var categories = data.categories || ((_a = data.rows) === null || _a === void 0 ? void 0 : _a.map(function (r) {
|
|
8309
|
+
return String(r[xField]);
|
|
8310
|
+
})) || [];
|
|
8311
|
+
var seriesData = data.series || data.rows || [];
|
|
8312
|
+
if (seriesField) {
|
|
8313
|
+
var groups_1 = new Map();
|
|
8314
|
+
seriesData.forEach(function (item) {
|
|
8315
|
+
var key = String(item[seriesField] || 'default');
|
|
8316
|
+
if (!groups_1.has(key)) groups_1.set(key, []);
|
|
8317
|
+
groups_1.get(key).push(item);
|
|
8318
|
+
});
|
|
8319
|
+
var series_1 = Array.from(groups_1.entries()).map(function (_a) {
|
|
8320
|
+
var name = _a[0],
|
|
8321
|
+
items = _a[1];
|
|
8322
|
+
return {
|
|
8323
|
+
name: name,
|
|
8324
|
+
type: chartType,
|
|
8325
|
+
data: items.map(function (item) {
|
|
8326
|
+
var _a;
|
|
8327
|
+
return (_a = item[yField]) !== null && _a !== void 0 ? _a : 0;
|
|
8328
|
+
})
|
|
8329
|
+
};
|
|
8330
|
+
});
|
|
8331
|
+
return useDataTransform_assign({
|
|
8332
|
+
xAxis: {
|
|
8333
|
+
type: 'category',
|
|
8334
|
+
data: categories
|
|
8335
|
+
},
|
|
8336
|
+
yAxis: {
|
|
8337
|
+
type: 'value'
|
|
8338
|
+
},
|
|
8339
|
+
series: series_1
|
|
8340
|
+
}, extraConfig);
|
|
8341
|
+
}
|
|
8342
|
+
var series = [{
|
|
8343
|
+
type: chartType,
|
|
8344
|
+
data: seriesData.map(function (item) {
|
|
8345
|
+
var _a;
|
|
8346
|
+
return (_a = item[yField]) !== null && _a !== void 0 ? _a : 0;
|
|
8347
|
+
})
|
|
8348
|
+
}];
|
|
8349
|
+
return useDataTransform_assign({
|
|
8350
|
+
xAxis: {
|
|
8351
|
+
type: 'category',
|
|
8352
|
+
data: categories
|
|
8353
|
+
},
|
|
8354
|
+
yAxis: {
|
|
8355
|
+
type: 'value'
|
|
8356
|
+
},
|
|
8357
|
+
series: series
|
|
8358
|
+
}, extraConfig);
|
|
8359
|
+
}
|
|
8360
|
+
function transformPie(data, mapping, extraConfig) {
|
|
8361
|
+
var _a = mapping || {},
|
|
8362
|
+
_b = _a.nameField,
|
|
8363
|
+
nameField = _b === void 0 ? 'name' : _b,
|
|
8364
|
+
_c = _a.valueField,
|
|
8365
|
+
valueField = _c === void 0 ? 'value' : _c;
|
|
8366
|
+
var seriesData = (data.series || data.rows || []).map(function (item) {
|
|
8367
|
+
return {
|
|
8368
|
+
name: String(item[nameField] || ''),
|
|
8369
|
+
value: Number(item[valueField]) || 0
|
|
8370
|
+
};
|
|
8371
|
+
});
|
|
8372
|
+
return useDataTransform_assign({
|
|
8373
|
+
series: [{
|
|
8374
|
+
type: 'pie',
|
|
8375
|
+
radius: '60%',
|
|
8376
|
+
data: seriesData
|
|
8377
|
+
}]
|
|
8378
|
+
}, extraConfig);
|
|
8379
|
+
}
|
|
8380
|
+
function transformScatter(data, mapping, extraConfig) {
|
|
8381
|
+
var _a = mapping || {},
|
|
8382
|
+
_b = _a.xField,
|
|
8383
|
+
xField = _b === void 0 ? 'x' : _b,
|
|
8384
|
+
_c = _a.yField,
|
|
8385
|
+
yField = _c === void 0 ? 'y' : _c,
|
|
8386
|
+
sizeField = _a.sizeField;
|
|
8387
|
+
var seriesData = (data.series || data.rows || []).map(function (item) {
|
|
8388
|
+
var record = item;
|
|
8389
|
+
var point = [Number(record[xField]) || 0, Number(record[yField]) || 0];
|
|
8390
|
+
if (sizeField) point.push(Number(record[sizeField]) || 1);
|
|
8391
|
+
return point;
|
|
8392
|
+
});
|
|
8393
|
+
return useDataTransform_assign({
|
|
8394
|
+
xAxis: {
|
|
8395
|
+
type: 'value',
|
|
8396
|
+
scale: true
|
|
8397
|
+
},
|
|
8398
|
+
yAxis: {
|
|
8399
|
+
type: 'value',
|
|
8400
|
+
scale: true
|
|
8401
|
+
},
|
|
8402
|
+
series: [{
|
|
8403
|
+
type: 'scatter',
|
|
8404
|
+
data: seriesData
|
|
8405
|
+
}]
|
|
8406
|
+
}, extraConfig);
|
|
8407
|
+
}
|
|
8408
|
+
function transformRadar(data, mapping, extraConfig) {
|
|
8409
|
+
var _a = mapping || {},
|
|
8410
|
+
_b = _a.nameField,
|
|
8411
|
+
nameField = _b === void 0 ? 'name' : _b,
|
|
8412
|
+
_c = _a.valueField,
|
|
8413
|
+
valueField = _c === void 0 ? 'value' : _c;
|
|
8414
|
+
var indicators = (data.series || data.rows || []).map(function (item) {
|
|
8415
|
+
var record = item;
|
|
8416
|
+
return {
|
|
8417
|
+
name: String(record[nameField] || ''),
|
|
8418
|
+
max: Math.max(Number(record[valueField]) || 100, 100)
|
|
8419
|
+
};
|
|
8420
|
+
});
|
|
8421
|
+
var values = (data.series || data.rows || []).map(function (item) {
|
|
8422
|
+
return Number(item[valueField]) || 0;
|
|
8423
|
+
});
|
|
8424
|
+
return useDataTransform_assign({
|
|
8425
|
+
radar: {
|
|
8426
|
+
indicator: indicators
|
|
8427
|
+
},
|
|
8428
|
+
series: [{
|
|
8429
|
+
type: 'radar',
|
|
8430
|
+
data: [{
|
|
8431
|
+
value: values
|
|
8432
|
+
}]
|
|
8433
|
+
}]
|
|
8434
|
+
}, extraConfig);
|
|
8435
|
+
}
|
|
8436
|
+
function transformHeatmap(data, mapping, extraConfig) {
|
|
8437
|
+
var _a = mapping || {},
|
|
8438
|
+
_b = _a.xField,
|
|
8439
|
+
xField = _b === void 0 ? 'x' : _b,
|
|
8440
|
+
_c = _a.yField,
|
|
8441
|
+
yField = _c === void 0 ? 'y' : _c,
|
|
8442
|
+
_d = _a.valueField,
|
|
8443
|
+
valueField = _d === void 0 ? 'value' : _d;
|
|
8444
|
+
var xCategories = useDataTransform_spreadArray([], new Set((data.series || data.rows || []).map(function (d) {
|
|
8445
|
+
return String(d[xField]);
|
|
8446
|
+
})), true);
|
|
8447
|
+
var yCategories = useDataTransform_spreadArray([], new Set((data.series || data.rows || []).map(function (d) {
|
|
8448
|
+
return String(d[yField]);
|
|
8449
|
+
})), true);
|
|
8450
|
+
var seriesData = (data.series || data.rows || []).map(function (item) {
|
|
8451
|
+
var record = item;
|
|
8452
|
+
var xIndex = xCategories.indexOf(String(record[xField]));
|
|
8453
|
+
var yIndex = yCategories.indexOf(String(record[yField]));
|
|
8454
|
+
return [xIndex, yIndex, Number(record[valueField]) || 0];
|
|
8455
|
+
});
|
|
8456
|
+
return useDataTransform_assign({
|
|
8457
|
+
xAxis: {
|
|
8458
|
+
type: 'category',
|
|
8459
|
+
data: xCategories
|
|
8460
|
+
},
|
|
8461
|
+
yAxis: {
|
|
8462
|
+
type: 'category',
|
|
8463
|
+
data: yCategories
|
|
8464
|
+
},
|
|
8465
|
+
visualMap: {
|
|
8466
|
+
min: 0,
|
|
8467
|
+
calculable: true
|
|
8468
|
+
},
|
|
8469
|
+
series: [{
|
|
8470
|
+
type: 'heatmap',
|
|
8471
|
+
data: seriesData
|
|
8472
|
+
}]
|
|
8473
|
+
}, extraConfig);
|
|
8474
|
+
}
|
|
8475
|
+
function groupByTime(data, dateField, period) {
|
|
8476
|
+
return data.reduce(function (acc, item) {
|
|
8477
|
+
var date = new Date(String(item[dateField]));
|
|
8478
|
+
var key;
|
|
8479
|
+
switch (period) {
|
|
8480
|
+
case 'day':
|
|
8481
|
+
key = date.toISOString().split('T')[0];
|
|
8482
|
+
break;
|
|
8483
|
+
case 'week':
|
|
8484
|
+
{
|
|
8485
|
+
var week = getWeekNumber(date);
|
|
8486
|
+
key = "".concat(date.getFullYear(), "-W").concat(week);
|
|
8487
|
+
break;
|
|
8488
|
+
}
|
|
8489
|
+
case 'month':
|
|
8490
|
+
key = "".concat(date.getFullYear(), "-").concat(String(date.getMonth() + 1).padStart(2, '0'));
|
|
8491
|
+
break;
|
|
8492
|
+
case 'quarter':
|
|
8493
|
+
key = "".concat(date.getFullYear(), "-Q").concat(Math.ceil((date.getMonth() + 1) / 3));
|
|
8494
|
+
break;
|
|
8495
|
+
case 'year':
|
|
8496
|
+
key = String(date.getFullYear());
|
|
8497
|
+
break;
|
|
8498
|
+
default:
|
|
8499
|
+
key = date.toISOString().split('T')[0];
|
|
8500
|
+
}
|
|
8501
|
+
if (!acc[key]) acc[key] = [];
|
|
8502
|
+
acc[key].push(item);
|
|
8503
|
+
return acc;
|
|
8504
|
+
}, {});
|
|
8505
|
+
}
|
|
8506
|
+
function getWeekNumber(date) {
|
|
8507
|
+
var d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
|
|
8508
|
+
var dayNum = d.getUTCDay() || 7;
|
|
8509
|
+
d.setUTCDate(d.getUTCDate() + 4 - dayNum);
|
|
8510
|
+
var yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
|
|
8511
|
+
return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);
|
|
8512
|
+
}
|
|
8513
|
+
function aggregateValues(items, field, method, fillMissing) {
|
|
8514
|
+
if (items.length === 0) {
|
|
8515
|
+
if (fillMissing === 'zero') return 0;
|
|
8516
|
+
return NaN;
|
|
8517
|
+
}
|
|
8518
|
+
var values = items.map(function (item) {
|
|
8519
|
+
return Number(item[field]) || 0;
|
|
8520
|
+
});
|
|
8521
|
+
switch (method) {
|
|
8522
|
+
case 'sum':
|
|
8523
|
+
{
|
|
8524
|
+
var sum = 0;
|
|
8525
|
+
for (var i = 0; i < values.length; i++) sum += values[i];
|
|
8526
|
+
return sum;
|
|
8527
|
+
}
|
|
8528
|
+
case 'average':
|
|
8529
|
+
{
|
|
8530
|
+
if (values.length === 0) return 0;
|
|
8531
|
+
var sum = 0;
|
|
8532
|
+
for (var i = 0; i < values.length; i++) sum += values[i];
|
|
8533
|
+
return sum / values.length;
|
|
8534
|
+
}
|
|
8535
|
+
case 'max':
|
|
8536
|
+
{
|
|
8537
|
+
var max = values[0];
|
|
8538
|
+
for (var i = 1; i < values.length; i++) if (values[i] > max) max = values[i];
|
|
8539
|
+
return max;
|
|
8540
|
+
}
|
|
8541
|
+
case 'min':
|
|
8542
|
+
{
|
|
8543
|
+
var min = values[0];
|
|
8544
|
+
for (var i = 1; i < values.length; i++) if (values[i] < min) min = values[i];
|
|
8545
|
+
return min;
|
|
8546
|
+
}
|
|
8547
|
+
case 'count':
|
|
8548
|
+
return values.length;
|
|
8549
|
+
case 'first':
|
|
8550
|
+
return values[0];
|
|
8551
|
+
case 'last':
|
|
8552
|
+
return values[values.length - 1];
|
|
8553
|
+
default:
|
|
8554
|
+
return values[0];
|
|
8555
|
+
}
|
|
8556
|
+
}
|
|
8557
|
+
// ============================================================================
|
|
8558
|
+
// 导出
|
|
8559
|
+
// ============================================================================
|
|
8560
|
+
var useTransform = (/* unused pure expression or super */ null && (useDataTransform));
|
|
8561
|
+
/* harmony default export */ const hooks_useDataTransform = ({
|
|
8562
|
+
useDataTransform: useDataTransform,
|
|
8563
|
+
useTableTransform: useTableTransform,
|
|
8564
|
+
useTimeSeriesTransform: useTimeSeriesTransform
|
|
8565
|
+
});
|
|
8327
8566
|
;// ./src/hooks/index.ts
|
|
8328
8567
|
var hooks_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
|
|
8329
8568
|
function adopt(value) {
|
|
@@ -8451,6 +8690,7 @@ var hooks_spreadArray = undefined && undefined.__spreadArray || function (to, fr
|
|
|
8451
8690
|
*/
|
|
8452
8691
|
|
|
8453
8692
|
|
|
8693
|
+
|
|
8454
8694
|
// ============================================================================
|
|
8455
8695
|
// Hooks
|
|
8456
8696
|
// ============================================================================
|
|
@@ -8461,6 +8701,7 @@ var hooks_spreadArray = undefined && undefined.__spreadArray || function (to, fr
|
|
|
8461
8701
|
* @returns [图表实例, 设置实例函数, 是否已初始化]
|
|
8462
8702
|
*/
|
|
8463
8703
|
function useChart(chartRef, config) {
|
|
8704
|
+
var _this = this;
|
|
8464
8705
|
var _a = (0,external_react_.useState)(null),
|
|
8465
8706
|
instance = _a[0],
|
|
8466
8707
|
setInstance = _a[1];
|
|
@@ -8473,14 +8714,31 @@ function useChart(chartRef, config) {
|
|
|
8473
8714
|
if (!chartRef.current || instance) {
|
|
8474
8715
|
return;
|
|
8475
8716
|
}
|
|
8476
|
-
|
|
8477
|
-
|
|
8478
|
-
|
|
8479
|
-
|
|
8480
|
-
|
|
8481
|
-
|
|
8482
|
-
|
|
8483
|
-
|
|
8717
|
+
var initAdapter = function () {
|
|
8718
|
+
return hooks_awaiter(_this, void 0, void 0, function () {
|
|
8719
|
+
var adapter, chartInstance, error_1;
|
|
8720
|
+
return hooks_generator(this, function (_a) {
|
|
8721
|
+
switch (_a.label) {
|
|
8722
|
+
case 0:
|
|
8723
|
+
_a.trys.push([0, 2,, 3]);
|
|
8724
|
+
return [4 /*yield*/, (0,adapters/* getAdapter */.cK)(configRef.current || {})];
|
|
8725
|
+
case 1:
|
|
8726
|
+
adapter = _a.sent();
|
|
8727
|
+
chartInstance = adapter;
|
|
8728
|
+
setInstance(chartInstance);
|
|
8729
|
+
setInitialized(true);
|
|
8730
|
+
return [3 /*break*/, 3];
|
|
8731
|
+
case 2:
|
|
8732
|
+
error_1 = _a.sent();
|
|
8733
|
+
console.error('Failed to initialize chart:', error_1);
|
|
8734
|
+
return [3 /*break*/, 3];
|
|
8735
|
+
case 3:
|
|
8736
|
+
return [2 /*return*/];
|
|
8737
|
+
}
|
|
8738
|
+
});
|
|
8739
|
+
});
|
|
8740
|
+
};
|
|
8741
|
+
initAdapter();
|
|
8484
8742
|
return function () {
|
|
8485
8743
|
var _a;
|
|
8486
8744
|
if (instance) {
|
|
@@ -8650,9 +8908,9 @@ function useChartTheme(theme, darkMode) {
|
|
|
8650
8908
|
}
|
|
8651
8909
|
return (0,external_react_.useMemo)(function () {
|
|
8652
8910
|
if (typeof theme === 'string') {
|
|
8653
|
-
//
|
|
8911
|
+
// 如果是字符串,尝试获取内置主题配置
|
|
8654
8912
|
try {
|
|
8655
|
-
var builtinTheme =
|
|
8913
|
+
var builtinTheme = getThemeByName(theme);
|
|
8656
8914
|
return builtinTheme || (darkMode ? 'dark' : theme);
|
|
8657
8915
|
} catch (_a) {
|
|
8658
8916
|
return darkMode ? 'dark' : theme;
|
|
@@ -8793,7 +9051,7 @@ function useDataPolling(fetchFn, options) {
|
|
|
8793
9051
|
});
|
|
8794
9052
|
var fetchData = (0,external_react_.useCallback)(function () {
|
|
8795
9053
|
return hooks_awaiter(_this, void 0, void 0, function () {
|
|
8796
|
-
var currentAbort, retries, result, e_1;
|
|
9054
|
+
var currentAbort, retries, result, e_1, result, e_2;
|
|
8797
9055
|
return hooks_generator(this, function (_a) {
|
|
8798
9056
|
switch (_a.label) {
|
|
8799
9057
|
case 0:
|
|
@@ -8809,7 +9067,7 @@ function useDataPolling(fetchFn, options) {
|
|
|
8809
9067
|
setError(null);
|
|
8810
9068
|
_a.label = 1;
|
|
8811
9069
|
case 1:
|
|
8812
|
-
if (!(retries
|
|
9070
|
+
if (!(retries > 0 && !currentAbort.cancelled)) return [3 /*break*/, 9];
|
|
8813
9071
|
_a.label = 2;
|
|
8814
9072
|
case 2:
|
|
8815
9073
|
_a.trys.push([2, 4,, 8]);
|
|
@@ -8824,12 +9082,12 @@ function useDataPolling(fetchFn, options) {
|
|
|
8824
9082
|
case 4:
|
|
8825
9083
|
e_1 = _a.sent();
|
|
8826
9084
|
retries--;
|
|
8827
|
-
if (!(retries
|
|
9085
|
+
if (!(retries <= 0 || currentAbort.cancelled)) return [3 /*break*/, 5];
|
|
8828
9086
|
if (!currentAbort.cancelled) {
|
|
8829
9087
|
setError(e_1);
|
|
8830
9088
|
}
|
|
8831
9089
|
setLoading(false);
|
|
8832
|
-
return [
|
|
9090
|
+
return [2 /*return*/];
|
|
8833
9091
|
case 5:
|
|
8834
9092
|
return [4 /*yield*/, new Promise(function (resolve) {
|
|
8835
9093
|
return setTimeout(resolve, retryDelay);
|
|
@@ -8842,6 +9100,33 @@ function useDataPolling(fetchFn, options) {
|
|
|
8842
9100
|
case 8:
|
|
8843
9101
|
return [3 /*break*/, 1];
|
|
8844
9102
|
case 9:
|
|
9103
|
+
if (!(retryCount <= 0 && !currentAbort.cancelled)) return [3 /*break*/, 14];
|
|
9104
|
+
_a.label = 10;
|
|
9105
|
+
case 10:
|
|
9106
|
+
_a.trys.push([10, 12,, 13]);
|
|
9107
|
+
return [4 /*yield*/, fetchFn()];
|
|
9108
|
+
case 11:
|
|
9109
|
+
result = _a.sent();
|
|
9110
|
+
if (!currentAbort.cancelled) {
|
|
9111
|
+
setData(result);
|
|
9112
|
+
setLoading(false);
|
|
9113
|
+
}
|
|
9114
|
+
return [3 /*break*/, 13];
|
|
9115
|
+
case 12:
|
|
9116
|
+
e_2 = _a.sent();
|
|
9117
|
+
if (!currentAbort.cancelled) {
|
|
9118
|
+
setError(e_2);
|
|
9119
|
+
setLoading(false);
|
|
9120
|
+
}
|
|
9121
|
+
return [3 /*break*/, 13];
|
|
9122
|
+
case 13:
|
|
9123
|
+
return [2 /*return*/];
|
|
9124
|
+
case 14:
|
|
9125
|
+
// All retries exhausted without success (caught in loop already handled above)
|
|
9126
|
+
if (!currentAbort.cancelled) {
|
|
9127
|
+
setError(new Error('All retries failed'));
|
|
9128
|
+
setLoading(false);
|
|
9129
|
+
}
|
|
8845
9130
|
return [2 /*return*/];
|
|
8846
9131
|
}
|
|
8847
9132
|
});
|
|
@@ -9002,8 +9287,10 @@ function useChartTools(instance) {
|
|
|
9002
9287
|
// ============================================================================
|
|
9003
9288
|
// 导出
|
|
9004
9289
|
// ============================================================================
|
|
9005
|
-
var version = '1.
|
|
9006
|
-
|
|
9290
|
+
var version = '1.4.0';
|
|
9291
|
+
// 新增数据转换 hooks
|
|
9292
|
+
|
|
9293
|
+
/* harmony default export */ const hooks = ({
|
|
9007
9294
|
useChart: useChart,
|
|
9008
9295
|
useOption: useOption,
|
|
9009
9296
|
useResize: useResize,
|
|
@@ -9017,8 +9304,7 @@ var hooks = {
|
|
|
9017
9304
|
useFullscreen: useFullscreen,
|
|
9018
9305
|
useExport: useExport,
|
|
9019
9306
|
useChartTools: useChartTools
|
|
9020
|
-
};
|
|
9021
|
-
/* harmony default export */ const src_hooks = ((/* unused pure expression or super */ null && (hooks)));
|
|
9307
|
+
});
|
|
9022
9308
|
;// ./src/index.ts
|
|
9023
9309
|
/**
|
|
9024
9310
|
* TaroViz - 基于 Taro 和 ECharts 的多端图表组件库
|
|
@@ -9040,6 +9326,10 @@ var hooks = {
|
|
|
9040
9326
|
|
|
9041
9327
|
|
|
9042
9328
|
|
|
9329
|
+
// 新增图表组件
|
|
9330
|
+
|
|
9331
|
+
|
|
9332
|
+
|
|
9043
9333
|
// 适配器
|
|
9044
9334
|
|
|
9045
9335
|
|
|
@@ -9063,12 +9353,12 @@ var hooks = {
|
|
|
9063
9353
|
* 库信息
|
|
9064
9354
|
*/
|
|
9065
9355
|
var src_name = 'taroviz';
|
|
9066
|
-
var src_version = '1.
|
|
9067
|
-
export { AnnotationPresets, components_BaseChart as BaseChart, ErrorBoundary, LazyChartRegistry, PRESET_THEMES, editor_ThemeEditor as ThemeEditor, convertAnnotationToMarkArea, convertAnnotationToMarkLine, convertAnnotationToScatter, createCompositeAnnotation, createLazyChart, darkTheme, defaultTheme, exportChart, getDarkThemes, getLightThemes, getRegisteredThemes,
|
|
9356
|
+
var src_version = '1.4.0';
|
|
9357
|
+
export { AnnotationPresets, components_BaseChart as BaseChart, candlestick as CandlestickChart, ErrorBoundary, graph as GraphChart, LazyChartRegistry, PRESET_THEMES, editor_ThemeEditor as ThemeEditor, wordcloud as WordCloudChart, convertAnnotationToMarkArea, convertAnnotationToMarkLine, convertAnnotationToScatter, createCompositeAnnotation, createLazyChart, darkTheme, defaultTheme, exportChart, getDarkThemes, getLightThemes, getRegisteredThemes, getTheme, getThemeByName, getThemesByTag, src_name as name, preloadAllCharts, preloadChart, registerTheme, switchTheme, themeManager, useAnnotation, useChart, useChartData, useChartTheme, useChartTools, useDataPolling, useDataTransform, useEvents, useExport, useFullscreen, useLoading, useOption, useResize, useResponsive, useTableTransform, useThemeSwitcher, useTimeSeriesTransform, src_version as version, withErrorBoundary, withLazyLoad };
|
|
9068
9358
|
export const BarChart = bar["default"];
|
|
9069
9359
|
export const FunnelChart = funnel["default"];
|
|
9070
9360
|
export const GaugeChart = gauge["default"];
|
|
9071
|
-
export const H5Adapter = h5
|
|
9361
|
+
export const H5Adapter = h5["default"];
|
|
9072
9362
|
export const HeatmapChart = heatmap["default"];
|
|
9073
9363
|
export const LineChart = line["default"];
|
|
9074
9364
|
export const PieChart = pie["default"];
|
|
@@ -9077,7 +9367,7 @@ export const SankeyChart = sankey["default"];
|
|
|
9077
9367
|
export const ScatterChart = scatter["default"];
|
|
9078
9368
|
export const SunburstChart = sunburst["default"];
|
|
9079
9369
|
export const TreeMapChart = treemap["default"];
|
|
9080
|
-
export const WeappAdapter = weapp
|
|
9370
|
+
export const WeappAdapter = weapp["default"];
|
|
9081
9371
|
export const debounce = utils/* debounce */.sg;
|
|
9082
9372
|
export const deepMerge = utils/* deepMerge */.$N;
|
|
9083
9373
|
export const detectPlatform = adapters/* detectPlatform */.li;
|