-
Notifications
You must be signed in to change notification settings - Fork 6
/
createScaleFromScaleType.ts
52 lines (51 loc) · 1.42 KB
/
createScaleFromScaleType.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import {
scaleLinear,
scaleLog,
scalePow,
scaleSqrt,
scaleTime,
scaleUtc,
scaleQuantile,
scaleQuantize,
scaleThreshold,
scaleOrdinal,
scalePoint,
scaleBand,
scaleSymlog,
} from 'd3-scale';
import { StringLike, ScaleType, DefaultOutput } from '../../types';
export default function createScaleFromScaleType<Output extends DefaultOutput>(type: ScaleType) {
switch (type) {
case ScaleType.LINEAR:
return scaleLinear<Output>();
case ScaleType.LOG:
return scaleLog<Output>();
case ScaleType.POW:
return scalePow<Output>();
case ScaleType.SQRT:
return scaleSqrt<Output>();
case ScaleType.TIME:
return scaleTime<Output>();
case ScaleType.UTC:
return scaleUtc<Output>();
case ScaleType.QUANTILE:
return scaleQuantile<Output>();
case ScaleType.QUANTIZE:
return scaleQuantize<Output>();
case ScaleType.THRESHOLD:
return scaleThreshold<number | string | Date, Output>();
case ScaleType.ORDINAL:
return scaleOrdinal<StringLike, Output>();
case ScaleType.POINT:
return scalePoint<StringLike>();
case ScaleType.BAND:
return scaleBand<StringLike>();
case ScaleType.SYMLOG:
return scaleSymlog<Output, Output>();
// case ScaleType.BIN_ORDINAL:
// TODO: Pending scale.bins implementation
// throw new Error(`"type = ${type}" is not supported yet.`);
default:
return scaleLinear<Output>();
}
}