UNPKG

7.88 kBTypeScriptView Raw
1/** 获得 ticks 的方法 */
2export type TickMethod<T = number> = (min: T, max: T, n?: number, ...rest: any[]) => T[];
3/** nice domain 的方法 */
4export type NiceMethod<T = number> = TickMethod<T>;
5/** 插值器工厂 */
6export type Interpolate<T = number> = (a: T, b: T) => (t: number) => T;
7/** 插值器函数 */
8export type Interpolator = (t: number) => any;
9/** 所有支持的插值器工厂 */
10export type Interpolates = Interpolate<number> | Interpolate<string> | Interpolate<number | string>;
11/** 比较器 */
12export type Comparator = (a: any, b: any) => number;
13/** tickMethod 和 nice 需要使用的参数 */
14export type TickMethodOptions<T = number | Date> = [T, T, number, number?, boolean?];
15/** 柯里化后的函数的类型,对输入的值进行处理 */
16export type Transform = (x: any) => any;
17/** 柯里化后的函数的工厂函数类型 */
18export type CreateTransform = (...args: any[]) => Transform;
19/** 通用的配置 */
20export type BaseOptions = {
21 /** 当需要映射的值不合法的时候,返回的值 */
22 unknown?: any;
23 /** 值域,默认为 [0, 1] */
24 range?: any[];
25 /** 定义域,默认为 [0, 1] */
26 domain?: any[];
27};
28/** 获得比例尺选项中定义域元素的类型 */
29export type Domain<O extends BaseOptions> = O['domain'][number];
30/** 获得比例尺选项中值域元素的类型 */
31export type Range<O extends BaseOptions> = O['range'][number];
32/** 获得比例尺选项中 unknown 的类型 */
33export type Unknown<O extends BaseOptions> = O['unknown'];
34/** Identity 比例尺的选项 */
35/** Identity 比例尺的选项 */
36export type IdentityOptions = {
37 /** 当需要映射的值不合法的时候,返回的值 */
38 unknown?: any;
39 /** 值域,默认为 [0, 1] */
40 range?: any[];
41 /** 定义域,默认为 [0, 1] */
42 domain?: any[];
43 /** tick 个数,默认值为 5 */
44 tickCount?: number;
45 /** 计算 ticks 的算法 */
46 tickMethod?: TickMethod<number>;
47};
48/** Constant 比例尺的选项 */
49export type ConstantOptions = {
50 /** 当需要映射的值不合法的时候,返回的值 */
51 unknown?: any;
52 /** 值域,默认为 [0, 1] */
53 range?: any[];
54 /** 定义域,默认为 [0, 1] */
55 domain?: any[];
56 /** tick 个数,默认值为 5 */
57 tickCount?: number;
58 /** 计算 ticks 的算法 */
59 tickMethod?: TickMethod<number>;
60};
61/** Constant 比例尺的选项 */
62export type ContinuousOptions = {
63 /** 当需要映射的值不合法的时候,返回的值 */
64 unknown?: any;
65 /** 值域,默认为 [0, 1] */
66 range?: (number | string)[];
67 /** 定义域,默认为 [0, 1] */
68 domain?: (number | Date)[];
69 /** tick 个数,默认值为 5 */
70 tickCount?: number;
71 /** 计算 ticks 的算法 */
72 tickMethod?: TickMethod<number | Date>;
73 /** 是否需要对定义域的范围进行优化 */
74 nice?: boolean;
75 /** 是否需要限制输入的范围在值域内 */
76 clamp?: boolean;
77 /** 是否需要对输出进行四舍五入 */
78 round?: boolean;
79 /** 插值器的工厂函数,返回一个对归一化后的输入在值域指定范围内插值的函数 */
80 interpolate?: Interpolates;
81};
82/** Linear 比例尺的选项 */
83export type LinearOptions = {
84 /** 当需要映射的值不合法的时候,返回的值 */
85 unknown?: any;
86 /** 值域,默认为 [0, 1] */
87 range?: (number | string)[];
88 /** 定义域,默认为 [0, 1] */
89 domain?: number[];
90 /** tick 个数,默认值为 5 */
91 tickCount?: number;
92 /** 计算 ticks 的算法 */
93 tickMethod?: TickMethod<number>;
94 /** 是否需要对定义域的范围进行优化 */
95 nice?: boolean;
96 /** 是否需要限制输入的范围在值域内 */
97 clamp?: boolean;
98 /** 是否需要对输出进行四舍五入 */
99 round?: boolean;
100 /** 插值器的工厂函数,返回一个对归一化后的输入在值域指定范围内插值的函数 */
101 interpolate?: Interpolates;
102};
103/** Pow 比例尺的选项 */
104export type PowOptions = LinearOptions & {
105 /** 指数 */
106 exponent?: number;
107};
108/** Sqrt 比例尺的选项 */
109export type SqrtOptions = LinearOptions;
110/** Log 比例尺的选项 */
111export type LogOptions = LinearOptions & {
112 /** 底数 */
113 base?: number;
114};
115/** time 比例尺的选项 */
116export type TimeOptions = {
117 /** 当需要映射的值不合法的时候,返回的值 */
118 unknown?: any;
119 /** 值域,默认为 [0, 1] */
120 range?: (number | string)[];
121 /** 定义域,默认为 [0, 1] */
122 domain?: Date[];
123 /** tick 个数,默认值为 5 */
124 tickCount?: number;
125 /** 计算 ticks 的算法 */
126 tickMethod?: TickMethod<Date>;
127 /** 是否需要对定义域的范围进行优化 */
128 nice?: boolean;
129 /** 是否需要限制输入的范围在值域内 */
130 clamp?: boolean;
131 /** 是否需要对输出进行四舍五入 */
132 round?: boolean;
133 /** 插值器的工厂函数,返回一个对归一化后的输入在值域指定范围内插值的函数 */
134 interpolate?: Interpolates;
135 /** getTick 的时间间隔 */
136 tickInterval?: number;
137 /** 格式化的形式 */
138 mask?: string;
139 /** 是否是 utc 时间 */
140 utc?: boolean;
141};
142/** OrdinalOptions 比例尺的选项 */
143export type OrdinalOptions = {
144 /** 当需要映射的值不合法的时候,返回的值 */
145 unknown?: any;
146 /** 值域,默认为 [0, 1] */
147 range?: any[];
148 /** 定义域,默认为 [0, 1] */
149 domain?: any[];
150 /** 比较器 */
151 compare?: Comparator;
152};
153/** 详细请参阅 scale/band.ts */
154export type BandOptions = {
155 /** 当需要映射的值不合法的时候,返回的值 */
156 unknown?: any;
157 /** 值域,默认为 [0, 1] */
158 range?: number[];
159 /** 定义域,默认为 [0, 1] */
160 domain?: any[];
161 /** 是否取整 */
162 round?: boolean;
163 /** 内部边距 */
164 paddingInner?: number;
165 /** 两侧边距 */
166 paddingOuter?: number;
167 /** 同时定义内部边距和两侧边距,如果该值大于 0,则 paddingInner 和 paddingOuter 无效 */
168 padding?: number;
169 /** 对齐,取值为 0 - 1 的整数,例如 0.5 表示居中 */
170 align?: number;
171 /** 比较器,用于对 domain 进行排序 */
172 compare?: Comparator;
173 /** 每个条的宽度 (bandWidth) 的比例 */
174 flex?: number[];
175};
176/** Point 比例尺的选项 */
177export type PointOptions = Omit<BandOptions, 'paddingInner' | 'paddingOuter'>;
178/** Threshold 比例尺的选项 */
179export type ThresholdOptions = {
180 /** 当需要映射的值不合法的时候,返回的值 */
181 unknown?: any;
182 /** 值域,默认为 [0, 1] */
183 range?: any[];
184 /** 定义域,默认为 [0, 1] */
185 domain?: number[];
186};
187/** Quantize 比例尺的选项 */
188export type QuantizeOptions = {
189 /** 当需要映射的值不合法的时候,返回的值 */
190 unknown?: any;
191 /** 值域,默认为 [0, 1] */
192 range?: any[];
193 /** 定义域,默认为 [0, 1] */
194 domain?: number[];
195 /** 是否需要 nice */
196 nice?: boolean;
197 /** 期望的 tickCount */
198 tickCount?: number;
199 /** 计算 ticks 的算法 */
200 tickMethod?: TickMethod<number>;
201};
202/** Quantile 比例尺的选项 */
203export type QuantileOptions = {
204 /** 当需要映射的值不合法的时候,返回的值 */
205 unknown?: any;
206 /** 值域,默认为 [0, 1] */
207 range?: any[];
208 /** 定义域,默认为 [0, 1] */
209 domain?: number[];
210 /** 期望的 tickCount */
211 tickCount?: number;
212 /** 计算 ticks 的算法 */
213 tickMethod?: TickMethod<number>;
214};
215/** Sequential 比例尺的选项 */
216export type SequentialOptions = Omit<LinearOptions, 'Interpolates'> & {
217 interpolator?: Interpolator;
218};
219/** Diverging 比例尺的选项 */
220export type DivergingOptions = Omit<LinearOptions, 'Interpolates'> & {
221 interpolator?: Interpolator;
222};