@damoqiongqiu/ice-chart 0.17.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/LICENSE +21 -0
- package/README.md +530 -0
- package/dist/index.cjs +25 -0
- package/dist/index.mjs +25 -0
- package/dist/index.umd.js +25 -0
- package/dist/types/ICEChart.d.mts +330 -0
- package/dist/types/ICEChart.d.ts +330 -0
- package/dist/types/a11y.d.mts +85 -0
- package/dist/types/a11y.d.ts +85 -0
- package/dist/types/animation/motion.d.mts +11 -0
- package/dist/types/animation/motion.d.ts +11 -0
- package/dist/types/components/Axis.d.mts +60 -0
- package/dist/types/components/Axis.d.ts +60 -0
- package/dist/types/components/Brush.d.mts +19 -0
- package/dist/types/components/Brush.d.ts +19 -0
- package/dist/types/components/ChartComponent.d.mts +48 -0
- package/dist/types/components/ChartComponent.d.ts +48 -0
- package/dist/types/components/Crosshair.d.mts +40 -0
- package/dist/types/components/Crosshair.d.ts +40 -0
- package/dist/types/components/DataZoomSlider.d.mts +30 -0
- package/dist/types/components/DataZoomSlider.d.ts +30 -0
- package/dist/types/components/GridLines.d.mts +37 -0
- package/dist/types/components/GridLines.d.ts +37 -0
- package/dist/types/components/Highlight.d.mts +34 -0
- package/dist/types/components/Highlight.d.ts +34 -0
- package/dist/types/components/Legend.d.mts +26 -0
- package/dist/types/components/Legend.d.ts +26 -0
- package/dist/types/components/PlotArea.d.mts +21 -0
- package/dist/types/components/PlotArea.d.ts +21 -0
- package/dist/types/components/PolarGrid.d.mts +34 -0
- package/dist/types/components/PolarGrid.d.ts +34 -0
- package/dist/types/components/RadarGrid.d.mts +25 -0
- package/dist/types/components/RadarGrid.d.ts +25 -0
- package/dist/types/components/Title.d.mts +14 -0
- package/dist/types/components/Title.d.ts +14 -0
- package/dist/types/components/Tooltip.d.mts +48 -0
- package/dist/types/components/Tooltip.d.ts +48 -0
- package/dist/types/components/series/AreaSeries.d.mts +14 -0
- package/dist/types/components/series/AreaSeries.d.ts +14 -0
- package/dist/types/components/series/BarSeries.d.mts +39 -0
- package/dist/types/components/series/BarSeries.d.ts +39 -0
- package/dist/types/components/series/BoxplotSeries.d.mts +16 -0
- package/dist/types/components/series/BoxplotSeries.d.ts +16 -0
- package/dist/types/components/series/CandlestickSeries.d.mts +13 -0
- package/dist/types/components/series/CandlestickSeries.d.ts +13 -0
- package/dist/types/components/series/CurveSeriesBase.d.mts +58 -0
- package/dist/types/components/series/CurveSeriesBase.d.ts +58 -0
- package/dist/types/components/series/FunctionSeries.d.mts +22 -0
- package/dist/types/components/series/FunctionSeries.d.ts +22 -0
- package/dist/types/components/series/FunnelSeries.d.mts +38 -0
- package/dist/types/components/series/FunnelSeries.d.ts +38 -0
- package/dist/types/components/series/GaugeSeries.d.mts +45 -0
- package/dist/types/components/series/GaugeSeries.d.ts +45 -0
- package/dist/types/components/series/GraphSeries.d.mts +39 -0
- package/dist/types/components/series/GraphSeries.d.ts +39 -0
- package/dist/types/components/series/HeatmapSeries.d.mts +21 -0
- package/dist/types/components/series/HeatmapSeries.d.ts +21 -0
- package/dist/types/components/series/LineSeries.d.mts +31 -0
- package/dist/types/components/series/LineSeries.d.ts +31 -0
- package/dist/types/components/series/LiquidSeries.d.mts +55 -0
- package/dist/types/components/series/LiquidSeries.d.ts +55 -0
- package/dist/types/components/series/ParametricSeries.d.mts +30 -0
- package/dist/types/components/series/ParametricSeries.d.ts +30 -0
- package/dist/types/components/series/PieSeries.d.mts +44 -0
- package/dist/types/components/series/PieSeries.d.ts +44 -0
- package/dist/types/components/series/RadarSeries.d.mts +30 -0
- package/dist/types/components/series/RadarSeries.d.ts +30 -0
- package/dist/types/components/series/SankeySeries.d.mts +34 -0
- package/dist/types/components/series/SankeySeries.d.ts +34 -0
- package/dist/types/components/series/ScatterSeries.d.mts +11 -0
- package/dist/types/components/series/ScatterSeries.d.ts +11 -0
- package/dist/types/components/series/SeriesBase.d.mts +214 -0
- package/dist/types/components/series/SeriesBase.d.ts +214 -0
- package/dist/types/components/series/TreemapSeries.d.mts +48 -0
- package/dist/types/components/series/TreemapSeries.d.ts +48 -0
- package/dist/types/components/series/WaterfallSeries.d.mts +17 -0
- package/dist/types/components/series/WaterfallSeries.d.ts +17 -0
- package/dist/types/components/series/createSeries.d.mts +10 -0
- package/dist/types/components/series/createSeries.d.ts +10 -0
- package/dist/types/components/series/index.d.mts +29 -0
- package/dist/types/components/series/index.d.ts +29 -0
- package/dist/types/expr/diagnostics.d.mts +45 -0
- package/dist/types/expr/diagnostics.d.ts +45 -0
- package/dist/types/expr/expr.d.mts +44 -0
- package/dist/types/expr/expr.d.ts +44 -0
- package/dist/types/expr/sample.d.mts +34 -0
- package/dist/types/expr/sample.d.ts +34 -0
- package/dist/types/index.d.mts +80 -0
- package/dist/types/index.d.ts +80 -0
- package/dist/types/interaction/ChartLink.d.mts +16 -0
- package/dist/types/interaction/ChartLink.d.ts +16 -0
- package/dist/types/interaction/HitResolver.d.mts +44 -0
- package/dist/types/interaction/HitResolver.d.ts +44 -0
- package/dist/types/interaction/InteractionController.d.mts +147 -0
- package/dist/types/interaction/InteractionController.d.ts +147 -0
- package/dist/types/internal.d.mts +232 -0
- package/dist/types/internal.d.ts +232 -0
- package/dist/types/layout/force.d.mts +48 -0
- package/dist/types/layout/force.d.ts +48 -0
- package/dist/types/layout/layout.d.mts +9 -0
- package/dist/types/layout/layout.d.ts +9 -0
- package/dist/types/layout/sankey.d.mts +47 -0
- package/dist/types/layout/sankey.d.ts +47 -0
- package/dist/types/layout/treemap.d.mts +35 -0
- package/dist/types/layout/treemap.d.ts +35 -0
- package/dist/types/option/normalize.d.mts +68 -0
- package/dist/types/option/normalize.d.ts +68 -0
- package/dist/types/scale/BandScale.d.mts +36 -0
- package/dist/types/scale/BandScale.d.ts +36 -0
- package/dist/types/scale/LinearScale.d.mts +21 -0
- package/dist/types/scale/LinearScale.d.ts +21 -0
- package/dist/types/scale/LogScale.d.mts +24 -0
- package/dist/types/scale/LogScale.d.ts +24 -0
- package/dist/types/scale/Scale.d.mts +38 -0
- package/dist/types/scale/Scale.d.ts +38 -0
- package/dist/types/scale/TimeScale.d.mts +28 -0
- package/dist/types/scale/TimeScale.d.ts +28 -0
- package/dist/types/scale/format.d.mts +5 -0
- package/dist/types/scale/format.d.ts +5 -0
- package/dist/types/scale/index.d.mts +7 -0
- package/dist/types/scale/index.d.ts +7 -0
- package/dist/types/theme/chartTheme.d.mts +54 -0
- package/dist/types/theme/chartTheme.d.ts +54 -0
- package/dist/types/types.d.mts +689 -0
- package/dist/types/types.d.ts +689 -0
- package/dist/types/util/emitter.d.mts +11 -0
- package/dist/types/util/emitter.d.ts +11 -0
- package/dist/types/util/math.d.mts +14 -0
- package/dist/types/util/math.d.ts +14 -0
- package/dist/types/util/text.d.mts +10 -0
- package/dist/types/util/text.d.ts +10 -0
- package/package.json +100 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Rect } from '../internal.mjs';
|
|
2
|
+
import type { TreemapOption } from '../types.mjs';
|
|
3
|
+
export interface TreemapInputNode {
|
|
4
|
+
name: string;
|
|
5
|
+
value?: number;
|
|
6
|
+
children?: TreemapInputNode[];
|
|
7
|
+
color?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface TreemapNodeLayout {
|
|
10
|
+
/** 在扁平列表中的下标(命中判定返回它)。 */
|
|
11
|
+
id: number;
|
|
12
|
+
name: string;
|
|
13
|
+
depth: number;
|
|
14
|
+
parent: number;
|
|
15
|
+
/** 自身数值(有子节点时是子节点之和)。 */
|
|
16
|
+
value: number;
|
|
17
|
+
/** 占根总量比例(0~1)。 */
|
|
18
|
+
ratio: number;
|
|
19
|
+
rect: Rect;
|
|
20
|
+
/** 为「父节点标题带」预留的高度(0 表示没有标题带)。 */
|
|
21
|
+
header: number;
|
|
22
|
+
color: string;
|
|
23
|
+
hasChildren: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 矩形树图布局(squarified treemap)。
|
|
27
|
+
*
|
|
28
|
+
* 与 sankey 一样,这是「布局」而不是「坐标系」,因此做成纯函数:
|
|
29
|
+
* 输入层级数据与可用矩形,输出每个节点的矩形、颜色与层级;
|
|
30
|
+
* 绘制与命中判定消费同一份结果。
|
|
31
|
+
*
|
|
32
|
+
* squarified 的核心是「每一行都尽量接近正方形」:按数值降序贪心成行,
|
|
33
|
+
* 一旦加入下一个节点会让长宽比变差就换行,长宽比由此保持在可读范围内。
|
|
34
|
+
*/
|
|
35
|
+
export declare function layoutTreemap(data: TreemapInputNode[], rect: Rect, options?: TreemapOption, palette?: string[]): TreemapNodeLayout[];
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Rect } from '../internal';
|
|
2
|
+
import type { TreemapOption } from '../types';
|
|
3
|
+
export interface TreemapInputNode {
|
|
4
|
+
name: string;
|
|
5
|
+
value?: number;
|
|
6
|
+
children?: TreemapInputNode[];
|
|
7
|
+
color?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface TreemapNodeLayout {
|
|
10
|
+
/** 在扁平列表中的下标(命中判定返回它)。 */
|
|
11
|
+
id: number;
|
|
12
|
+
name: string;
|
|
13
|
+
depth: number;
|
|
14
|
+
parent: number;
|
|
15
|
+
/** 自身数值(有子节点时是子节点之和)。 */
|
|
16
|
+
value: number;
|
|
17
|
+
/** 占根总量比例(0~1)。 */
|
|
18
|
+
ratio: number;
|
|
19
|
+
rect: Rect;
|
|
20
|
+
/** 为「父节点标题带」预留的高度(0 表示没有标题带)。 */
|
|
21
|
+
header: number;
|
|
22
|
+
color: string;
|
|
23
|
+
hasChildren: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 矩形树图布局(squarified treemap)。
|
|
27
|
+
*
|
|
28
|
+
* 与 sankey 一样,这是「布局」而不是「坐标系」,因此做成纯函数:
|
|
29
|
+
* 输入层级数据与可用矩形,输出每个节点的矩形、颜色与层级;
|
|
30
|
+
* 绘制与命中判定消费同一份结果。
|
|
31
|
+
*
|
|
32
|
+
* squarified 的核心是「每一行都尽量接近正方形」:按数值降序贪心成行,
|
|
33
|
+
* 一旦加入下一个节点会让长宽比变差就换行,长宽比由此保持在可读范围内。
|
|
34
|
+
*/
|
|
35
|
+
export declare function layoutTreemap(data: TreemapInputNode[], rect: Rect, options?: TreemapOption, palette?: string[]): TreemapNodeLayout[];
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { AxisOption, ChartOption } from '../types.mjs';
|
|
2
|
+
import type { InternalSeries, NormalizedOption } from '../internal.mjs';
|
|
3
|
+
/** 入场 / 更新 / 交互反馈三段动画的默认值。 */
|
|
4
|
+
export declare const DEFAULT_ANIMATION_STAGES: {
|
|
5
|
+
enter: {
|
|
6
|
+
duration: number;
|
|
7
|
+
delay: number;
|
|
8
|
+
easing: string;
|
|
9
|
+
stagger: number;
|
|
10
|
+
};
|
|
11
|
+
update: {
|
|
12
|
+
duration: number;
|
|
13
|
+
delay: number;
|
|
14
|
+
easing: string;
|
|
15
|
+
stagger: number;
|
|
16
|
+
};
|
|
17
|
+
highlight: {
|
|
18
|
+
duration: number;
|
|
19
|
+
delay: number;
|
|
20
|
+
easing: string;
|
|
21
|
+
stagger: number;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* 归一化动画配置:
|
|
26
|
+
* - 支持 `animation: false` 一键关闭;
|
|
27
|
+
* - 支持扁平写法(duration / easing / stagger)等价于 `enter` 的配置;
|
|
28
|
+
* - `enter / update / highlight` 三段可以分别配置或用 `false` 单独关闭。
|
|
29
|
+
*/
|
|
30
|
+
export declare function normalizeAnimation(input: any): any;
|
|
31
|
+
export interface NormalizeContext {
|
|
32
|
+
hiddenIds?: Record<string, boolean>;
|
|
33
|
+
/** 被隐藏的扇区(饼图),key 为 `seriesId#dataIndex`。 */
|
|
34
|
+
hiddenSlices?: Record<string, boolean>;
|
|
35
|
+
/** 当前 x 数据域(数据缩放后)。不传表示自动。 */
|
|
36
|
+
xDomain?: [any, any] | null;
|
|
37
|
+
/** 主 y 轴的数据域(缩放后),等价于 yDomains[0]。 */
|
|
38
|
+
yDomain?: [number, number] | null;
|
|
39
|
+
/** 每个 y 轴的数据域(多轴时按 index 区分)。 */
|
|
40
|
+
yDomains?: Array<[number, number] | null>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 把用户 option 归一化成内部结构:数据点、坐标轴类型、数据域、堆叠基线。
|
|
44
|
+
*
|
|
45
|
+
* 这一步是纯计算、无副作用、不依赖 DOM / ctx,因此可以被完整单测覆盖。
|
|
46
|
+
*/
|
|
47
|
+
export declare function normalizeOption(option: ChartOption, context?: NormalizeContext): NormalizedOption;
|
|
48
|
+
/** 是否为横向排布:声明了类目 y 轴(type: 'category' 或给了 data),而 x 轴不是类目轴。 */
|
|
49
|
+
export declare function isHorizontalLayout(xAxis: AxisOption, yAxis: AxisOption): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* 类目轴上的类目列表:
|
|
52
|
+
* 1. 轴自己声明的 data(ECharts 写法,横向柱状图常用);
|
|
53
|
+
* 2. 否则从数据项推导 —— 对象数据的 name、或 xValue(我们内部统一用 xValue 存「类目」这一维)。
|
|
54
|
+
*/
|
|
55
|
+
export declare function buildCategoryValues(option: AxisOption, series: InternalSeries[]): any[];
|
|
56
|
+
/**
|
|
57
|
+
* 把轴上声明的类目按**下标**回填到数据点。
|
|
58
|
+
*
|
|
59
|
+
* 只在「数据点没有自带类目」时回填(默认 xValue === index),
|
|
60
|
+
* 这样 `{name:'A', value:1}` 这类自带类目的数据不会被覆盖。
|
|
61
|
+
*/
|
|
62
|
+
export declare function applyAxisCategories(axis: AxisOption, series: InternalSeries[]): void;
|
|
63
|
+
/** 箱线图:原始观测值 → [min, Q1, median, Q3, max](五数概括)。 */
|
|
64
|
+
/** 矩形树图节点的数值:有子节点时取子节点之和。 */
|
|
65
|
+
export declare function treemapNodeValue(node: any): number;
|
|
66
|
+
export declare function computeBoxplotSummary(values: number[]): [number, number, number, number, number];
|
|
67
|
+
/** 从 option 里剔除函数与 undefined,得到可 JSON 序列化的配置。 */
|
|
68
|
+
export declare function toSerializableOption(option: any): any;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { AxisOption, ChartOption } from '../types';
|
|
2
|
+
import type { InternalSeries, NormalizedOption } from '../internal';
|
|
3
|
+
/** 入场 / 更新 / 交互反馈三段动画的默认值。 */
|
|
4
|
+
export declare const DEFAULT_ANIMATION_STAGES: {
|
|
5
|
+
enter: {
|
|
6
|
+
duration: number;
|
|
7
|
+
delay: number;
|
|
8
|
+
easing: string;
|
|
9
|
+
stagger: number;
|
|
10
|
+
};
|
|
11
|
+
update: {
|
|
12
|
+
duration: number;
|
|
13
|
+
delay: number;
|
|
14
|
+
easing: string;
|
|
15
|
+
stagger: number;
|
|
16
|
+
};
|
|
17
|
+
highlight: {
|
|
18
|
+
duration: number;
|
|
19
|
+
delay: number;
|
|
20
|
+
easing: string;
|
|
21
|
+
stagger: number;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* 归一化动画配置:
|
|
26
|
+
* - 支持 `animation: false` 一键关闭;
|
|
27
|
+
* - 支持扁平写法(duration / easing / stagger)等价于 `enter` 的配置;
|
|
28
|
+
* - `enter / update / highlight` 三段可以分别配置或用 `false` 单独关闭。
|
|
29
|
+
*/
|
|
30
|
+
export declare function normalizeAnimation(input: any): any;
|
|
31
|
+
export interface NormalizeContext {
|
|
32
|
+
hiddenIds?: Record<string, boolean>;
|
|
33
|
+
/** 被隐藏的扇区(饼图),key 为 `seriesId#dataIndex`。 */
|
|
34
|
+
hiddenSlices?: Record<string, boolean>;
|
|
35
|
+
/** 当前 x 数据域(数据缩放后)。不传表示自动。 */
|
|
36
|
+
xDomain?: [any, any] | null;
|
|
37
|
+
/** 主 y 轴的数据域(缩放后),等价于 yDomains[0]。 */
|
|
38
|
+
yDomain?: [number, number] | null;
|
|
39
|
+
/** 每个 y 轴的数据域(多轴时按 index 区分)。 */
|
|
40
|
+
yDomains?: Array<[number, number] | null>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 把用户 option 归一化成内部结构:数据点、坐标轴类型、数据域、堆叠基线。
|
|
44
|
+
*
|
|
45
|
+
* 这一步是纯计算、无副作用、不依赖 DOM / ctx,因此可以被完整单测覆盖。
|
|
46
|
+
*/
|
|
47
|
+
export declare function normalizeOption(option: ChartOption, context?: NormalizeContext): NormalizedOption;
|
|
48
|
+
/** 是否为横向排布:声明了类目 y 轴(type: 'category' 或给了 data),而 x 轴不是类目轴。 */
|
|
49
|
+
export declare function isHorizontalLayout(xAxis: AxisOption, yAxis: AxisOption): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* 类目轴上的类目列表:
|
|
52
|
+
* 1. 轴自己声明的 data(ECharts 写法,横向柱状图常用);
|
|
53
|
+
* 2. 否则从数据项推导 —— 对象数据的 name、或 xValue(我们内部统一用 xValue 存「类目」这一维)。
|
|
54
|
+
*/
|
|
55
|
+
export declare function buildCategoryValues(option: AxisOption, series: InternalSeries[]): any[];
|
|
56
|
+
/**
|
|
57
|
+
* 把轴上声明的类目按**下标**回填到数据点。
|
|
58
|
+
*
|
|
59
|
+
* 只在「数据点没有自带类目」时回填(默认 xValue === index),
|
|
60
|
+
* 这样 `{name:'A', value:1}` 这类自带类目的数据不会被覆盖。
|
|
61
|
+
*/
|
|
62
|
+
export declare function applyAxisCategories(axis: AxisOption, series: InternalSeries[]): void;
|
|
63
|
+
/** 箱线图:原始观测值 → [min, Q1, median, Q3, max](五数概括)。 */
|
|
64
|
+
/** 矩形树图节点的数值:有子节点时取子节点之和。 */
|
|
65
|
+
export declare function treemapNodeValue(node: any): number;
|
|
66
|
+
export declare function computeBoxplotSummary(values: number[]): [number, number, number, number, number];
|
|
67
|
+
/** 从 option 里剔除函数与 undefined,得到可 JSON 序列化的配置。 */
|
|
68
|
+
export declare function toSerializableOption(option: any): any;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Scale } from './Scale.mjs';
|
|
2
|
+
import type { CreateScaleOptions } from './Scale.mjs';
|
|
3
|
+
/**
|
|
4
|
+
* 类目(band)比例尺。
|
|
5
|
+
*
|
|
6
|
+
* 单位约定:`map(category)` 返回 band 的**中心**(折线点 / 散点用),
|
|
7
|
+
* `bandStart(category)` 返回 band 起点(柱形用)。这与 d3.scaleBand + 手动取中心的写法一致,
|
|
8
|
+
* 但避免了「柱子和折线对不上」的经典偏移 bug。
|
|
9
|
+
*/
|
|
10
|
+
export declare class BandScale implements Scale {
|
|
11
|
+
readonly type: "category";
|
|
12
|
+
domain: any[];
|
|
13
|
+
range: [number, number];
|
|
14
|
+
private paddingInner;
|
|
15
|
+
private paddingOuter;
|
|
16
|
+
private _step;
|
|
17
|
+
constructor(domain: any[], range: [number, number], options?: CreateScaleOptions);
|
|
18
|
+
private computeStep;
|
|
19
|
+
private indexOf;
|
|
20
|
+
map(value: any): number;
|
|
21
|
+
bandStart(value: any, index?: number): number;
|
|
22
|
+
bandwidth(): number;
|
|
23
|
+
step(): number;
|
|
24
|
+
isBand(): boolean;
|
|
25
|
+
ticks(): any[];
|
|
26
|
+
indexAt(pixel: number): number;
|
|
27
|
+
/** 类目轴的反向查找:优先返回命中的类目,否则返回最近的类目(便于 axis 触发器的「最近列」语义)。 */
|
|
28
|
+
invert(pixel: number): any;
|
|
29
|
+
/** 最近类目下标:命中带内直接返回,否则返回最近的(轴提示器需要)。 */
|
|
30
|
+
nearestIndex(pixel: number): number;
|
|
31
|
+
fractionOf(value: any): number;
|
|
32
|
+
valueAtFraction(fraction: number): any;
|
|
33
|
+
span(): number;
|
|
34
|
+
format(value: any): string;
|
|
35
|
+
clone(): BandScale;
|
|
36
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Scale } from './Scale';
|
|
2
|
+
import type { CreateScaleOptions } from './Scale';
|
|
3
|
+
/**
|
|
4
|
+
* 类目(band)比例尺。
|
|
5
|
+
*
|
|
6
|
+
* 单位约定:`map(category)` 返回 band 的**中心**(折线点 / 散点用),
|
|
7
|
+
* `bandStart(category)` 返回 band 起点(柱形用)。这与 d3.scaleBand + 手动取中心的写法一致,
|
|
8
|
+
* 但避免了「柱子和折线对不上」的经典偏移 bug。
|
|
9
|
+
*/
|
|
10
|
+
export declare class BandScale implements Scale {
|
|
11
|
+
readonly type: "category";
|
|
12
|
+
domain: any[];
|
|
13
|
+
range: [number, number];
|
|
14
|
+
private paddingInner;
|
|
15
|
+
private paddingOuter;
|
|
16
|
+
private _step;
|
|
17
|
+
constructor(domain: any[], range: [number, number], options?: CreateScaleOptions);
|
|
18
|
+
private computeStep;
|
|
19
|
+
private indexOf;
|
|
20
|
+
map(value: any): number;
|
|
21
|
+
bandStart(value: any, index?: number): number;
|
|
22
|
+
bandwidth(): number;
|
|
23
|
+
step(): number;
|
|
24
|
+
isBand(): boolean;
|
|
25
|
+
ticks(): any[];
|
|
26
|
+
indexAt(pixel: number): number;
|
|
27
|
+
/** 类目轴的反向查找:优先返回命中的类目,否则返回最近的类目(便于 axis 触发器的「最近列」语义)。 */
|
|
28
|
+
invert(pixel: number): any;
|
|
29
|
+
/** 最近类目下标:命中带内直接返回,否则返回最近的(轴提示器需要)。 */
|
|
30
|
+
nearestIndex(pixel: number): number;
|
|
31
|
+
fractionOf(value: any): number;
|
|
32
|
+
valueAtFraction(fraction: number): any;
|
|
33
|
+
span(): number;
|
|
34
|
+
format(value: any): string;
|
|
35
|
+
clone(): BandScale;
|
|
36
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Scale } from './Scale.mjs';
|
|
2
|
+
/** 连续数值比例尺。 */
|
|
3
|
+
export declare class LinearScale implements Scale {
|
|
4
|
+
readonly type: "linear";
|
|
5
|
+
domain: [number, number];
|
|
6
|
+
range: [number, number];
|
|
7
|
+
constructor(domain: [number, number], range: [number, number]);
|
|
8
|
+
map(value: any): number;
|
|
9
|
+
invert(pixel: number): number;
|
|
10
|
+
ticks(count?: number): number[];
|
|
11
|
+
bandwidth(): number;
|
|
12
|
+
bandStart(value: any): number;
|
|
13
|
+
step(): number;
|
|
14
|
+
isBand(): boolean;
|
|
15
|
+
indexAt(_pixel: number): number;
|
|
16
|
+
fractionOf(value: any): number;
|
|
17
|
+
valueAtFraction(fraction: number): number;
|
|
18
|
+
span(): number;
|
|
19
|
+
format(value: any, _index: number): string;
|
|
20
|
+
clone(): LinearScale;
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Scale } from './Scale';
|
|
2
|
+
/** 连续数值比例尺。 */
|
|
3
|
+
export declare class LinearScale implements Scale {
|
|
4
|
+
readonly type: "linear";
|
|
5
|
+
domain: [number, number];
|
|
6
|
+
range: [number, number];
|
|
7
|
+
constructor(domain: [number, number], range: [number, number]);
|
|
8
|
+
map(value: any): number;
|
|
9
|
+
invert(pixel: number): number;
|
|
10
|
+
ticks(count?: number): number[];
|
|
11
|
+
bandwidth(): number;
|
|
12
|
+
bandStart(value: any): number;
|
|
13
|
+
step(): number;
|
|
14
|
+
isBand(): boolean;
|
|
15
|
+
indexAt(_pixel: number): number;
|
|
16
|
+
fractionOf(value: any): number;
|
|
17
|
+
valueAtFraction(fraction: number): number;
|
|
18
|
+
span(): number;
|
|
19
|
+
format(value: any, _index: number): string;
|
|
20
|
+
clone(): LinearScale;
|
|
21
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Scale } from './Scale.mjs';
|
|
2
|
+
import type { CreateScaleOptions } from './Scale.mjs';
|
|
3
|
+
/** 对数比例尺(数据域必须为正数)。 */
|
|
4
|
+
export declare class LogScale implements Scale {
|
|
5
|
+
readonly type: "log";
|
|
6
|
+
domain: [number, number];
|
|
7
|
+
range: [number, number];
|
|
8
|
+
base: number;
|
|
9
|
+
constructor(domain: [number, number], range: [number, number], options?: CreateScaleOptions);
|
|
10
|
+
private log;
|
|
11
|
+
map(value: any): number;
|
|
12
|
+
invert(pixel: number): number;
|
|
13
|
+
ticks(count?: number): number[];
|
|
14
|
+
bandwidth(): number;
|
|
15
|
+
bandStart(value: any): number;
|
|
16
|
+
step(): number;
|
|
17
|
+
isBand(): boolean;
|
|
18
|
+
indexAt(_pixel: number): number;
|
|
19
|
+
fractionOf(value: any): number;
|
|
20
|
+
valueAtFraction(fraction: number): number;
|
|
21
|
+
span(): number;
|
|
22
|
+
format(value: any, _index: number): string;
|
|
23
|
+
clone(): LogScale;
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Scale } from './Scale';
|
|
2
|
+
import type { CreateScaleOptions } from './Scale';
|
|
3
|
+
/** 对数比例尺(数据域必须为正数)。 */
|
|
4
|
+
export declare class LogScale implements Scale {
|
|
5
|
+
readonly type: "log";
|
|
6
|
+
domain: [number, number];
|
|
7
|
+
range: [number, number];
|
|
8
|
+
base: number;
|
|
9
|
+
constructor(domain: [number, number], range: [number, number], options?: CreateScaleOptions);
|
|
10
|
+
private log;
|
|
11
|
+
map(value: any): number;
|
|
12
|
+
invert(pixel: number): number;
|
|
13
|
+
ticks(count?: number): number[];
|
|
14
|
+
bandwidth(): number;
|
|
15
|
+
bandStart(value: any): number;
|
|
16
|
+
step(): number;
|
|
17
|
+
isBand(): boolean;
|
|
18
|
+
indexAt(_pixel: number): number;
|
|
19
|
+
fractionOf(value: any): number;
|
|
20
|
+
valueAtFraction(fraction: number): number;
|
|
21
|
+
span(): number;
|
|
22
|
+
format(value: any, _index: number): string;
|
|
23
|
+
clone(): LogScale;
|
|
24
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ScaleType } from '../types.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* 比例尺:数据域 ↔ 像素域的唯一换算入口。
|
|
4
|
+
*
|
|
5
|
+
* 与 d3-scale 的取舍:只保留图表真正需要的部分(band / linear / time / log),
|
|
6
|
+
* 不引入运行时依赖。`fractionOf / valueAtFraction` 是**跨图联动**的基础:
|
|
7
|
+
* 不同图表尺寸不同,但同一个数值对应的 0~1 比例是稳定的。
|
|
8
|
+
*/
|
|
9
|
+
export interface Scale {
|
|
10
|
+
readonly type: ScaleType;
|
|
11
|
+
domain: any[];
|
|
12
|
+
range: [number, number];
|
|
13
|
+
map(value: any): number;
|
|
14
|
+
invert(pixel: number): any;
|
|
15
|
+
ticks(count?: number): any[];
|
|
16
|
+
bandwidth(): number;
|
|
17
|
+
/** 类目轴上单个类目带的起点;非类目轴返回 map(value)。 */
|
|
18
|
+
bandStart(value: any, index?: number): number;
|
|
19
|
+
step(): number;
|
|
20
|
+
isBand(): boolean;
|
|
21
|
+
/** 像素落在哪个类目带内;-1 表示不在任何带内。非类目轴恒为 -1。 */
|
|
22
|
+
indexAt(pixel: number): number;
|
|
23
|
+
fractionOf(value: any): number;
|
|
24
|
+
valueAtFraction(fraction: number): any;
|
|
25
|
+
/** 数据域跨度(类目轴为类目数,数值轴为 max-min)。 */
|
|
26
|
+
span(): number;
|
|
27
|
+
/** 轴标签的默认格式化。 */
|
|
28
|
+
format(value: any, index: number): string;
|
|
29
|
+
clone(): Scale;
|
|
30
|
+
}
|
|
31
|
+
export interface CreateScaleOptions {
|
|
32
|
+
paddingInner?: number;
|
|
33
|
+
paddingOuter?: number;
|
|
34
|
+
logBase?: number;
|
|
35
|
+
/** 时间刻度的期望数量。 */
|
|
36
|
+
tickCount?: number;
|
|
37
|
+
}
|
|
38
|
+
export declare function createScale(type: ScaleType, domain: any[], range: [number, number], options?: CreateScaleOptions): Scale;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ScaleType } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* 比例尺:数据域 ↔ 像素域的唯一换算入口。
|
|
4
|
+
*
|
|
5
|
+
* 与 d3-scale 的取舍:只保留图表真正需要的部分(band / linear / time / log),
|
|
6
|
+
* 不引入运行时依赖。`fractionOf / valueAtFraction` 是**跨图联动**的基础:
|
|
7
|
+
* 不同图表尺寸不同,但同一个数值对应的 0~1 比例是稳定的。
|
|
8
|
+
*/
|
|
9
|
+
export interface Scale {
|
|
10
|
+
readonly type: ScaleType;
|
|
11
|
+
domain: any[];
|
|
12
|
+
range: [number, number];
|
|
13
|
+
map(value: any): number;
|
|
14
|
+
invert(pixel: number): any;
|
|
15
|
+
ticks(count?: number): any[];
|
|
16
|
+
bandwidth(): number;
|
|
17
|
+
/** 类目轴上单个类目带的起点;非类目轴返回 map(value)。 */
|
|
18
|
+
bandStart(value: any, index?: number): number;
|
|
19
|
+
step(): number;
|
|
20
|
+
isBand(): boolean;
|
|
21
|
+
/** 像素落在哪个类目带内;-1 表示不在任何带内。非类目轴恒为 -1。 */
|
|
22
|
+
indexAt(pixel: number): number;
|
|
23
|
+
fractionOf(value: any): number;
|
|
24
|
+
valueAtFraction(fraction: number): any;
|
|
25
|
+
/** 数据域跨度(类目轴为类目数,数值轴为 max-min)。 */
|
|
26
|
+
span(): number;
|
|
27
|
+
/** 轴标签的默认格式化。 */
|
|
28
|
+
format(value: any, index: number): string;
|
|
29
|
+
clone(): Scale;
|
|
30
|
+
}
|
|
31
|
+
export interface CreateScaleOptions {
|
|
32
|
+
paddingInner?: number;
|
|
33
|
+
paddingOuter?: number;
|
|
34
|
+
logBase?: number;
|
|
35
|
+
/** 时间刻度的期望数量。 */
|
|
36
|
+
tickCount?: number;
|
|
37
|
+
}
|
|
38
|
+
export declare function createScale(type: ScaleType, domain: any[], range: [number, number], options?: CreateScaleOptions): Scale;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Scale } from './Scale.mjs';
|
|
2
|
+
import type { CreateScaleOptions } from './Scale.mjs';
|
|
3
|
+
type TimeUnit = 'ms' | 's' | 'm' | 'h' | 'd' | 'mo' | 'y';
|
|
4
|
+
/** 时间轴标签格式:粒度越粗,展示的单位越大。 */
|
|
5
|
+
export declare function formatTime(timestamp: number, unit: TimeUnit, span: number): string;
|
|
6
|
+
/** 时间比例尺:数据域用时间戳(number)表示。 */
|
|
7
|
+
export declare class TimeScale implements Scale {
|
|
8
|
+
readonly type: "time";
|
|
9
|
+
domain: [number, number];
|
|
10
|
+
range: [number, number];
|
|
11
|
+
constructor(domain: [number, number], range: [number, number], _options?: CreateScaleOptions);
|
|
12
|
+
map(value: any): number;
|
|
13
|
+
invert(pixel: number): number;
|
|
14
|
+
private pickInterval;
|
|
15
|
+
ticks(count?: number): number[];
|
|
16
|
+
bandwidth(): number;
|
|
17
|
+
bandStart(value: any): number;
|
|
18
|
+
step(): number;
|
|
19
|
+
isBand(): boolean;
|
|
20
|
+
indexAt(_pixel: number): number;
|
|
21
|
+
fractionOf(value: any): number;
|
|
22
|
+
valueAtFraction(fraction: number): number;
|
|
23
|
+
span(): number;
|
|
24
|
+
format(value: any, _index: number): string;
|
|
25
|
+
clone(): TimeScale;
|
|
26
|
+
}
|
|
27
|
+
export declare function toTimestamp(value: any): number;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Scale } from './Scale';
|
|
2
|
+
import type { CreateScaleOptions } from './Scale';
|
|
3
|
+
type TimeUnit = 'ms' | 's' | 'm' | 'h' | 'd' | 'mo' | 'y';
|
|
4
|
+
/** 时间轴标签格式:粒度越粗,展示的单位越大。 */
|
|
5
|
+
export declare function formatTime(timestamp: number, unit: TimeUnit, span: number): string;
|
|
6
|
+
/** 时间比例尺:数据域用时间戳(number)表示。 */
|
|
7
|
+
export declare class TimeScale implements Scale {
|
|
8
|
+
readonly type: "time";
|
|
9
|
+
domain: [number, number];
|
|
10
|
+
range: [number, number];
|
|
11
|
+
constructor(domain: [number, number], range: [number, number], _options?: CreateScaleOptions);
|
|
12
|
+
map(value: any): number;
|
|
13
|
+
invert(pixel: number): number;
|
|
14
|
+
private pickInterval;
|
|
15
|
+
ticks(count?: number): number[];
|
|
16
|
+
bandwidth(): number;
|
|
17
|
+
bandStart(value: any): number;
|
|
18
|
+
step(): number;
|
|
19
|
+
isBand(): boolean;
|
|
20
|
+
indexAt(_pixel: number): number;
|
|
21
|
+
fractionOf(value: any): number;
|
|
22
|
+
valueAtFraction(fraction: number): number;
|
|
23
|
+
span(): number;
|
|
24
|
+
format(value: any, _index: number): string;
|
|
25
|
+
clone(): TimeScale;
|
|
26
|
+
}
|
|
27
|
+
export declare function toTimestamp(value: any): number;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Scale } from './Scale.mjs';
|
|
2
|
+
/** 数值轴的默认标签格式(按步长自适应精度)。 */
|
|
3
|
+
export declare function formatNumberTick(value: number, step: number): string;
|
|
4
|
+
/** 轴标签格式化:优先用用户的 formatter,其次按比例尺类型自适应。 */
|
|
5
|
+
export declare function formatTick(value: any, scale: Scale, index: number, formatter?: (v: any, i: number) => string): string;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Scale } from './Scale';
|
|
2
|
+
/** 数值轴的默认标签格式(按步长自适应精度)。 */
|
|
3
|
+
export declare function formatNumberTick(value: number, step: number): string;
|
|
4
|
+
/** 轴标签格式化:优先用用户的 formatter,其次按比例尺类型自适应。 */
|
|
5
|
+
export declare function formatTick(value: any, scale: Scale, index: number, formatter?: (v: any, i: number) => string): string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { Scale, CreateScaleOptions } from './Scale.mjs';
|
|
2
|
+
export { createScale } from './Scale.mjs';
|
|
3
|
+
export { formatTick, formatNumberTick } from './format.mjs';
|
|
4
|
+
export { LinearScale } from './LinearScale.mjs';
|
|
5
|
+
export { BandScale } from './BandScale.mjs';
|
|
6
|
+
export { TimeScale } from './TimeScale.mjs';
|
|
7
|
+
export { LogScale } from './LogScale.mjs';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { Scale, CreateScaleOptions } from './Scale';
|
|
2
|
+
export { createScale } from './Scale';
|
|
3
|
+
export { formatTick, formatNumberTick } from './format';
|
|
4
|
+
export { LinearScale } from './LinearScale';
|
|
5
|
+
export { BandScale } from './BandScale';
|
|
6
|
+
export { TimeScale } from './TimeScale';
|
|
7
|
+
export { LogScale } from './LogScale';
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { ChartTheme } from '../types.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* 主题基调:**Bootstrap 5**。
|
|
4
|
+
*
|
|
5
|
+
* 取的是 Bootstrap 官方调色板与设计变量(primary/secondary/success/danger/warning/info、
|
|
6
|
+
* gray-100~900、`$border-radius: .375rem`、系统字体栈),这样图表放在 Bootstrap 页面里
|
|
7
|
+
* 与按钮、卡片、表格是同一套视觉语言,不需要额外对齐色板。
|
|
8
|
+
*
|
|
9
|
+
* 说明:`colorPalette` 的前几位刻意排成「primary → success → danger → info → indigo」,
|
|
10
|
+
* 把低对比度的 `warning` 黄往后放 —— 折线/散点用黄色在浅色底上辨识度差,
|
|
11
|
+
* 但作为第 6 个系列色出现时是安全的。
|
|
12
|
+
*/
|
|
13
|
+
/** Bootstrap 5 调色板(官方 hex 值)。 */
|
|
14
|
+
export declare const BOOTSTRAP_TOKENS: {
|
|
15
|
+
readonly primary: "#0D6EFD";
|
|
16
|
+
readonly secondary: "#6C757D";
|
|
17
|
+
readonly success: "#198754";
|
|
18
|
+
readonly danger: "#DC3545";
|
|
19
|
+
readonly warning: "#FFC107";
|
|
20
|
+
readonly info: "#0DCAF0";
|
|
21
|
+
readonly light: "#F8F9FA";
|
|
22
|
+
readonly dark: "#212529";
|
|
23
|
+
readonly indigo: "#6610F2";
|
|
24
|
+
readonly purple: "#6F42C1";
|
|
25
|
+
readonly pink: "#D63384";
|
|
26
|
+
readonly orange: "#FD7E14";
|
|
27
|
+
readonly teal: "#20C997";
|
|
28
|
+
readonly cyan: "#0DCAF0";
|
|
29
|
+
readonly gray: {
|
|
30
|
+
readonly 100: "#F8F9FA";
|
|
31
|
+
readonly 200: "#E9ECEF";
|
|
32
|
+
readonly 300: "#DEE2E6";
|
|
33
|
+
readonly 400: "#CED4DA";
|
|
34
|
+
readonly 500: "#ADB5BD";
|
|
35
|
+
readonly 600: "#6C757D";
|
|
36
|
+
readonly 700: "#495057";
|
|
37
|
+
readonly 800: "#343A40";
|
|
38
|
+
readonly 900: "#212529";
|
|
39
|
+
};
|
|
40
|
+
/** Bootstrap 的 --bs-body-font-family。 */
|
|
41
|
+
readonly fontFamily: "system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"PingFang SC\", \"Microsoft YaHei\", sans-serif";
|
|
42
|
+
/** --bs-border-radius */
|
|
43
|
+
readonly radius: 6;
|
|
44
|
+
};
|
|
45
|
+
/** 亮色主题(Bootstrap 默认外观)。 */
|
|
46
|
+
export declare const BOOTSTRAP_CHART_THEME: ChartTheme;
|
|
47
|
+
/** 暗色主题(Bootstrap 5 `data-bs-theme="dark"` 的中性灰基调)。 */
|
|
48
|
+
export declare const BOOTSTRAP_DARK_CHART_THEME: ChartTheme;
|
|
49
|
+
/** 兼容旧名字:light 主题现在就是 Bootstrap 主题。 */
|
|
50
|
+
export declare const LIGHT_CHART_THEME: ChartTheme;
|
|
51
|
+
/** 兼容旧名字:dark 主题。 */
|
|
52
|
+
export declare const DARK_CHART_THEME: ChartTheme;
|
|
53
|
+
/** 解析主题:'light'(默认,Bootstrap)/ 'dark' / 'auto' / 自定义片段(浅合并到亮色主题)。 */
|
|
54
|
+
export declare function resolveChartTheme(theme: ChartTheme | 'light' | 'dark' | 'auto' | Partial<ChartTheme> | undefined): ChartTheme;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { ChartTheme } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* 主题基调:**Bootstrap 5**。
|
|
4
|
+
*
|
|
5
|
+
* 取的是 Bootstrap 官方调色板与设计变量(primary/secondary/success/danger/warning/info、
|
|
6
|
+
* gray-100~900、`$border-radius: .375rem`、系统字体栈),这样图表放在 Bootstrap 页面里
|
|
7
|
+
* 与按钮、卡片、表格是同一套视觉语言,不需要额外对齐色板。
|
|
8
|
+
*
|
|
9
|
+
* 说明:`colorPalette` 的前几位刻意排成「primary → success → danger → info → indigo」,
|
|
10
|
+
* 把低对比度的 `warning` 黄往后放 —— 折线/散点用黄色在浅色底上辨识度差,
|
|
11
|
+
* 但作为第 6 个系列色出现时是安全的。
|
|
12
|
+
*/
|
|
13
|
+
/** Bootstrap 5 调色板(官方 hex 值)。 */
|
|
14
|
+
export declare const BOOTSTRAP_TOKENS: {
|
|
15
|
+
readonly primary: "#0D6EFD";
|
|
16
|
+
readonly secondary: "#6C757D";
|
|
17
|
+
readonly success: "#198754";
|
|
18
|
+
readonly danger: "#DC3545";
|
|
19
|
+
readonly warning: "#FFC107";
|
|
20
|
+
readonly info: "#0DCAF0";
|
|
21
|
+
readonly light: "#F8F9FA";
|
|
22
|
+
readonly dark: "#212529";
|
|
23
|
+
readonly indigo: "#6610F2";
|
|
24
|
+
readonly purple: "#6F42C1";
|
|
25
|
+
readonly pink: "#D63384";
|
|
26
|
+
readonly orange: "#FD7E14";
|
|
27
|
+
readonly teal: "#20C997";
|
|
28
|
+
readonly cyan: "#0DCAF0";
|
|
29
|
+
readonly gray: {
|
|
30
|
+
readonly 100: "#F8F9FA";
|
|
31
|
+
readonly 200: "#E9ECEF";
|
|
32
|
+
readonly 300: "#DEE2E6";
|
|
33
|
+
readonly 400: "#CED4DA";
|
|
34
|
+
readonly 500: "#ADB5BD";
|
|
35
|
+
readonly 600: "#6C757D";
|
|
36
|
+
readonly 700: "#495057";
|
|
37
|
+
readonly 800: "#343A40";
|
|
38
|
+
readonly 900: "#212529";
|
|
39
|
+
};
|
|
40
|
+
/** Bootstrap 的 --bs-body-font-family。 */
|
|
41
|
+
readonly fontFamily: "system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"PingFang SC\", \"Microsoft YaHei\", sans-serif";
|
|
42
|
+
/** --bs-border-radius */
|
|
43
|
+
readonly radius: 6;
|
|
44
|
+
};
|
|
45
|
+
/** 亮色主题(Bootstrap 默认外观)。 */
|
|
46
|
+
export declare const BOOTSTRAP_CHART_THEME: ChartTheme;
|
|
47
|
+
/** 暗色主题(Bootstrap 5 `data-bs-theme="dark"` 的中性灰基调)。 */
|
|
48
|
+
export declare const BOOTSTRAP_DARK_CHART_THEME: ChartTheme;
|
|
49
|
+
/** 兼容旧名字:light 主题现在就是 Bootstrap 主题。 */
|
|
50
|
+
export declare const LIGHT_CHART_THEME: ChartTheme;
|
|
51
|
+
/** 兼容旧名字:dark 主题。 */
|
|
52
|
+
export declare const DARK_CHART_THEME: ChartTheme;
|
|
53
|
+
/** 解析主题:'light'(默认,Bootstrap)/ 'dark' / 'auto' / 自定义片段(浅合并到亮色主题)。 */
|
|
54
|
+
export declare function resolveChartTheme(theme: ChartTheme | 'light' | 'dark' | 'auto' | Partial<ChartTheme> | undefined): ChartTheme;
|