skrollr-rails 0.6.11 → 0.6.12

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fb34fa2e1b2ca62c6b68054373f28854ff545c52
4
- data.tar.gz: c1e98ffdddcc45515a4a43028969fc5ac80a2145
3
+ metadata.gz: bd1110115e2221306a0b9ca1328d3f4b9cd479fe
4
+ data.tar.gz: d8f4e8937b43441aa2a794b08b8f31d9c63a0429
5
5
  SHA512:
6
- metadata.gz: 2d8be55cb4575df26d8ed5daca3de45dff80818e10a2a8bb76ada7f99ee29923fe4d7cfe7faeecdfd2d2703c15bb28fea688b8b7101752be49bf6f4fa9c065d4
7
- data.tar.gz: 926a2e74c7b6418b48740d954fc10f64a5c6dc3eccbe10093b18ad6feacd832f6765d74eb5136d68bdcd57182661954de45ab35fa71b0840eb0fa9244eaf5cde
6
+ metadata.gz: 261db4165ac4cfe9ad793a03b56facc944e807c77e0c8de3468af1a6d8666911a3caf2e4061a8dce6cb84d2cc058481141c25c7d30a61eb3eb393a8e2bbda5d5
7
+ data.tar.gz: acc368b3991fa3ba7d05df1637eb028742e47c8c2b1a215683e9cd5382fbafe5ec200284158957dd94b7b553b7fce2366bbb6f02d2015516d8706312a65a4362
@@ -1,5 +1,5 @@
1
1
  module Skrollr
2
2
  module Rails
3
- VERSION = "0.6.11"
3
+ VERSION = "0.6.12"
4
4
  end
5
5
  end
@@ -9,7 +9,8 @@ Gem::Specification.new do |s|
9
9
  s.description = %q{Integrates the skrollr javascript library with the Rails asset pipeline}
10
10
  s.summary = %q{Skrollr is a stand-alone parallax scrolling library for mobile and desktop. This gem integrates skrollr with the Rails asset pipeline for ease of use and version control.}
11
11
  s.homepage = 'https://github.com/reed/skrollr-rails'
12
-
12
+ s.license = 'MIT'
13
+
13
14
  s.files = `git ls-files`.split("\n")
14
15
  s.require_paths = ['lib']
15
16
 
@@ -19,7 +19,7 @@
19
19
  init: function(options) {
20
20
  return _instance || new Skrollr(options);
21
21
  },
22
- VERSION: '0.6.11'
22
+ VERSION: '0.6.12'
23
23
  };
24
24
 
25
25
  //Minify optimization.
@@ -149,7 +149,7 @@
149
149
  var deltaTime = _now() - lastTime;
150
150
  var delay = Math.max(0, 1000 / 60 - deltaTime);
151
151
 
152
- window.setTimeout(function() {
152
+ return window.setTimeout(function() {
153
153
  lastTime = _now();
154
154
  callback();
155
155
  }, delay);
@@ -159,6 +159,18 @@
159
159
  return requestAnimFrame;
160
160
  };
161
161
 
162
+ var polyfillCAF = function() {
163
+ var cancelAnimFrame = window.cancelAnimationFrame || window[theCSSPrefix.toLowerCase() + 'CancelAnimationFrame'];
164
+
165
+ if(_isMobile || !cancelAnimFrame) {
166
+ cancelAnimFrame = function(timeout) {
167
+ return window.clearTimeout(timeout);
168
+ };
169
+ }
170
+
171
+ return cancelAnimFrame;
172
+ };
173
+
162
174
  //Built-in easing functions.
163
175
  var easings = {
164
176
  begin: function() {
@@ -294,7 +306,7 @@
294
306
  //Let's go.
295
307
  (function animloop(){
296
308
  _render();
297
- requestAnimFrame(animloop);
309
+ _animFrame = requestAnimFrame(animloop);
298
310
  }());
299
311
 
300
312
  return _instance;
@@ -595,6 +607,52 @@
595
607
  return _instance;
596
608
  };
597
609
 
610
+ Skrollr.prototype.destroy = function() {
611
+ var cancelAnimFrame = polyfillCAF();
612
+ cancelAnimFrame(_animFrame);
613
+ _removeAllEvents();
614
+
615
+ _updateClass(documentElement, [NO_SKROLLR_CLASS], [SKROLLR_CLASS, SKROLLR_DESKTOP_CLASS, SKROLLR_MOBILE_CLASS]);
616
+
617
+ var skrollableIndex = 0;
618
+ var skrollablesLength = _skrollables.length;
619
+
620
+ for(; skrollableIndex < skrollablesLength; skrollableIndex++) {
621
+ _reset(_skrollables[skrollableIndex].element);
622
+ }
623
+
624
+ documentElement.style.overflow = body.style.overflow = 'auto';
625
+ documentElement.style.height = body.style.height = 'auto';
626
+
627
+ if(_skrollrBody) {
628
+ skrollr.setStyle(_skrollrBody, 'transform', 'none');
629
+ }
630
+
631
+ _instance = undefined;
632
+ _skrollrBody = undefined;
633
+ _listeners = undefined;
634
+ _forceHeight = undefined;
635
+ _maxKeyFrame = 0;
636
+ _scale = 1;
637
+ _constants = undefined;
638
+ _mobileDeceleration = undefined;
639
+ _direction = 'down';
640
+ _lastTop = -1;
641
+ _lastViewportWidth = 0;
642
+ _lastViewportHeight = 0;
643
+ _requestReflow = false;
644
+ _scrollAnimation = undefined;
645
+ _smoothScrollingEnabled = undefined;
646
+ _smoothScrollingDuration = undefined;
647
+ _smoothScrolling = undefined;
648
+ _forceRender = undefined;
649
+ _skrollableIdCounter = 0;
650
+ _edgeStrategy = undefined;
651
+ _isMobile = false;
652
+ _mobileOffset = 0;
653
+ _translateZ = undefined;
654
+ };
655
+
598
656
  /*
599
657
  Private methods.
600
658
  */
@@ -1261,18 +1319,57 @@
1261
1319
 
1262
1320
  names = names.split(' ');
1263
1321
 
1322
+ var name;
1264
1323
  var nameCounter = 0;
1265
1324
  var namesLength = names.length;
1266
1325
 
1267
1326
  for(; nameCounter < namesLength; nameCounter++) {
1327
+ name = names[nameCounter];
1328
+
1268
1329
  if(element.addEventListener) {
1269
- element.addEventListener(names[nameCounter], callback, false);
1330
+ element.addEventListener(name, callback, false);
1270
1331
  } else {
1271
- element.attachEvent('on' + names[nameCounter], intermediate);
1332
+ element.attachEvent('on' + name, intermediate);
1272
1333
  }
1334
+
1335
+ //Remember the events to be able to flush them later.
1336
+ _registeredEvents.push({
1337
+ element: element,
1338
+ name: name,
1339
+ listener: callback
1340
+ });
1273
1341
  }
1274
1342
  };
1275
1343
 
1344
+ var _removeEvent = skrollr.removeEvent = function(element, names, callback) {
1345
+ names = names.split(' ');
1346
+
1347
+ var nameCounter = 0;
1348
+ var namesLength = names.length;
1349
+
1350
+ for(; nameCounter < namesLength; nameCounter++) {
1351
+ if(element.removeEventListener) {
1352
+ element.removeEventListener(names[nameCounter], callback, false);
1353
+ } else {
1354
+ element.detachEvent('on' + names[nameCounter], callback);
1355
+ }
1356
+ }
1357
+ };
1358
+
1359
+ var _removeAllEvents = function() {
1360
+ var eventData;
1361
+ var eventCounter = 0;
1362
+ var eventsLength = _registeredEvents.length;
1363
+
1364
+ for(; eventCounter < eventsLength; eventCounter++) {
1365
+ eventData = _registeredEvents[eventCounter];
1366
+
1367
+ _removeEvent(eventData.element, eventData.name, eventData.listener);
1368
+ }
1369
+
1370
+ _registeredEvents = [];
1371
+ };
1372
+
1276
1373
  var _reflow = function() {
1277
1374
  var pos = _instance.getScrollTop();
1278
1375
 
@@ -1490,4 +1587,10 @@
1490
1587
 
1491
1588
  //If the browser supports 3d transforms, this will be filled with 'translateZ(0)' (empty string otherwise).
1492
1589
  var _translateZ;
1493
- }(window, document));
1590
+
1591
+ //Will contain data about registered events by skrollr.
1592
+ var _registeredEvents = [];
1593
+
1594
+ //Animation frame id returned by RequestAnimationFrame (or timeout when RAF is not supported).
1595
+ var _animFrame;
1596
+ }(window, document));
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skrollr-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.11
4
+ version: 0.6.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Reed
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-22 00:00:00.000000000 Z
11
+ date: 2013-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -44,7 +44,8 @@ files:
44
44
  - vendor/assets/javascripts/skrollr.js
45
45
  - vendor/assets/javascripts/skrollr.menu.js
46
46
  homepage: https://github.com/reed/skrollr-rails
47
- licenses: []
47
+ licenses:
48
+ - MIT
48
49
  metadata: {}
49
50
  post_install_message:
50
51
  rdoc_options: []