middleman-wizard-template 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/middleman-wizard-template/template.rb +14 -0
- data/lib/middleman-wizard-template/template/bowerjson.tt +7 -0
- data/lib/middleman-wizard-template/template/bowerrc.tt +3 -0
- data/lib/middleman-wizard-template/template/config.tt +5 -0
- data/lib/middleman-wizard-template/template/source/javascripts/site.js +4 -4
- data/lib/middleman-wizard-template/version.rb +1 -1
- metadata +4 -16
- data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/Matrix.js +0 -449
- data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/PxLoader/PxLoader.js +0 -395
- data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/PxLoader/PxLoaderImage.js +0 -96
- data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/PxLoader/PxLoaderSwiffy.js +0 -68
- data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/RouteRecognizer.js +0 -506
- data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/Slides.js +0 -846
- data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/Transform.js +0 -312
- data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/Tween.js +0 -719
- data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/base.js +0 -8
- data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/raf.js +0 -131
- data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/statemachine.js +0 -1024
- data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/useragent.js +0 -1244
- data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/util.js +0 -282
- data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/viewport.js +0 -89
@@ -1,312 +0,0 @@
|
|
1
|
-
goog.provide('ww.transform');
|
2
|
-
goog.require('Sylvester.Matrix');
|
3
|
-
|
4
|
-
/**
|
5
|
-
* CSS Transform support.
|
6
|
-
*/
|
7
|
-
|
8
|
-
/**
|
9
|
-
* Called immediately
|
10
|
-
* @private
|
11
|
-
*/
|
12
|
-
(function detectSupport_() {
|
13
|
-
ww.transform.translationUnit = '';
|
14
|
-
|
15
|
-
var prop = 'transform',
|
16
|
-
vendorProp,
|
17
|
-
// capitalize first character of the prop to test vendor prefix
|
18
|
-
capProp = prop.charAt(0).toUpperCase() + prop.slice(1),
|
19
|
-
prefixes = ['Moz', 'Webkit', 'O', 'ms'],
|
20
|
-
div = document.createElement('div');
|
21
|
-
|
22
|
-
if (prop in div.style) {
|
23
|
-
// browser supports standard CSS property name
|
24
|
-
ww.transform.supportedProp = prop;
|
25
|
-
ww.transform.supports3d = div.style.perspective !== undefined;
|
26
|
-
} else {
|
27
|
-
// otherwise test support for vendor-prefixed property names
|
28
|
-
for (var i = 0; i < prefixes.length; i++) {
|
29
|
-
vendorProp = prefixes[i] + capProp;
|
30
|
-
|
31
|
-
if (vendorProp in div.style) {
|
32
|
-
ww.transform.supportedProp = vendorProp;
|
33
|
-
if (prefixes[i] === 'Moz') {
|
34
|
-
ww.transform.translationUnit = 'px';
|
35
|
-
}
|
36
|
-
if ((prefixes[i] + 'Perspective') in div.style) {
|
37
|
-
ww.transform.supports3d = true;
|
38
|
-
}
|
39
|
-
else {
|
40
|
-
ww.transform.supports2d = true;
|
41
|
-
}
|
42
|
-
break;
|
43
|
-
}
|
44
|
-
}
|
45
|
-
}
|
46
|
-
|
47
|
-
// if (!ww.transform.supportedProp) {
|
48
|
-
// ww.transform.supportsFilter = ('filter' in div.style);
|
49
|
-
// ww.transform.supportedProp = 'filter';
|
50
|
-
// }
|
51
|
-
|
52
|
-
// avoid memory leak in IE
|
53
|
-
div = null;
|
54
|
-
}).call(this);
|
55
|
-
|
56
|
-
ww.transform.properties = {};
|
57
|
-
|
58
|
-
ww.transform.properties['rotateX'] = {
|
59
|
-
defaultValue: 0,
|
60
|
-
'matrix3d': function(a) {
|
61
|
-
return $M([
|
62
|
-
[1, 0, 0, 0],
|
63
|
-
[0, Math.cos(a), Math.sin(-a), 0],
|
64
|
-
[0, Math.sin(a), Math.cos(a), 0],
|
65
|
-
[0, 0, 0, 1]
|
66
|
-
]);
|
67
|
-
},
|
68
|
-
'matrix2d': function(a) {
|
69
|
-
return $M([
|
70
|
-
[1, 0, 0],
|
71
|
-
[0, 1, 0],
|
72
|
-
[0, 0, 1]
|
73
|
-
]);
|
74
|
-
}
|
75
|
-
};
|
76
|
-
|
77
|
-
ww.transform.properties['rotateY'] = {
|
78
|
-
defaultValue: 0,
|
79
|
-
'matrix3d': function(b) {
|
80
|
-
return $M([
|
81
|
-
[Math.cos(b), 0, Math.sin(b), 0],
|
82
|
-
[0, 1, 0, 0],
|
83
|
-
[Math.sin(-b), 0, Math.cos(b), 0],
|
84
|
-
[0, 0, 0, 1]
|
85
|
-
]);
|
86
|
-
},
|
87
|
-
'matrix2d': function(b) {
|
88
|
-
return $M([
|
89
|
-
[1, 0, 0],
|
90
|
-
[0, 1, 0],
|
91
|
-
[0, 0, 1]
|
92
|
-
]);
|
93
|
-
}
|
94
|
-
};
|
95
|
-
|
96
|
-
ww.transform.properties['rotateZ'] = {
|
97
|
-
defaultValue: 0,
|
98
|
-
'matrix3d': function(c) {
|
99
|
-
return $M([
|
100
|
-
[Math.cos(c), Math.sin(-c), 0, 0],
|
101
|
-
[Math.sin(c), Math.cos(c), 0, 0],
|
102
|
-
[0, 0, 1, 0],
|
103
|
-
[0, 0, 0, 1]
|
104
|
-
]);
|
105
|
-
},
|
106
|
-
'matrix2d': function(c) {
|
107
|
-
return $M([
|
108
|
-
[Math.cos(c), Math.sin(-c), 0],
|
109
|
-
[Math.sin(c), Math.cos(c), 0],
|
110
|
-
[0, 0, 1]
|
111
|
-
]);
|
112
|
-
}
|
113
|
-
};
|
114
|
-
|
115
|
-
ww.transform.properties['scale'] = {
|
116
|
-
defaultValue: 1,
|
117
|
-
'matrix3d': function(s) {
|
118
|
-
return $M([
|
119
|
-
[s, 0, 0, 0],
|
120
|
-
[0, s, 0, 0],
|
121
|
-
[0, 0, s, 0],
|
122
|
-
[0, 0, 0, 1]
|
123
|
-
]);
|
124
|
-
},
|
125
|
-
'matrix2d': function(s) {
|
126
|
-
return $M([
|
127
|
-
[s, 0, 0],
|
128
|
-
[0, s, 0],
|
129
|
-
[0, 0, 1]
|
130
|
-
]);
|
131
|
-
}
|
132
|
-
};
|
133
|
-
|
134
|
-
ww.transform.properties['translateX'] = {
|
135
|
-
defaultValue: 0,
|
136
|
-
'matrix3d': function(tx) {
|
137
|
-
return $M([
|
138
|
-
[1, 0, 0, 0],
|
139
|
-
[0, 1, 0, 0],
|
140
|
-
[0, 0, 1, 0],
|
141
|
-
[tx, 0, 0, 1]
|
142
|
-
]);
|
143
|
-
},
|
144
|
-
'matrix2d': function(tx) {
|
145
|
-
return $M([
|
146
|
-
[1, 0, 0],
|
147
|
-
[0, 1, 0],
|
148
|
-
[tx, 0, 1]
|
149
|
-
]);
|
150
|
-
}
|
151
|
-
};
|
152
|
-
|
153
|
-
ww.transform.properties['translateY'] = {
|
154
|
-
defaultValue: 0,
|
155
|
-
'matrix3d': function(ty) {
|
156
|
-
return $M([
|
157
|
-
[1, 0, 0, 0],
|
158
|
-
[0, 1, 0, 0],
|
159
|
-
[0, 0, 1, 0],
|
160
|
-
[0, ty, 0, 1]
|
161
|
-
]);
|
162
|
-
},
|
163
|
-
'matrix2d': function(ty) {
|
164
|
-
return $M([
|
165
|
-
[1, 0, 0],
|
166
|
-
[0, 1, 0],
|
167
|
-
[0, ty, 1]
|
168
|
-
]);
|
169
|
-
}
|
170
|
-
};
|
171
|
-
|
172
|
-
ww.transform.properties['translateZ'] = {
|
173
|
-
defaultValue: 0,
|
174
|
-
'matrix3d': function(tz) {
|
175
|
-
return $M([
|
176
|
-
[1, 0, 0, 0],
|
177
|
-
[0, 1, 0, 0],
|
178
|
-
[0, 0, 1, 0],
|
179
|
-
[0, 0, tz, 1]
|
180
|
-
]);
|
181
|
-
},
|
182
|
-
'matrix2d': function(tz) {
|
183
|
-
return $M([
|
184
|
-
[1, 0, 0],
|
185
|
-
[0, 1, 0],
|
186
|
-
[0, 0, 1]
|
187
|
-
]);
|
188
|
-
}
|
189
|
-
};
|
190
|
-
|
191
|
-
/**
|
192
|
-
* @private
|
193
|
-
*/
|
194
|
-
function applyMatrix_(elem) {
|
195
|
-
if (!ww.transform.supports3d && !ww.transform.supports2d) {
|
196
|
-
return;
|
197
|
-
}
|
198
|
-
|
199
|
-
var transforms = getTransformsForElem_(elem);
|
200
|
-
var matrixProp = ww.transform.supports3d ? 'matrix3d' : 'matrix2d';
|
201
|
-
var tM, s;
|
202
|
-
|
203
|
-
// Get identity matrices
|
204
|
-
if (ww.transform.supports3d) {
|
205
|
-
tM = $M([
|
206
|
-
[1, 0, 0, 0],
|
207
|
-
[0, 1, 0, 0],
|
208
|
-
[0, 0, 1, -1],
|
209
|
-
[0, 0, 0, 1]
|
210
|
-
]);
|
211
|
-
} else {
|
212
|
-
tM = $M([
|
213
|
-
[1, 0, 0],
|
214
|
-
[0, 1, 0],
|
215
|
-
[0, 0, 1]
|
216
|
-
]);
|
217
|
-
}
|
218
|
-
|
219
|
-
for (var name in ww.transform.properties) {
|
220
|
-
if (ww.transform.properties.hasOwnProperty(name)) {
|
221
|
-
var curVal = transforms[name] || ww.transform.properties[name].defaultValue;
|
222
|
-
var propVal = ww.transform.properties[name];
|
223
|
-
tM = tM.x(propVal[matrixProp](curVal));
|
224
|
-
}
|
225
|
-
}
|
226
|
-
|
227
|
-
if (ww.transform.supports3d) {
|
228
|
-
s = 'matrix3d(';
|
229
|
-
s += tM.e(1, 1).toFixed(10) + ',' + tM.e(1, 2).toFixed(10) + ',';
|
230
|
-
s += tM.e(1, 3).toFixed(10) + ',' + tM.e(1, 4).toFixed(10) + ',';
|
231
|
-
s += tM.e(2, 1).toFixed(10) + ',' + tM.e(2, 2).toFixed(10) + ',';
|
232
|
-
s += tM.e(2, 3).toFixed(10) + ',' + tM.e(2, 4).toFixed(10) + ',';
|
233
|
-
s += tM.e(3, 1).toFixed(10) + ',' + tM.e(3, 2).toFixed(10) + ',';
|
234
|
-
s += tM.e(3, 3).toFixed(10) + ',' + tM.e(3, 4).toFixed(10) + ',';
|
235
|
-
s += tM.e(4, 1).toFixed(10) + ',' + tM.e(4, 2).toFixed(10) + ',';
|
236
|
-
s += tM.e(4, 3).toFixed(10) + ',' + tM.e(4, 4).toFixed(10);
|
237
|
-
s += ')';
|
238
|
-
} else {
|
239
|
-
s = 'matrix(';
|
240
|
-
s += tM.e(1, 1).toFixed(10) + ',' + tM.e(1, 2).toFixed(10) + ',';
|
241
|
-
s += tM.e(2, 1).toFixed(10) + ',' + tM.e(2, 2).toFixed(10) + ',';
|
242
|
-
s += tM.e(3, 1).toFixed(10) + ww.transform.translationUnit + ',';
|
243
|
-
s += tM.e(3, 2).toFixed(10) + ww.transform.translationUnit;
|
244
|
-
s += ')';
|
245
|
-
}
|
246
|
-
|
247
|
-
elem.style[ww.transform.supportedProp] = s;
|
248
|
-
}
|
249
|
-
|
250
|
-
/**
|
251
|
-
* @private
|
252
|
-
*/
|
253
|
-
ww.transform.cache_ = {};
|
254
|
-
|
255
|
-
/**
|
256
|
-
* @private
|
257
|
-
*/
|
258
|
-
function getTransformsForElem_(elem) {
|
259
|
-
return ww.transform.cache_[elem.id];
|
260
|
-
}
|
261
|
-
|
262
|
-
/**
|
263
|
-
* @private
|
264
|
-
*/
|
265
|
-
function setTransformsForElem_(elem, transforms) {
|
266
|
-
if (!elem.id || !elem.id.length) {
|
267
|
-
throw 'Cannot set current transforms for element without id';
|
268
|
-
}
|
269
|
-
|
270
|
-
ww.transform.cache_[elem.id] = transforms;
|
271
|
-
}
|
272
|
-
|
273
|
-
ww.transform.getValue = function(elem, name) {
|
274
|
-
var transforms = getTransformsForElem_(elem);
|
275
|
-
|
276
|
-
if (transforms === undefined) {
|
277
|
-
transforms = {};
|
278
|
-
}
|
279
|
-
|
280
|
-
return transforms[name] || ww.transform.properties[name].defaultValue;
|
281
|
-
};
|
282
|
-
|
283
|
-
ww.transform.setValue = function(elem, name, value) {
|
284
|
-
if (!elem.id) {
|
285
|
-
elem.id = 'transform_' + (new Date()).getTime() + Math.random();
|
286
|
-
}
|
287
|
-
|
288
|
-
var transforms = getTransformsForElem_(elem);
|
289
|
-
if (transforms === undefined) {
|
290
|
-
transforms = {};
|
291
|
-
}
|
292
|
-
|
293
|
-
var propInfo = ww.transform.properties[name];
|
294
|
-
|
295
|
-
if (typeof propInfo.apply === 'function') {
|
296
|
-
var curVal = transforms[name] || propInfo.defaultValue;
|
297
|
-
transforms[name] = propInfo.apply(curVal, value);
|
298
|
-
} else {
|
299
|
-
transforms[name] = value;
|
300
|
-
}
|
301
|
-
|
302
|
-
setTransformsForElem_(elem, transforms);
|
303
|
-
applyMatrix_(elem);
|
304
|
-
};
|
305
|
-
|
306
|
-
if ('undefined' !== typeof jQuery) {
|
307
|
-
jQuery.fn.transform = function(name, value) {
|
308
|
-
return $(this).each(function() {
|
309
|
-
ww.transform.setValue(this, name, value);
|
310
|
-
});
|
311
|
-
};
|
312
|
-
}
|
@@ -1,719 +0,0 @@
|
|
1
|
-
goog.provide('ww.Tween');
|
2
|
-
goog.provide('ww.Tweens');
|
3
|
-
goog.require('goog.array');
|
4
|
-
goog.require('ww.util');
|
5
|
-
|
6
|
-
/**
|
7
|
-
* Raw linear interpolation.
|
8
|
-
* @param {number} p0 Point one.
|
9
|
-
* @param {number} p1 Point two.
|
10
|
-
* @param {number} t Position between.
|
11
|
-
* @private
|
12
|
-
* @return {number} The resulting number.
|
13
|
-
*/
|
14
|
-
function LinearInterpolationUtil_(p0, p1, t) {
|
15
|
-
return (p1 - p0) * t + p0;
|
16
|
-
}
|
17
|
-
|
18
|
-
/**
|
19
|
-
* Run linear interpolation on array.
|
20
|
-
* @param {Array} v List of points.
|
21
|
-
* @param {number} k Position of tween.
|
22
|
-
* @private
|
23
|
-
* @return {number} The resulting number.
|
24
|
-
*/
|
25
|
-
function LinearInterpolation_(v, k) {
|
26
|
-
var m = v.length - 1, f = m * k, i = Math.floor(f);
|
27
|
-
if (k < 0) return LinearInterpolationUtil_(v[0], v[1], f);
|
28
|
-
if (k > 1) return LinearInterpolationUtil_(v[m], v[m - 1], m - f);
|
29
|
-
return LinearInterpolationUtil_(v[i], v[i + 1 > m ? m : i + 1], f - i);
|
30
|
-
}
|
31
|
-
|
32
|
-
/**
|
33
|
-
* Base namespace
|
34
|
-
*/
|
35
|
-
ww.Tweens = (function() {
|
36
|
-
var _tweens = [];
|
37
|
-
var res = {};
|
38
|
-
|
39
|
-
res.getAll = function() {
|
40
|
-
return _tweens;
|
41
|
-
};
|
42
|
-
res.removeAll = function() {
|
43
|
-
_tweens = [];
|
44
|
-
};
|
45
|
-
res.add = function(tween) {
|
46
|
-
_tweens.push(tween);
|
47
|
-
};
|
48
|
-
res.remove = function(tween) {
|
49
|
-
var i = goog.array.indexOf(_tweens, tween);
|
50
|
-
if (i !== -1) {
|
51
|
-
_tweens.splice(i, 1);
|
52
|
-
}
|
53
|
-
};
|
54
|
-
|
55
|
-
res.update = function(time) {
|
56
|
-
if (_tweens.length === 0) {
|
57
|
-
return false;
|
58
|
-
}
|
59
|
-
|
60
|
-
time = time !== undefined ? time : ww.util.rightNow();
|
61
|
-
|
62
|
-
var i = 0;
|
63
|
-
var num_tweens = _tweens.length;
|
64
|
-
while (i < num_tweens) {
|
65
|
-
if (_tweens[i].update(time)) {
|
66
|
-
i++;
|
67
|
-
} else {
|
68
|
-
_tweens.splice(i, 1);
|
69
|
-
num_tweens--;
|
70
|
-
}
|
71
|
-
}
|
72
|
-
|
73
|
-
return true;
|
74
|
-
};
|
75
|
-
|
76
|
-
return res;
|
77
|
-
})();
|
78
|
-
|
79
|
-
/**
|
80
|
-
* All the easing functions.
|
81
|
-
* @type {Object.<Object>}
|
82
|
-
* @const
|
83
|
-
*/
|
84
|
-
var EASING = {
|
85
|
-
|
86
|
-
/**
|
87
|
-
* Linear ease.
|
88
|
-
* @param {number} k Position of the tween.
|
89
|
-
* @return {number} Position of the parameter.
|
90
|
-
*/
|
91
|
-
LIN: function(k) {
|
92
|
-
return k;
|
93
|
-
},
|
94
|
-
|
95
|
-
/**
|
96
|
-
* Linear easing functions.
|
97
|
-
* @type {Object.<Function>}
|
98
|
-
* @const
|
99
|
-
*/
|
100
|
-
QUADRATIC: {
|
101
|
-
|
102
|
-
/**
|
103
|
-
* Quadratic In ease.
|
104
|
-
* @param {number} k Position of the tween.
|
105
|
-
* @return {number} Position of the parameter.
|
106
|
-
*/
|
107
|
-
IN: function(k) {
|
108
|
-
return k * k;
|
109
|
-
},
|
110
|
-
|
111
|
-
/**
|
112
|
-
* Quadratic Out ease.
|
113
|
-
* @param {number} k Position of the tween.
|
114
|
-
* @return {number} Position of the parameter.
|
115
|
-
*/
|
116
|
-
OUT: function(k) {
|
117
|
-
return k * (2 - k);
|
118
|
-
},
|
119
|
-
|
120
|
-
/**
|
121
|
-
* Quadratic In/Out ease.
|
122
|
-
* @param {number} k Position of the tween.
|
123
|
-
* @return {number} Position of the parameter.
|
124
|
-
*/
|
125
|
-
INOUT: function(k) {
|
126
|
-
if ((k *= 2) < 1) return 0.5 * k * k;
|
127
|
-
return - 0.5 * (--k * (k - 2) - 1);
|
128
|
-
}
|
129
|
-
|
130
|
-
},
|
131
|
-
|
132
|
-
/**
|
133
|
-
* Cubic easing functions.
|
134
|
-
* @type {Object.<Function>}
|
135
|
-
* @const
|
136
|
-
*/
|
137
|
-
CUBIC: {
|
138
|
-
|
139
|
-
/**
|
140
|
-
* Cubic In ease.
|
141
|
-
* @param {number} k Position of the tween.
|
142
|
-
* @return {number} Position of the parameter.
|
143
|
-
*/
|
144
|
-
IN: function(k) {
|
145
|
-
return k * k * k;
|
146
|
-
},
|
147
|
-
|
148
|
-
/**
|
149
|
-
* Cubic Out ease.
|
150
|
-
* @param {number} k Position of the tween.
|
151
|
-
* @return {number} Position of the parameter.
|
152
|
-
*/
|
153
|
-
OUT: function(k) {
|
154
|
-
return --k * k * k + 1;
|
155
|
-
},
|
156
|
-
|
157
|
-
/**
|
158
|
-
* Cubic In/Out ease.
|
159
|
-
* @param {number} k Position of the tween.
|
160
|
-
* @return {number} Position of the parameter.
|
161
|
-
*/
|
162
|
-
INOUT: function(k) {
|
163
|
-
if ((k *= 2) < 1) return 0.5 * k * k * k;
|
164
|
-
return 0.5 * ((k -= 2) * k * k + 2);
|
165
|
-
}
|
166
|
-
},
|
167
|
-
|
168
|
-
/**
|
169
|
-
* Quartic easing functions.
|
170
|
-
* @type {Object.<Function>}
|
171
|
-
* @const
|
172
|
-
*/
|
173
|
-
QUARTIC: {
|
174
|
-
|
175
|
-
/**
|
176
|
-
* Quartic In ease.
|
177
|
-
* @param {number} k Position of the tween.
|
178
|
-
* @return {number} Position of the parameter.
|
179
|
-
*/
|
180
|
-
IN: function(k) {
|
181
|
-
return k * k * k * k;
|
182
|
-
},
|
183
|
-
|
184
|
-
/**
|
185
|
-
* Quartic Out ease.
|
186
|
-
* @param {number} k Position of the tween.
|
187
|
-
* @return {number} Position of the parameter.
|
188
|
-
*/
|
189
|
-
OUT: function(k) {
|
190
|
-
--k;
|
191
|
-
return 1 - (k * k * k * k);
|
192
|
-
},
|
193
|
-
|
194
|
-
/**
|
195
|
-
* Quartic In/Out ease.
|
196
|
-
* @param {number} k Position of the tween.
|
197
|
-
* @return {number} Position of the parameter.
|
198
|
-
*/
|
199
|
-
INOUT: function(k) {
|
200
|
-
if ((k *= 2) < 1) return 0.5 * k * k * k * k;
|
201
|
-
return - 0.5 * ((k -= 2) * k * k * k - 2);
|
202
|
-
}
|
203
|
-
},
|
204
|
-
|
205
|
-
/**
|
206
|
-
* Quintic easing functions.
|
207
|
-
* @type {Object.<Function>}
|
208
|
-
* @const
|
209
|
-
*/
|
210
|
-
QUINTIC: {
|
211
|
-
|
212
|
-
/**
|
213
|
-
* Quintic In ease.
|
214
|
-
* @param {number} k Position of the tween.
|
215
|
-
* @return {number} Position of the parameter.
|
216
|
-
*/
|
217
|
-
IN: function(k) {
|
218
|
-
return k * k * k * k * k;
|
219
|
-
},
|
220
|
-
|
221
|
-
/**
|
222
|
-
* Quintic Out ease.
|
223
|
-
* @param {number} k Position of the tween.
|
224
|
-
* @return {number} Position of the parameter.
|
225
|
-
*/
|
226
|
-
OUT: function(k) {
|
227
|
-
return --k * k * k * k * k + 1;
|
228
|
-
},
|
229
|
-
|
230
|
-
/**
|
231
|
-
* Quintic In/Out ease.
|
232
|
-
* @param {number} k Position of the tween.
|
233
|
-
* @return {number} Position of the parameter.
|
234
|
-
*/
|
235
|
-
INOUT: function(k) {
|
236
|
-
if ((k *= 2) < 1) return 0.5 * k * k * k * k * k;
|
237
|
-
return 0.5 * ((k -= 2) * k * k * k * k + 2);
|
238
|
-
}
|
239
|
-
},
|
240
|
-
|
241
|
-
/**
|
242
|
-
* Sinusoidal easing functions.
|
243
|
-
* @type {Object.<Function>}
|
244
|
-
* @const
|
245
|
-
*/
|
246
|
-
SINUSOIDAL: {
|
247
|
-
|
248
|
-
/**
|
249
|
-
* Sinusoidal In ease.
|
250
|
-
* @param {number} k Position of the tween.
|
251
|
-
* @return {number} Position of the parameter.
|
252
|
-
*/
|
253
|
-
IN: function(k) {
|
254
|
-
return 1 - Math.cos(k * Math.PI / 2);
|
255
|
-
},
|
256
|
-
|
257
|
-
/**
|
258
|
-
* Sinusoidal Out ease.
|
259
|
-
* @param {number} k Position of the tween.
|
260
|
-
* @return {number} Position of the parameter.
|
261
|
-
*/
|
262
|
-
OUT: function(k) {
|
263
|
-
return Math.sin(k * Math.PI / 2);
|
264
|
-
},
|
265
|
-
|
266
|
-
/**
|
267
|
-
* Sinusoidal In/Out ease.
|
268
|
-
* @param {number} k Position of the tween.
|
269
|
-
* @return {number} Position of the parameter.
|
270
|
-
*/
|
271
|
-
INOUT: function(k) {
|
272
|
-
return 0.5 * (1 - Math.cos(Math.PI * k));
|
273
|
-
}
|
274
|
-
},
|
275
|
-
|
276
|
-
/**
|
277
|
-
* Exponential easing functions.
|
278
|
-
* @type {Object.<Function>}
|
279
|
-
* @const
|
280
|
-
*/
|
281
|
-
EXPONENTIAL: {
|
282
|
-
|
283
|
-
/**
|
284
|
-
* Exponential In ease.
|
285
|
-
* @param {number} k Position of the tween.
|
286
|
-
* @return {number} Position of the parameter.
|
287
|
-
*/
|
288
|
-
IN: function(k) {
|
289
|
-
return k === 0 ? 0 : Math.pow(1024, k - 1);
|
290
|
-
},
|
291
|
-
|
292
|
-
/**
|
293
|
-
* Exponential Out ease.
|
294
|
-
* @param {number} k Position of the tween.
|
295
|
-
* @return {number} Position of the parameter.
|
296
|
-
*/
|
297
|
-
OUT: function(k) {
|
298
|
-
return k === 1 ? 1 : 1 - Math.pow(2, - 10 * k);
|
299
|
-
},
|
300
|
-
|
301
|
-
/**
|
302
|
-
* Exponential In/Out ease.
|
303
|
-
* @param {number} k Position of the tween.
|
304
|
-
* @return {number} Position of the parameter.
|
305
|
-
*/
|
306
|
-
INOUT: function(k) {
|
307
|
-
if (k === 0) return 0;
|
308
|
-
if (k === 1) return 1;
|
309
|
-
if ((k *= 2) < 1) return 0.5 * Math.pow(1024, k - 1);
|
310
|
-
return 0.5 * (- Math.pow(2, - 10 * (k - 1)) + 2);
|
311
|
-
}
|
312
|
-
},
|
313
|
-
|
314
|
-
/**
|
315
|
-
* Circular easing functions.
|
316
|
-
* @type {Object.<Function>}
|
317
|
-
* @const
|
318
|
-
*/
|
319
|
-
CIRCULAR: {
|
320
|
-
|
321
|
-
/**
|
322
|
-
* Circular In ease.
|
323
|
-
* @param {number} k Position of the tween.
|
324
|
-
* @return {number} Position of the parameter.
|
325
|
-
*/
|
326
|
-
IN: function(k) {
|
327
|
-
return 1 - Math.sqrt(1 - k * k);
|
328
|
-
},
|
329
|
-
|
330
|
-
/**
|
331
|
-
* Circular Out ease.
|
332
|
-
* @param {number} k Position of the tween.
|
333
|
-
* @return {number} Position of the parameter.
|
334
|
-
*/
|
335
|
-
OUT: function(k) {
|
336
|
-
--k;
|
337
|
-
return Math.sqrt(1 - (k * k));
|
338
|
-
},
|
339
|
-
|
340
|
-
/**
|
341
|
-
* Circular In/Out ease.
|
342
|
-
* @param {number} k Position of the tween.
|
343
|
-
* @return {number} Position of the parameter.
|
344
|
-
*/
|
345
|
-
INOUT: function(k) {
|
346
|
-
if ((k *= 2) < 1) return - 0.5 * (Math.sqrt(1 - k * k) - 1);
|
347
|
-
return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);
|
348
|
-
}
|
349
|
-
},
|
350
|
-
|
351
|
-
/**
|
352
|
-
* Back easing functions.
|
353
|
-
* @type {Object.<Function>}
|
354
|
-
* @const
|
355
|
-
*/
|
356
|
-
BACK: {
|
357
|
-
|
358
|
-
/**
|
359
|
-
* Back In ease.
|
360
|
-
* @param {number} k Position of the tween.
|
361
|
-
* @return {number} Position of the parameter.
|
362
|
-
*/
|
363
|
-
IN: function(k) {
|
364
|
-
var s = 1.70158;
|
365
|
-
return k * k * ((s + 1) * k - s);
|
366
|
-
},
|
367
|
-
|
368
|
-
/**
|
369
|
-
* Back Out ease.
|
370
|
-
* @param {number} k Position of the tween.
|
371
|
-
* @return {number} Position of the parameter.
|
372
|
-
*/
|
373
|
-
OUT: function(k) {
|
374
|
-
var s = 1.70158;
|
375
|
-
return --k * k * ((s + 1) * k + s) + 1;
|
376
|
-
},
|
377
|
-
|
378
|
-
/**
|
379
|
-
* Back In/Out ease.
|
380
|
-
* @param {number} k Position of the tween.
|
381
|
-
* @return {number} Position of the parameter.
|
382
|
-
*/
|
383
|
-
INOUT: function(k) {
|
384
|
-
var s = 1.70158 * 1.525;
|
385
|
-
if ((k *= 2) < 1) return 0.5 * (k * k * ((s + 1) * k - s));
|
386
|
-
return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);
|
387
|
-
}
|
388
|
-
},
|
389
|
-
|
390
|
-
DOUBLEBACK: {
|
391
|
-
|
392
|
-
/**
|
393
|
-
* Back In ease.
|
394
|
-
* @param {number} k Position of the tween.
|
395
|
-
* @return {number} Position of the parameter.
|
396
|
-
*/
|
397
|
-
IN: function(k) {
|
398
|
-
var s = 3.40316;
|
399
|
-
return k * k * ((s + 1) * k - s);
|
400
|
-
},
|
401
|
-
|
402
|
-
/**
|
403
|
-
* Back Out ease.
|
404
|
-
* @param {number} k Position of the tween.
|
405
|
-
* @return {number} Position of the parameter.
|
406
|
-
*/
|
407
|
-
OUT: function(k) {
|
408
|
-
var s = 3.40316;
|
409
|
-
return --k * k * ((s + 1) * k + s) + 1;
|
410
|
-
},
|
411
|
-
|
412
|
-
/**
|
413
|
-
* Back In/Out ease.
|
414
|
-
* @param {number} k Position of the tween.
|
415
|
-
* @return {number} Position of the parameter.
|
416
|
-
*/
|
417
|
-
INOUT: function(k) {
|
418
|
-
var s = 3.40316 * 1.525;
|
419
|
-
if ((k *= 2) < 1) return 0.5 * (k * k * ((s + 1) * k - s));
|
420
|
-
return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);
|
421
|
-
}
|
422
|
-
},
|
423
|
-
|
424
|
-
/**
|
425
|
-
* Elastic easing functions.
|
426
|
-
* @type {Object.<Function>}
|
427
|
-
* @const
|
428
|
-
*/
|
429
|
-
ELASTIC: {
|
430
|
-
|
431
|
-
/**
|
432
|
-
* Elastic In ease.
|
433
|
-
* @param {number} k Position of the tween.
|
434
|
-
* @return {number} Position of the parameter.
|
435
|
-
*/
|
436
|
-
IN: function(k) {
|
437
|
-
var s, a = 0.1, p = 0.4;
|
438
|
-
if (k === 0) return 0;
|
439
|
-
if (k === 1) return 1;
|
440
|
-
if (!a || a < 1) { a = 1; s = p / 4; }
|
441
|
-
else s = p * Math.asin(1 / a) / (2 * Math.PI);
|
442
|
-
var p2 = Math.sin((k - s) * (2 * Math.PI) / p);
|
443
|
-
return - (a * Math.pow(2, 10 * (k -= 1)) * p2);
|
444
|
-
},
|
445
|
-
|
446
|
-
/**
|
447
|
-
* Elastic Out ease.
|
448
|
-
* @param {number} k Position of the tween.
|
449
|
-
* @return {number} Position of the parameter.
|
450
|
-
*/
|
451
|
-
OUT: function(k) {
|
452
|
-
var s, a = 0.1, p = 0.4;
|
453
|
-
if (k === 0) return 0;
|
454
|
-
if (k === 1) return 1;
|
455
|
-
if (!a || a < 1) { a = 1; s = p / 4; }
|
456
|
-
else s = p * Math.asin(1 / a) / (2 * Math.PI);
|
457
|
-
var p2 = Math.sin((k - s) * (2 * Math.PI) / p);
|
458
|
-
return (a * Math.pow(2, - 10 * k) * p2 + 1);
|
459
|
-
},
|
460
|
-
|
461
|
-
/**
|
462
|
-
* Elastic In/Out ease.
|
463
|
-
* @param {number} k Position of the tween.
|
464
|
-
* @return {number} Position of the parameter.
|
465
|
-
*/
|
466
|
-
INOUT: function(k) {
|
467
|
-
var s, a = 0.1, p = 0.4;
|
468
|
-
if (k === 0) return 0;
|
469
|
-
if (k === 1) return 1;
|
470
|
-
if (!a || a < 1) { a = 1; s = p / 4; }
|
471
|
-
else s = p * Math.asin(1 / a) / (2 * Math.PI);
|
472
|
-
var p2 = Math.sin((k - s) * (2 * Math.PI) / p);
|
473
|
-
if ((k *= 2) < 1) return - 0.5 * (a * Math.pow(2, 10 * (k -= 1)) * p2);
|
474
|
-
return a * Math.pow(2, -10 * (k -= 1)) * p2 * 0.5 + 1;
|
475
|
-
}
|
476
|
-
},
|
477
|
-
|
478
|
-
/**
|
479
|
-
* Bounce easing functions.
|
480
|
-
* @type {Object.<Function>}
|
481
|
-
* @const
|
482
|
-
*/
|
483
|
-
BOUNCE: {
|
484
|
-
|
485
|
-
/**
|
486
|
-
* Bounce In ease.
|
487
|
-
* @param {number} k Position of the tween.
|
488
|
-
* @return {number} Position of the parameter.
|
489
|
-
*/
|
490
|
-
IN: function(k) {
|
491
|
-
return 1 - EASING.BOUNCE.OUT(1 - k);
|
492
|
-
},
|
493
|
-
|
494
|
-
/**
|
495
|
-
* Bounce Out ease.
|
496
|
-
* @param {number} k Position of the tween.
|
497
|
-
* @return {number} Position of the parameter.
|
498
|
-
*/
|
499
|
-
OUT: function(k) {
|
500
|
-
if (k < (1 / 2.75)) {
|
501
|
-
return 7.5625 * k * k;
|
502
|
-
} else if (k < (2 / 2.75)) {
|
503
|
-
return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;
|
504
|
-
} else if (k < (2.5 / 2.75)) {
|
505
|
-
return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;
|
506
|
-
} else {
|
507
|
-
return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;
|
508
|
-
}
|
509
|
-
},
|
510
|
-
|
511
|
-
/**
|
512
|
-
* Bounce In/Out ease.
|
513
|
-
* @param {number} k Position of the tween.
|
514
|
-
* @return {number} Position of the parameter.
|
515
|
-
*/
|
516
|
-
INOUT: function(k) {
|
517
|
-
if (k < 0.5) return EASING.BOUNCE.IN(k * 2) * 0.5;
|
518
|
-
return EASING.BOUNCE.OUT(k * 2 - 1) * 0.5 + 0.5;
|
519
|
-
}
|
520
|
-
}
|
521
|
-
};
|
522
|
-
|
523
|
-
/**
|
524
|
-
* @constructor
|
525
|
-
* @param {Object} object Starting parameters to tween.
|
526
|
-
*/
|
527
|
-
ww.Tween = function(object) {
|
528
|
-
var _object = object;
|
529
|
-
var _valuesStart = {};
|
530
|
-
var _valuesEnd = {};
|
531
|
-
var _valuesStartRepeat = {};
|
532
|
-
var _duration = 1000;
|
533
|
-
var _repeat = 0;
|
534
|
-
var _delayTime = 0;
|
535
|
-
var _startTime = null;
|
536
|
-
var _easingFunction = EASING.LIN;
|
537
|
-
var _interpolationFunction = LinearInterpolation_;
|
538
|
-
var _onStartCallback = null;
|
539
|
-
var _onStartCallbackFired = false;
|
540
|
-
var _onUpdateCallback = null;
|
541
|
-
var _onCompleteCallback = null;
|
542
|
-
|
543
|
-
// Set all starting values present on the target object
|
544
|
-
for (var field in object) {
|
545
|
-
_valuesStart[field] = parseFloat(object[field], 10);
|
546
|
-
}
|
547
|
-
|
548
|
-
this.to = function(properties, duration) {
|
549
|
-
if (duration !== null) {
|
550
|
-
_duration = duration;
|
551
|
-
}
|
552
|
-
_valuesEnd = properties;
|
553
|
-
return this;
|
554
|
-
};
|
555
|
-
|
556
|
-
this.reset = function(object) {
|
557
|
-
if (object) {
|
558
|
-
_object = object;
|
559
|
-
|
560
|
-
_valuesStart = {};
|
561
|
-
for (var property in _object) {
|
562
|
-
if (_object.hasOwnProperty(property)) {
|
563
|
-
_valuesStart[property] = _object[property];
|
564
|
-
}
|
565
|
-
}
|
566
|
-
} else {
|
567
|
-
for (var key in _valuesEnd) {
|
568
|
-
if (_valuesEnd.hasOwnProperty(key)) {
|
569
|
-
_object[key] = _valuesStart[key] || _object[key];
|
570
|
-
}
|
571
|
-
}
|
572
|
-
}
|
573
|
-
|
574
|
-
this.update(0, true);
|
575
|
-
};
|
576
|
-
|
577
|
-
this.start = function(time) {
|
578
|
-
ww.Tweens.add(this);
|
579
|
-
|
580
|
-
_onStartCallbackFired = false;
|
581
|
-
|
582
|
-
_startTime = time !== undefined ? time : ww.util.rightNow();
|
583
|
-
_startTime += _delayTime;
|
584
|
-
for (var property in _valuesEnd) {
|
585
|
-
if (_valuesEnd.hasOwnProperty(property)) {
|
586
|
-
// This prevents the interpolation of null values or of non-existing properties
|
587
|
-
if ((property in _object) === false || _object[property] === null) {
|
588
|
-
continue;
|
589
|
-
}
|
590
|
-
|
591
|
-
// check if an Array was provided as property value
|
592
|
-
if (_valuesEnd[property] instanceof Array) {
|
593
|
-
if (_valuesEnd[property].length === 0) {
|
594
|
-
continue;
|
595
|
-
}
|
596
|
-
// create a local copy of the Array with the start value at the front
|
597
|
-
_valuesEnd[property] = [_object[property]].
|
598
|
-
concat(_valuesEnd[property]);
|
599
|
-
}
|
600
|
-
|
601
|
-
_valuesStart[property] = _object[property];
|
602
|
-
|
603
|
-
if ((_valuesStart[property] instanceof Array) == false) {
|
604
|
-
_valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings
|
605
|
-
}
|
606
|
-
|
607
|
-
_valuesStartRepeat[property] = _valuesStart[property];
|
608
|
-
}
|
609
|
-
}
|
610
|
-
return this;
|
611
|
-
};
|
612
|
-
|
613
|
-
this.stop = function() {
|
614
|
-
ww.Tweens.remove(this);
|
615
|
-
return this;
|
616
|
-
};
|
617
|
-
|
618
|
-
this.delay = function(amount) {
|
619
|
-
_delayTime = amount;
|
620
|
-
return this;
|
621
|
-
};
|
622
|
-
|
623
|
-
this.repeat = function (times) {
|
624
|
-
_repeat = times;
|
625
|
-
return this;
|
626
|
-
};
|
627
|
-
|
628
|
-
this.easing = function(easing) {
|
629
|
-
_easingFunction = easing;
|
630
|
-
return this;
|
631
|
-
};
|
632
|
-
|
633
|
-
this.onStart = function (callback) {
|
634
|
-
_onStartCallback = callback;
|
635
|
-
return this;
|
636
|
-
};
|
637
|
-
|
638
|
-
this.onUpdate = function(onUpdateCallback) {
|
639
|
-
_onUpdateCallback = onUpdateCallback;
|
640
|
-
return this;
|
641
|
-
};
|
642
|
-
|
643
|
-
this.onComplete = function(onCompleteCallback) {
|
644
|
-
_onCompleteCallback = onCompleteCallback;
|
645
|
-
return this;
|
646
|
-
};
|
647
|
-
|
648
|
-
this.update = function(time) {
|
649
|
-
if (time < _startTime) {
|
650
|
-
return true;
|
651
|
-
}
|
652
|
-
|
653
|
-
if (_onStartCallbackFired === false) {
|
654
|
-
if (_onStartCallback !== null) {
|
655
|
-
_onStartCallback.call(_object);
|
656
|
-
}
|
657
|
-
|
658
|
-
_onStartCallbackFired = true;
|
659
|
-
}
|
660
|
-
|
661
|
-
var elapsed = (time - _startTime) / _duration;
|
662
|
-
elapsed = elapsed > 1 ? 1 : elapsed;
|
663
|
-
|
664
|
-
var value = _easingFunction(elapsed);
|
665
|
-
|
666
|
-
for (var property in _valuesEnd) {
|
667
|
-
if (_valuesStart.hasOwnProperty(property)) {
|
668
|
-
var start = _valuesStart[property] || 0;
|
669
|
-
var end = _valuesEnd[property];
|
670
|
-
if (end instanceof Array) {
|
671
|
-
_object[property] = _interpolationFunction(end, value);
|
672
|
-
} else {
|
673
|
-
if (typeof(end) === 'string') {
|
674
|
-
end = start + parseFloat(end, 10);
|
675
|
-
}
|
676
|
-
|
677
|
-
_object[property] = start + (end - start) * value;
|
678
|
-
}
|
679
|
-
}
|
680
|
-
}
|
681
|
-
|
682
|
-
if (_onUpdateCallback !== null) {
|
683
|
-
_onUpdateCallback.call(_object, elapsed);
|
684
|
-
}
|
685
|
-
|
686
|
-
if (elapsed == 1) {
|
687
|
-
if (_repeat > 0 ) {
|
688
|
-
|
689
|
-
if (isFinite(_repeat )) {
|
690
|
-
_repeat--;
|
691
|
-
}
|
692
|
-
|
693
|
-
// reassign starting values, restart by making startTime = now
|
694
|
-
for (var property in _valuesStartRepeat) {
|
695
|
-
if (typeof(_valuesEnd[property]) === 'string') {
|
696
|
-
_valuesStartRepeat[property] = _valuesStartRepeat[property] + parseFloat(_valuesEnd[property], 10);
|
697
|
-
}
|
698
|
-
|
699
|
-
_valuesStart[property] = _valuesStartRepeat[property];
|
700
|
-
}
|
701
|
-
_startTime = time + _delayTime;
|
702
|
-
|
703
|
-
return true;
|
704
|
-
} else {
|
705
|
-
if (_onCompleteCallback !== null) {
|
706
|
-
_onCompleteCallback.call(_object);
|
707
|
-
}
|
708
|
-
|
709
|
-
for (var i = 0, numChainedTweens = _chainedTweens.length; i < numChainedTweens; i++) {
|
710
|
-
_chainedTweens[ i ].start( time );
|
711
|
-
}
|
712
|
-
|
713
|
-
return false;
|
714
|
-
}
|
715
|
-
}
|
716
|
-
|
717
|
-
return true;
|
718
|
-
};
|
719
|
-
};
|