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.
Files changed (22) hide show
  1. checksums.yaml +4 -4
  2. data/lib/middleman-wizard-template/template.rb +14 -0
  3. data/lib/middleman-wizard-template/template/bowerjson.tt +7 -0
  4. data/lib/middleman-wizard-template/template/bowerrc.tt +3 -0
  5. data/lib/middleman-wizard-template/template/config.tt +5 -0
  6. data/lib/middleman-wizard-template/template/source/javascripts/site.js +4 -4
  7. data/lib/middleman-wizard-template/version.rb +1 -1
  8. metadata +4 -16
  9. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/Matrix.js +0 -449
  10. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/PxLoader/PxLoader.js +0 -395
  11. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/PxLoader/PxLoaderImage.js +0 -96
  12. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/PxLoader/PxLoaderSwiffy.js +0 -68
  13. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/RouteRecognizer.js +0 -506
  14. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/Slides.js +0 -846
  15. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/Transform.js +0 -312
  16. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/Tween.js +0 -719
  17. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/base.js +0 -8
  18. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/raf.js +0 -131
  19. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/statemachine.js +0 -1024
  20. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/useragent.js +0 -1244
  21. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/util.js +0 -282
  22. 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
- };