middleman-wizard-template 1.0.2 → 1.0.3

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 (25) hide show
  1. checksums.yaml +7 -0
  2. data/lib/middleman-wizard-template/template/source/index.html.erb +1 -89
  3. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/Matrix.js +449 -0
  4. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/PxLoader/PxLoader.js +395 -0
  5. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/PxLoader/PxLoaderImage.js +96 -0
  6. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/PxLoader/PxLoaderSwiffy.js +68 -0
  7. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/RouteRecognizer.js +506 -0
  8. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/Slides.js +846 -0
  9. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/Transform.js +312 -0
  10. data/lib/middleman-wizard-template/template/source/javascripts/_lib/{Tween.js → ww/Tween.js} +26 -11
  11. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/base.js +8 -0
  12. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/raf.js +131 -0
  13. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/statemachine.js +1024 -0
  14. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/useragent.js +1244 -0
  15. data/lib/middleman-wizard-template/template/source/javascripts/_lib/{util.js → ww/util.js} +48 -50
  16. data/lib/middleman-wizard-template/template/source/javascripts/_lib/ww/viewport.js +89 -0
  17. data/lib/middleman-wizard-template/template/source/javascripts/{app.js → site.js} +5 -5
  18. data/lib/middleman-wizard-template/template/source/layouts/layout.erb +85 -0
  19. data/lib/middleman-wizard-template/template/source/stylesheets/default.css +2 -1
  20. data/lib/middleman-wizard-template/template/source/stylesheets/site.css.scss +11 -3
  21. data/lib/middleman-wizard-template/version.rb +1 -1
  22. metadata +23 -23
  23. data/lib/middleman-wizard-template/template/source/javascripts/_lib/Transform.js +0 -401
  24. data/lib/middleman-wizard-template/template/source/javascripts/_lib/raf.js +0 -26
  25. data/lib/middleman-wizard-template/template/source/javascripts/_lib/router.js +0 -679
@@ -0,0 +1,312 @@
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,7 +1,7 @@
1
1
  goog.provide('ww.Tween');
2
2
  goog.provide('ww.Tweens');
3
3
  goog.require('goog.array');
4
- // goog.require('ww.util');
4
+ goog.require('ww.util');
5
5
 
6
6
  /**
7
7
  * Raw linear interpolation.
@@ -540,6 +540,11 @@ ww.Tween = function(object) {
540
540
  var _onUpdateCallback = null;
541
541
  var _onCompleteCallback = null;
542
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
+
543
548
  this.to = function(properties, duration) {
544
549
  if (duration !== null) {
545
550
  _duration = duration;
@@ -578,8 +583,7 @@ ww.Tween = function(object) {
578
583
  _startTime += _delayTime;
579
584
  for (var property in _valuesEnd) {
580
585
  if (_valuesEnd.hasOwnProperty(property)) {
581
- // This prevents the interpolation of null values
582
- // or of non-existing properties
586
+ // This prevents the interpolation of null values or of non-existing properties
583
587
  if ((property in _object) === false || _object[property] === null) {
584
588
  continue;
585
589
  }
@@ -597,8 +601,7 @@ ww.Tween = function(object) {
597
601
  _valuesStart[property] = _object[property];
598
602
 
599
603
  if ((_valuesStart[property] instanceof Array) == false) {
600
- // Ensures we're using numbers, not strings
601
- _valuesStart[property] *= 1.0;
604
+ _valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings
602
605
  }
603
606
 
604
607
  _valuesStartRepeat[property] = _valuesStart[property];
@@ -617,7 +620,7 @@ ww.Tween = function(object) {
617
620
  return this;
618
621
  };
619
622
 
620
- this.repeat = function(times) {
623
+ this.repeat = function (times) {
621
624
  _repeat = times;
622
625
  return this;
623
626
  };
@@ -627,7 +630,7 @@ ww.Tween = function(object) {
627
630
  return this;
628
631
  };
629
632
 
630
- this.onStart = function(callback) {
633
+ this.onStart = function (callback) {
631
634
  _onStartCallback = callback;
632
635
  return this;
633
636
  };
@@ -660,13 +663,17 @@ ww.Tween = function(object) {
660
663
 
661
664
  var value = _easingFunction(elapsed);
662
665
 
663
- for (var property in _valuesStart) {
666
+ for (var property in _valuesEnd) {
664
667
  if (_valuesStart.hasOwnProperty(property)) {
665
- var start = _valuesStart[property];
668
+ var start = _valuesStart[property] || 0;
666
669
  var end = _valuesEnd[property];
667
670
  if (end instanceof Array) {
668
671
  _object[property] = _interpolationFunction(end, value);
669
672
  } else {
673
+ if (typeof(end) === 'string') {
674
+ end = start + parseFloat(end, 10);
675
+ }
676
+
670
677
  _object[property] = start + (end - start) * value;
671
678
  }
672
679
  }
@@ -677,14 +684,18 @@ ww.Tween = function(object) {
677
684
  }
678
685
 
679
686
  if (elapsed == 1) {
680
- if (_repeat > 0) {
687
+ if (_repeat > 0 ) {
681
688
 
682
- if (isFinite(_repeat)) {
689
+ if (isFinite(_repeat )) {
683
690
  _repeat--;
684
691
  }
685
692
 
686
693
  // reassign starting values, restart by making startTime = now
687
694
  for (var property in _valuesStartRepeat) {
695
+ if (typeof(_valuesEnd[property]) === 'string') {
696
+ _valuesStartRepeat[property] = _valuesStartRepeat[property] + parseFloat(_valuesEnd[property], 10);
697
+ }
698
+
688
699
  _valuesStart[property] = _valuesStartRepeat[property];
689
700
  }
690
701
  _startTime = time + _delayTime;
@@ -695,6 +706,10 @@ ww.Tween = function(object) {
695
706
  _onCompleteCallback.call(_object);
696
707
  }
697
708
 
709
+ for (var i = 0, numChainedTweens = _chainedTweens.length; i < numChainedTweens; i++) {
710
+ _chainedTweens[ i ].start( time );
711
+ }
712
+
698
713
  return false;
699
714
  }
700
715
  }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Namespace for the WW library. Checks to see inst is
3
+ * already defined in the current scope before assigning to prevent
4
+ * clobbering if base.js is loaded more than once.
5
+ *
6
+ * @const
7
+ */
8
+ var ww = ww || {}; // Identifies this file as the Inst base.
@@ -0,0 +1,131 @@
1
+ goog.provide('ww.raf');
2
+
3
+ /**
4
+ * RequestAnimationFrame polyfill.
5
+ */
6
+ (function() {
7
+ var lastTime = 0;
8
+ var vendors = ['ms', 'moz', 'webkit', 'o'];
9
+ for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
10
+ window.requestAnimationFrame = window[vendors[x] +
11
+ 'RequestAnimationFrame'];
12
+ window.cancelAnimationFrame =
13
+ window[vendors[x] + 'CancelAnimationFrame'] ||
14
+ window[vendors[x] + 'CancelRequestAnimationFrame'];
15
+ }
16
+
17
+ if (!window.requestAnimationFrame)
18
+ window.requestAnimationFrame = function(callback, element) {
19
+ var currTime = new Date().getTime();
20
+ var timeToCall = Math.max(0, 16 - (currTime - lastTime));
21
+ var id = window.setTimeout(function() {
22
+ callback(currTime + timeToCall);
23
+ }, timeToCall);
24
+ lastTime = currTime + timeToCall;
25
+ return id;
26
+ };
27
+
28
+ if (!window.cancelAnimationFrame)
29
+ window.cancelAnimationFrame = function(id) {
30
+ clearTimeout(id);
31
+ };
32
+ }());
33
+
34
+ /**
35
+ * List of all subscribers.
36
+ * @private
37
+ * @type {Array}
38
+ */
39
+ ww.raf.subscribers_ = {};
40
+
41
+ /**
42
+ * If rAF is running
43
+ * @private
44
+ * @type {Boolean}
45
+ */
46
+ ww.raf.isRunning_ = false;
47
+
48
+ /**
49
+ * Last frame timestamp.
50
+ * @private
51
+ * @type {Number}
52
+ */
53
+ ww.raf.lastTime_ = 0;
54
+
55
+ /**
56
+ * Current frame for canceling.
57
+ * @private
58
+ * @type {Number}
59
+ */
60
+ ww.raf.currentFrame_ = null;
61
+
62
+ /**
63
+ * On-frame loop.
64
+ * @private
65
+ * @param {Number} t timer.
66
+ */
67
+ ww.raf.onFrame_ = function(t) {
68
+ var loopCurrentTime = t || ww.util.rightNow();
69
+ var loopDelta = loopCurrentTime - ww.raf.lastTime_;
70
+
71
+ for (var subscriberKey in ww.raf.subscribers_) {
72
+ if (ww.raf.subscribers_.hasOwnProperty(subscriberKey)) {
73
+ var loopSubscriber = ww.raf.subscribers_[subscriberKey];
74
+ loopSubscriber[1].call(loopSubscriber[0], loopDelta);
75
+ }
76
+ }
77
+
78
+ ww.raf.lastTime_ = loopCurrentTime;
79
+
80
+ if (ww.raf.isRunning_) {
81
+ ww.raf.currentFrame_ = requestAnimationFrame(ww.raf.onFrame_);
82
+ }
83
+ };
84
+
85
+ /**
86
+ * After adding/removing a callback, see if we need to
87
+ * stop/start the loop.
88
+ * @private
89
+ */
90
+ ww.raf.updateStatus_ = function() {
91
+ var len = 0;
92
+ for (var key in ww.raf.subscribers_) {
93
+ if (ww.raf.subscribers_.hasOwnProperty(key)) {
94
+ len++;
95
+ }
96
+ }
97
+
98
+ if (len > 0) {
99
+ if (!ww.raf.isRunning_) {
100
+ ww.raf.isRunning_ = true;
101
+ ww.raf.lastTime_ = ww.util.rightNow();
102
+ requestAnimationFrame(ww.raf.onFrame_);
103
+ }
104
+ } else {
105
+ ww.raf.isRunning_ = false;
106
+ if (ww.raf.currentFrame_) {
107
+ cancelAnimationFrame(ww.raf.currentFrame_);
108
+ ww.raf.currentFrame_ = null;
109
+ }
110
+ }
111
+ };
112
+
113
+ /**
114
+ * Subscribe a named callback as needing a rAF loop.
115
+ * @param {String} name The name of the callback.
116
+ * @param {Object} obj The instance needing to be called.
117
+ * @param {Function} func The reference to the function to be called.
118
+ */
119
+ ww.raf.subscribe = function(name, obj, func) {
120
+ ww.raf.subscribers_[name] = [obj, func];
121
+ ww.raf.updateStatus_();
122
+ };
123
+
124
+ /**
125
+ * Unsubscribe a named callback from needing a rAF loop.
126
+ * @param {String} name The name of the callback.
127
+ */
128
+ ww.raf.unsubscribe = function(name) {
129
+ delete ww.raf.subscribers_[name];
130
+ ww.raf.updateStatus_();
131
+ };