-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
85 lines (75 loc) · 2.47 KB
/
index.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
76
77
78
79
80
81
82
83
84
85
/**
* Module dependencies.
*/
var visit = require('rework-visit');
/**
* Easing functions.
*/
var ease = {
'ease-in-out-back': 'cubic-bezier(0.680, -0.550, 0.265, 1.550)',
'ease-in-out-circ': 'cubic-bezier(0.785, 0.135, 0.150, 0.860)',
'ease-in-out-expo': 'cubic-bezier(1.000, 0.000, 0.000, 1.000)',
'ease-in-out-sine': 'cubic-bezier(0.445, 0.050, 0.550, 0.950)',
'ease-in-out-quint': 'cubic-bezier(0.860, 0.000, 0.070, 1.000)',
'ease-in-out-quart': 'cubic-bezier(0.770, 0.000, 0.175, 1.000)',
'ease-in-out-cubic': 'cubic-bezier(0.645, 0.045, 0.355, 1.000)',
'ease-in-out-quad': 'cubic-bezier(0.455, 0.030, 0.515, 0.955)',
'ease-out-back': 'cubic-bezier(0.175, 0.885, 0.320, 1.275)',
'ease-out-circ': 'cubic-bezier(0.075, 0.820, 0.165, 1.000)',
'ease-out-expo': 'cubic-bezier(0.190, 1.000, 0.220, 1.000)',
'ease-out-sine': 'cubic-bezier(0.390, 0.575, 0.565, 1.000)',
'ease-out-quint': 'cubic-bezier(0.230, 1.000, 0.320, 1.000)',
'ease-out-quart': 'cubic-bezier(0.165, 0.840, 0.440, 1.000)',
'ease-out-cubic': 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',
'ease-out-quad': 'cubic-bezier(0.250, 0.460, 0.450, 0.940)',
'ease-in-back': 'cubic-bezier(0.600, -0.280, 0.735, 0.045)',
'ease-in-circ': 'cubic-bezier(0.600, 0.040, 0.980, 0.335)',
'ease-in-expo': 'cubic-bezier(0.950, 0.050, 0.795, 0.035)',
'ease-in-sine': 'cubic-bezier(0.470, 0.000, 0.745, 0.715)',
'ease-in-quint': 'cubic-bezier(0.755, 0.050, 0.855, 0.060)',
'ease-in-quart': 'cubic-bezier(0.895, 0.030, 0.685, 0.220)',
'ease-in-cubic': 'cubic-bezier(0.550, 0.055, 0.675, 0.190)',
'ease-in-quad': 'cubic-bezier(0.550, 0.085, 0.680, 0.530)'
};
/**
* Keys.
*/
var keys = Object.keys(ease);
/**
* Provide additional easing functions:
*
* #logo {
* transition: all 500ms ease-out-back;
* }
*
* yields:
*
* #logo {
* transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275)
* }
*
*/
module.exports = function() {
return function(style){
visit(style, substitute);
}
};
/**
* Substitute easing functions.
*
* @api private
*/
function substitute(declarations) {
for (var i = 0, len = declarations.length; i < len; ++i) {
var decl = declarations[i];
if ('comment' == decl.type) continue;
if (!decl.property.match(/transition|animation|timing/)) continue;
for (var k = 0; k < keys.length; ++k) {
var key = keys[k];
if (~decl.value.indexOf(key)) {
decl.value = decl.value.replace(key, ease[key]);
break;
}
}
}
}