UNPKG

4.08 kBTypeScriptView Raw
1/** 获得 ticks 的方法 */
2export declare type TickMethod<T = number> = (min: T, max: T, n?: number, ...rest: any[]) => T[];
3/** nice domain 的方法 */
4export declare type NiceMethod<T = number> = TickMethod<T>;
5/** 插值器工厂 */
6export declare type Interpolate = (a: number, b: number) => (t: number) => number;
7/** 比较器 */
8export declare type Comparator = (a: string | number, b: string | number) => number;
9/**
10 * 所有比例尺选项的默认类型
11 * D:定义域元素的类型
12 * R:值域元素的类型
13 */
14export declare type BaseOptions<D = any, R = D> = {
15 /** 当需要映射的值不合法的时候,返回的值 */
16 unknown?: any;
17 /** 值域,默认为 [0, 1] */
18 range?: R[];
19 /** 定义域,默认为 [0, 1] */
20 domain?: D[];
21};
22/**
23 * 支持 getTicks 的比例尺的选项
24 * T:tickMethod 配置项的类型
25 */
26export declare type TickOptions<T = number> = {
27 /** tick 个数,默认值为 5 */
28 tickCount?: number;
29 /** 计算 ticks 的算法 */
30 tickMethod?: TickMethod<T>;
31};
32/** 获得比例尺选项中定义域元素的类型 */
33export declare type Domain<O extends BaseOptions> = O['domain'][number];
34/** 获得比例尺选项中值域元素的类型 */
35export declare type Range<O extends BaseOptions> = O['range'][number];
36/** 获得比例尺选项中 unknown 的类型 */
37export declare type Unknown<O extends BaseOptions> = O['unknown'];
38/** Identity 比例尺的选项 */
39export declare type IdentityOptions = BaseOptions<number> & TickOptions;
40/** Constant 比例尺的选项 */
41export declare type ConstantOptions = BaseOptions<number | string> & TickOptions;
42/** Continuous 比例尺的选项 */
43export declare type ContinuousOptions<D = any, R = D> = BaseOptions<D, R> & TickOptions<D> & {
44 /** 是否需要对定义域的范围进行优化 */
45 nice?: boolean;
46 /** 是否需要限制输入的范围在值域内 */
47 clamp?: boolean;
48 /** 是否需要对输出进行四舍五入 */
49 round?: boolean;
50 /** 插值器的工厂函数,返回一个对归一化后的输入在值域指定范围内插值的函数 */
51 interpolate?: Interpolate;
52};
53/** Linear 比例尺的选项 */
54export declare type LinearOptions = ContinuousOptions<number>;
55/** Pow 比例尺的选项 */
56export declare type PowOptions = ContinuousOptions<number> & {
57 /** 指数 */
58 exponent?: number;
59};
60/** Sqrt 比例尺的选项 */
61export declare type SqrtOptions = Omit<PowOptions, 'exponent'>;
62/** Log 比例尺的选项 */
63export declare type LogOptions = ContinuousOptions<number> & {
64 /** 底数 */
65 base?: number;
66};
67/** time 比例尺的选项 */
68export declare type TimeOptions = ContinuousOptions<Date, number> & {
69 /** getTick 的时间间隔 */
70 tickInterval?: number;
71 /** 格式化的形式 */
72 mask?: string;
73 /** 是否是 utc 时间 */
74 utc?: boolean;
75};
76/** OrdinalOptions 比例尺的选项 */
77export declare type OrdinalOptions = BaseOptions<number | string> & {
78 compare?: Comparator;
79};
80/** 详细请参阅 scale/band.ts */
81export declare type BandOptions = BaseOptions<number | string, number> & {
82 /** 是否取整 */
83 round?: boolean;
84 /** 内部边距 */
85 paddingInner?: number;
86 /** 两侧边距 */
87 paddingOuter?: number;
88 /** 同时定义内部边距和两侧边距,如果该值大于 0,则 paddingInner 和 paddingOuter 无效 */
89 padding?: number;
90 /** 对齐,取值为 0 - 1 的整数,例如 0.5 表示居中 */
91 align?: number;
92 /** 比较器,用于对 domain 进行排序 */
93 compare?: Comparator;
94};
95/** Point 比例尺的选项 */
96export declare type PointOptions = Omit<BandOptions, 'paddingInner' | 'paddingOuter'>;
97/** Threshold 比例尺的选项 */
98export declare type ThresholdOptions = BaseOptions<number, any>;
99/** Quantize 比例尺的选项 */
100export declare type QuantizeOptions = ThresholdOptions & TickOptions & {
101 /** 是否需要 nice */
102 nice?: boolean;
103};
104/** Quantile 比例尺的选项 */
105export declare type QuantileOptions = ThresholdOptions & TickOptions;