This repository has been archived by the owner on Dec 31, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
transform-function.js
75 lines (61 loc) · 1.81 KB
/
transform-function.js
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
const delimeted = require('../tools/delimeted');
const fn = require('../tools/function');
const number = require('./number');
const length = require('./length');
const angle = require('./angle');
const functions = [
'matrix', 'matrix3d', 'perspective', 'rotate', 'rotate3d', 'rotatex', 'rotatey', 'rotatez', 'scale', 'scale3d',
'scalex', 'scaley', 'scalez', 'skew', 'skewx', 'skewy', 'translate', 'translate3d', 'translatex', 'translatey', 'translatez'
];
module.exports = fn('transform-function', functions, (stream, name) => {
switch (name) {
// Single values
case 'skewx':
case 'skewy':
case 'rotate':
case 'rotatex':
case 'rotatey':
case 'rotatez': {
return angle(stream);
}
case 'scalex':
case 'scaley':
case 'scalez': {
return number(stream);
}
case 'translatex':
case 'translatey':
case 'translatez': {
return length(stream);
}
// Double values
case 'translate': {
return delimeted(stream, length, 2);
}
case 'scale': {
return delimeted(stream, number, 2);
}
case 'skew': {
return delimeted(stream, angle, 2);
}
// Triple values
case 'translate3d': {
return delimeted(stream, length, 3);
}
case 'scale3d': {
return delimeted(stream, number, 3);
}
case 'rotate3d': {
return delimeted(stream, angle, 3);
}
case 'perspective': {
return length(stream);
}
case 'matrix': {
return delimeted(stream, number, 6, true);
}
case 'matrix3d': {
return delimeted(stream, number, 16, true);
}
}
});