-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathtype.ts
113 lines (102 loc) · 2.88 KB
/
type.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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import { vec3, mat3, mat4, vec4 } from 'gl-matrix';
export type TransformCallback = (x: number, y: number, width: number, height: number) => Transformer;
export type Transform3DCallback = (
x: number,
y: number,
z: number,
width: number,
height: number,
depth: number,
) => Transformer3D;
type Translate = ['translate', number, number];
type Cartesian = ['cartesian'];
type Custom = ['custom', TransformCallback];
type Matrix = ['matrix', Matrix3];
type Polar = ['polar', number, number, number, number];
type Transpose = ['transpose'];
type Scale = ['scale', number, number];
type ShearX = ['shear.x', number];
type ShearY = ['shear.y', number];
type Reflect = ['reflect'];
type ReflectX = ['reflect.x'];
type ReflectY = ['reflect.y'];
type Rotate = ['rotate', number];
type Helix = ['helix', number, number, number, number];
type Parallel = ['parallel', number, number, number, number];
type Fisheye = ['fisheye', number, number, number, number, boolean?];
type FisheyeX = ['fisheye.x', number, number, boolean?];
type FisheyeY = ['fisheye.y', number, number, boolean?];
type FisheyeCircular = ['fisheye.circular', number, number, number, number, boolean?];
type Cartesian3D = ['cartesian3D'];
type Translate3D = ['translate3D', number, number, number];
type Transpose3D = ['transpose3D'];
type Scale3D = ['scale3D', number, number, number];
export type Transformation =
| Translate
| Cartesian
| Custom
| Matrix
| Polar
| Transpose
| Scale
| ShearX
| ShearY
| Reflect
| ReflectX
| ReflectY
| Rotate
| Helix
| Parallel
| Fisheye
| FisheyeX
| FisheyeY
| FisheyeCircular;
export type Transformation3D = Cartesian3D | Translate3D | Scale3D | Transpose3D;
export type Options = {
x?: number;
y?: number;
width?: number;
height?: number;
transformations?: Transformation[];
};
export type Options3D = {
x?: number;
y?: number;
z?: number;
width?: number;
height?: number;
depth?: number;
transformations?: Transformation3D[];
};
export type Vector2 = [number, number];
export type Vector3 = vec3;
export type Vector4 = vec4;
export type Vector = number[];
export type Matrix3 = mat3;
export type Matrix4 = mat4;
export type Transform = (vector: Vector2 | Vector) => Vector2 | Vector;
export type Transform3D = (vector: Vector3 | Vector) => Vector3 | Vector;
export type Transformer = {
transform?: Transform;
untransform?: Transform;
};
export type Transformer3D = {
transform?: Transform3D;
untransform?: Transform3D;
};
export type CreateTransformer = (
params: number[] | (number | boolean)[] | [TransformCallback] | [Matrix3],
x: number,
y: number,
width: number,
height: number,
) => Transformer | Matrix3;
export type CreateTransformer3D = (
params: number[] | (number | boolean)[] | [TransformCallback] | [Matrix3],
x: number,
y: number,
z: number,
width: number,
height: number,
depth: number,
) => Transformer3D | Matrix4;