twitter_ratchet_rails 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/twitter_ratchet_rails/modals.js +41 -0
  3. data/app/assets/javascripts/twitter_ratchet_rails/popovers.js +87 -0
  4. data/app/assets/javascripts/twitter_ratchet_rails/push.js +483 -0
  5. data/app/assets/javascripts/twitter_ratchet_rails/ratchet.js +82 -54
  6. data/app/assets/javascripts/twitter_ratchet_rails/segmented-controllers.js +65 -0
  7. data/app/assets/javascripts/twitter_ratchet_rails/sliders.js +136 -0
  8. data/app/assets/javascripts/twitter_ratchet_rails/toggles.js +118 -0
  9. data/app/assets/stylesheets/twitter_ratchet_rails/ratchet-theme-android.css +113 -79
  10. data/app/assets/stylesheets/twitter_ratchet_rails/ratchet-theme-ios.css +90 -90
  11. data/app/assets/stylesheets/twitter_ratchet_rails/ratchet.css.erb +171 -166
  12. data/lib/twitter_ratchet_rails/version.rb +1 -1
  13. data/test/dummy/app/assets/javascripts/application.js +1 -0
  14. data/test/dummy/app/assets/javascripts/users.js +2 -0
  15. data/test/dummy/app/assets/stylesheets/application.css +1 -0
  16. data/test/dummy/app/assets/stylesheets/scaffold.css +56 -0
  17. data/test/dummy/app/assets/stylesheets/users.css +4 -0
  18. data/test/dummy/app/controllers/users_controller.rb +58 -0
  19. data/test/dummy/app/helpers/users_helper.rb +2 -0
  20. data/test/dummy/app/models/user.rb +2 -0
  21. data/test/dummy/app/views/layouts/application.html.erb +26 -9
  22. data/test/dummy/app/views/users/_form.html.erb +25 -0
  23. data/test/dummy/app/views/users/edit.html.erb +6 -0
  24. data/test/dummy/app/views/users/index.html.erb +51 -0
  25. data/test/dummy/app/views/users/new.html.erb +5 -0
  26. data/test/dummy/app/views/users/show.html.erb +14 -0
  27. data/test/dummy/config/routes.rb +4 -0
  28. data/test/dummy/db/development.sqlite3 +0 -0
  29. data/test/dummy/db/migrate/20140620120642_create_users.rb +10 -0
  30. data/test/dummy/db/schema.rb +23 -0
  31. data/test/dummy/log/development.log +834 -0
  32. data/test/dummy/test/controllers/users_controller_test.rb +49 -0
  33. data/test/dummy/test/fixtures/users.yml +9 -0
  34. data/test/dummy/test/helpers/users_helper_test.rb +4 -0
  35. data/test/{integration/navigation_test.rb → dummy/test/models/user_test.rb} +1 -4
  36. data/test/dummy/tmp/cache/assets/development/sprockets/02365dc2cb50c9b2a206bf87d9181ef9 +0 -0
  37. data/test/dummy/tmp/cache/assets/development/sprockets/05c4a034c993964dc3064d1e840449fd +0 -0
  38. data/test/dummy/tmp/cache/assets/development/sprockets/0800f54ee19cf3cee10b956fa9786799 +0 -0
  39. data/test/dummy/tmp/cache/assets/development/sprockets/0e66254a0ff45c104998339ae7c607c5 +0 -0
  40. data/test/dummy/tmp/cache/assets/development/sprockets/0e804c20d0e8d07c2477ce1c0f102adf +0 -0
  41. data/test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  42. data/test/dummy/tmp/cache/assets/development/sprockets/163a4561a07fbc33d8a229302099d8dd +0 -0
  43. data/test/dummy/tmp/cache/assets/development/sprockets/2bd9a33c28022e3c885044a69be41a10 +0 -0
  44. data/test/dummy/tmp/cache/assets/development/sprockets/2d3d6a06270e38c5b1ff9b578aa35990 +0 -0
  45. data/test/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  46. data/test/dummy/tmp/cache/assets/development/sprockets/30e315773d1e399a47375b9e13041ed0 +0 -0
  47. data/test/dummy/tmp/cache/assets/development/sprockets/32593d4dfd09e0a66f70fe8095bb1014 +0 -0
  48. data/test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  49. data/test/dummy/tmp/cache/assets/development/sprockets/35fa941d49cfabf40906d7ac81e502b5 +0 -0
  50. data/test/dummy/tmp/cache/assets/development/sprockets/371bf96e99717688ed7313a0c53f4212 +0 -0
  51. data/test/dummy/tmp/cache/assets/development/sprockets/3a18489ba6c9aaef36fe82a5eccaa683 +0 -0
  52. data/test/dummy/tmp/cache/assets/development/sprockets/3b2f71b1e0ed4912133e1322edeebeb4 +0 -0
  53. data/test/dummy/tmp/cache/assets/development/sprockets/3cff68a61696f3df6cc0150dfe5f0a7a +0 -0
  54. data/test/dummy/tmp/cache/assets/development/sprockets/4050a4e5062ab95c9f32e9b6940821ea +0 -0
  55. data/test/dummy/tmp/cache/assets/development/sprockets/510da110ae528e2d22533be39ff696c5 +0 -0
  56. data/test/dummy/tmp/cache/assets/development/sprockets/5159109e8d44f828ad6e8c67292647ee +0 -0
  57. data/test/dummy/tmp/cache/assets/development/sprockets/56a757e904e5be9c01961ca2d84bf6dd +0 -0
  58. data/test/dummy/tmp/cache/assets/development/sprockets/5f1a0d05e77ca8b9a1fc2a47e17a8174 +0 -0
  59. data/test/dummy/tmp/cache/assets/development/sprockets/6ecbd847a59c3a487acbaf3a341a116e +0 -0
  60. data/test/dummy/tmp/cache/assets/development/sprockets/6fc757c2c8329244ca95d6909865bbc2 +0 -0
  61. data/test/dummy/tmp/cache/assets/development/sprockets/7c5d2dcee0e90462ec7314c630051fc2 +0 -0
  62. data/test/dummy/tmp/cache/assets/development/sprockets/87b209c0c9da28094a8d5581a21262c6 +0 -0
  63. data/test/dummy/tmp/cache/assets/development/sprockets/90cccb07f2fc8407c9356103eb53c419 +0 -0
  64. data/test/dummy/tmp/cache/assets/development/sprockets/c71d61ab8105e8c42bf9dc173a72671d +0 -0
  65. data/test/dummy/tmp/cache/assets/development/sprockets/cebc6db0bbb8120f430da3970b173d2f +0 -0
  66. data/test/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  67. data/test/dummy/tmp/cache/assets/development/sprockets/d247d1ed3987a4834f22fb867bdca6bc +0 -0
  68. data/test/dummy/tmp/cache/assets/development/sprockets/d47632ab6c54bae0f6a62e211aca4938 +0 -0
  69. data/test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  70. data/test/dummy/tmp/cache/assets/development/sprockets/dd1bfc325578c5b436921f471d625afa +0 -0
  71. data/test/dummy/tmp/cache/assets/development/sprockets/f333e4623731332ab806c650e07ef890 +0 -0
  72. data/test/dummy/tmp/cache/assets/development/sprockets/f4a9eb5609520a5f6dbad5dbdbeb37ca +0 -0
  73. data/test/dummy/tmp/cache/assets/development/sprockets/f56253b5f374fff1a33fbbc9881c9124 +0 -0
  74. data/test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  75. data/test/dummy/tmp/pids/server.pid +1 -0
  76. metadata +130 -14
  77. data/app/helpers/twitter_ratchet_rails/application_helper.rb +0 -4
  78. data/app/views/layouts/twitter_ratchet_rails/application.html.erb +0 -14
  79. data/test/test_helper.rb +0 -15
  80. data/test/twitter_ratchet_rails_test.rb +0 -7
@@ -1,23 +1,27 @@
1
1
  /*!
2
2
  * =====================================================
3
- * Ratchet v2.0.1 (http://goratchet.com)
3
+ * Ratchet v2.0.2 (http://goratchet.com)
4
4
  * Copyright 2014 Connor Sears
5
- * Licensed under MIT.
5
+ * Licensed under MIT (https://github.com/twbs/ratchet/blob/master/LICENSE)
6
6
  *
7
- * v2.0.1 designed by @connors.
7
+ * v2.0.2 designed by @connors.
8
8
  * =====================================================
9
9
  */
10
- /* ----------------------------------
11
- * MODAL v2.0.1
12
- * Licensed under The MIT License
13
- * http://opensource.org/licenses/MIT
14
- * ---------------------------------- */
10
+ /* ========================================================================
11
+ * Ratchet: modals.js v2.0.2
12
+ * http://goratchet.com/components#modals
13
+ * ========================================================================
14
+ * Copyright 2014 Connor Sears
15
+ * Licensed under MIT (https://github.com/twbs/ratchet/blob/master/LICENSE)
16
+ * ======================================================================== */
15
17
 
16
18
  !(function () {
17
19
  'use strict';
18
20
 
19
21
  var findModals = function (target) {
20
- var i, modals = document.querySelectorAll('a');
22
+ var i;
23
+ var modals = document.querySelectorAll('a');
24
+
21
25
  for (; target && target !== document; target = target.parentNode) {
22
26
  for (i = modals.length; i--;) {
23
27
  if (modals[i] === target) {
@@ -45,11 +49,13 @@
45
49
  });
46
50
  }());
47
51
 
48
- /* ----------------------------------
49
- * POPOVER v2.0.1
50
- * Licensed under The MIT License
51
- * http://opensource.org/licenses/MIT
52
- * ---------------------------------- */
52
+ /* ========================================================================
53
+ * Ratchet: popovers.js v2.0.2
54
+ * http://goratchet.com/components#popovers
55
+ * ========================================================================
56
+ * Copyright 2014 Connor Sears
57
+ * Licensed under MIT (https://github.com/twbs/ratchet/blob/master/LICENSE)
58
+ * ======================================================================== */
53
59
 
54
60
  !(function () {
55
61
  'use strict';
@@ -57,7 +63,9 @@
57
63
  var popover;
58
64
 
59
65
  var findPopovers = function (target) {
60
- var i, popovers = document.querySelectorAll('a');
66
+ var i;
67
+ var popovers = document.querySelectorAll('a');
68
+
61
69
  for (; target && target !== document; target = target.parentNode) {
62
70
  for (i = popovers.length; i--;) {
63
71
  if (popovers[i] === target) {
@@ -100,7 +108,7 @@
100
108
  popover = null;
101
109
  }
102
110
 
103
- if (popover == null) {
111
+ if (popover === null) {
104
112
  return;
105
113
  }
106
114
 
@@ -126,16 +134,17 @@
126
134
  };
127
135
 
128
136
  window.addEventListener('touchend', showHidePopover);
129
- window.addEventListener('click', showHidePopover);
130
137
 
131
138
  }());
132
139
 
133
- /* ----------------------------------
134
- * PUSH v2.0.1
135
- * Licensed under The MIT License
136
- * inspired by chris's jquery.pjax.js
137
- * http://opensource.org/licenses/MIT
138
- * ---------------------------------- */
140
+ /* ========================================================================
141
+ * Ratchet: push.js v2.0.2
142
+ * http://goratchet.com/components#push
143
+ * ========================================================================
144
+ * inspired by @defunkt's jquery.pjax.js
145
+ * Copyright 2014 Connor Sears
146
+ * Licensed under MIT (https://github.com/twbs/ratchet/blob/master/LICENSE)
147
+ * ======================================================================== */
139
148
 
140
149
  /* global _gaq: true */
141
150
 
@@ -145,7 +154,7 @@
145
154
  var noop = function () {};
146
155
 
147
156
 
148
- // Pushstate cacheing
157
+ // Pushstate caching
149
158
  // ==================
150
159
 
151
160
  var isScrolling;
@@ -153,9 +162,9 @@
153
162
  var cacheMapping = sessionStorage;
154
163
  var domCache = {};
155
164
  var transitionMap = {
156
- 'slide-in' : 'slide-out',
157
- 'slide-out' : 'slide-in',
158
- 'fade' : 'fade'
165
+ slideIn : 'slide-out',
166
+ slideOut : 'slide-in',
167
+ fade : 'fade'
159
168
  };
160
169
 
161
170
  var bars = {
@@ -524,7 +533,9 @@
524
533
  };
525
534
 
526
535
  var findTarget = function (target) {
527
- var i, toggles = document.querySelectorAll('a');
536
+ var i;
537
+ var toggles = document.querySelectorAll('a');
538
+
528
539
  for (; target && target !== document; target = target.parentNode) {
529
540
  for (i = toggles.length; i--;) {
530
541
  if (toggles[i] === target) {
@@ -585,7 +596,8 @@
585
596
  }
586
597
 
587
598
  data.title = head.querySelector('title');
588
- data.title = data.title && data.title.innerText.trim();
599
+ var text = 'innerText' in data.title ? 'innerText' : 'textContent';
600
+ data.title = data.title && data.title[text].trim();
589
601
 
590
602
  if (options.transition) {
591
603
  data = extendWithDom(data, '.content', body);
@@ -609,17 +621,21 @@
609
621
 
610
622
  }());
611
623
 
612
- /* ----------------------------------
613
- * Segmented controls v2.0.1
614
- * Licensed under The MIT License
615
- * http://opensource.org/licenses/MIT
616
- * ---------------------------------- */
624
+ /* ========================================================================
625
+ * Ratchet: segmented-controllers.js v2.0.2
626
+ * http://goratchet.com/components#segmentedControls
627
+ * ========================================================================
628
+ * Copyright 2014 Connor Sears
629
+ * Licensed under MIT (https://github.com/twbs/ratchet/blob/master/LICENSE)
630
+ * ======================================================================== */
617
631
 
618
632
  !(function () {
619
633
  'use strict';
620
634
 
621
635
  var getTarget = function (target) {
622
- var i, segmentedControls = document.querySelectorAll('.segmented-control .control-item');
636
+ var i;
637
+ var segmentedControls = document.querySelectorAll('.segmented-control .control-item');
638
+
623
639
  for (; target && target !== document; target = target.parentNode) {
624
640
  for (i = segmentedControls.length; i--;) {
625
641
  if (segmentedControls[i] === target) {
@@ -670,12 +686,15 @@
670
686
 
671
687
  window.addEventListener('click', function (e) { if (getTarget(e.target)) {e.preventDefault();} });
672
688
  }());
673
- /* ----------------------------------
674
- * SLIDER v2.0.1
675
- * Licensed under The MIT License
676
- * Adapted from Brad Birdsall's swipe
677
- * http://opensource.org/licenses/MIT
678
- * ---------------------------------- */
689
+
690
+ /* ========================================================================
691
+ * Ratchet: sliders.js v2.0.2
692
+ * http://goratchet.com/components#sliders
693
+ * ========================================================================
694
+ Adapted from Brad Birdsall's swipe
695
+ * Copyright 2014 Connor Sears
696
+ * Licensed under MIT (https://github.com/twbs/ratchet/blob/master/LICENSE)
697
+ * ======================================================================== */
679
698
 
680
699
  !(function () {
681
700
  'use strict';
@@ -695,7 +714,9 @@
695
714
  var scrollableArea;
696
715
 
697
716
  var getSlider = function (target) {
698
- var i, sliders = document.querySelectorAll('.slider > .slide-group');
717
+ var i;
718
+ var sliders = document.querySelectorAll('.slider > .slide-group');
719
+
699
720
  for (; target && target !== document; target = target.parentNode) {
700
721
  for (i = sliders.length; i--;) {
701
722
  if (sliders[i] === target) {
@@ -706,14 +727,16 @@
706
727
  };
707
728
 
708
729
  var getScroll = function () {
709
- var translate3d = slider.style.webkitTransform.match(/translate3d\(([^,]*)/);
710
- var ret = translate3d ? translate3d[1] : 0;
711
- return parseInt(ret, 10);
730
+ if ('webkitTransform' in slider.style) {
731
+ var translate3d = slider.style.webkitTransform.match(/translate3d\(([^,]*)/);
732
+ var ret = translate3d ? translate3d[1] : 0;
733
+ return parseInt(ret, 10);
734
+ }
712
735
  };
713
736
 
714
737
  var setSlideNumber = function (offset) {
715
738
  var round = offset ? (deltaX < 0 ? 'ceil' : 'floor') : 'round';
716
- slideNumber = Math[round](getScroll() / ( scrollableArea / slider.children.length) );
739
+ slideNumber = Math[round](getScroll() / (scrollableArea / slider.children.length));
717
740
  slideNumber += offset;
718
741
  slideNumber = Math.min(slideNumber, 0);
719
742
  slideNumber = Math.max(-(slider.children.length - 1), slideNumber);
@@ -801,11 +824,14 @@
801
824
 
802
825
  }());
803
826
 
804
- /* ----------------------------------
805
- * TOGGLE v2.0.1
806
- * Licensed under The MIT License
807
- * http://opensource.org/licenses/MIT
808
- * ---------------------------------- */
827
+ /* ========================================================================
828
+ * Ratchet: toggles.js v2.0.2
829
+ * http://goratchet.com/components#toggles
830
+ * ========================================================================
831
+ Adapted from Brad Birdsall's swipe
832
+ * Copyright 2014 Connor Sears
833
+ * Licensed under MIT (https://github.com/twbs/ratchet/blob/master/LICENSE)
834
+ * ======================================================================== */
809
835
 
810
836
  !(function () {
811
837
  'use strict';
@@ -816,7 +842,9 @@
816
842
  var toggle = false;
817
843
 
818
844
  var findToggle = function (target) {
819
- var i, toggles = document.querySelectorAll('.toggle');
845
+ var i;
846
+ var toggles = document.querySelectorAll('.toggle');
847
+
820
848
  for (; target && target !== document; target = target.parentNode) {
821
849
  for (i = toggles.length; i--;) {
822
850
  if (toggles[i] === target) {
@@ -879,7 +907,7 @@
879
907
 
880
908
  handle.style.webkitTransform = 'translate3d(' + distanceX + 'px,0,0)';
881
909
 
882
- toggle.classList[(distanceX > (toggleWidth/2 - handleWidth/2)) ? 'add' : 'remove']('active');
910
+ toggle.classList[(distanceX > (toggleWidth / 2 - handleWidth / 2)) ? 'add' : 'remove']('active');
883
911
  });
884
912
 
885
913
  window.addEventListener('touchend', function (e) {
@@ -891,7 +919,7 @@
891
919
  var toggleWidth = toggle.clientWidth;
892
920
  var handleWidth = handle.clientWidth;
893
921
  var offset = (toggleWidth - handleWidth);
894
- var slideOn = (!touchMove && !toggle.classList.contains('active')) || (touchMove && (distanceX > (toggleWidth/2 - handleWidth/2)));
922
+ var slideOn = (!touchMove && !toggle.classList.contains('active')) || (touchMove && (distanceX > (toggleWidth / 2 - handleWidth / 2)));
895
923
 
896
924
  if (slideOn) {
897
925
  handle.style.webkitTransform = 'translate3d(' + offset + 'px,0,0)';
@@ -0,0 +1,65 @@
1
+ /* ========================================================================
2
+ * Ratchet: segmented-controllers.js v2.0.2
3
+ * http://goratchet.com/components#segmentedControls
4
+ * ========================================================================
5
+ * Copyright 2014 Connor Sears
6
+ * Licensed under MIT (https://github.com/twbs/ratchet/blob/master/LICENSE)
7
+ * ======================================================================== */
8
+
9
+ !(function () {
10
+ 'use strict';
11
+
12
+ var getTarget = function (target) {
13
+ var i;
14
+ var segmentedControls = document.querySelectorAll('.segmented-control .control-item');
15
+
16
+ for (; target && target !== document; target = target.parentNode) {
17
+ for (i = segmentedControls.length; i--;) {
18
+ if (segmentedControls[i] === target) {
19
+ return target;
20
+ }
21
+ }
22
+ }
23
+ };
24
+
25
+ window.addEventListener('touchend', function (e) {
26
+ var activeTab;
27
+ var activeBodies;
28
+ var targetBody;
29
+ var targetTab = getTarget(e.target);
30
+ var className = 'active';
31
+ var classSelector = '.' + className;
32
+
33
+ if (!targetTab) {
34
+ return;
35
+ }
36
+
37
+ activeTab = targetTab.parentNode.querySelector(classSelector);
38
+
39
+ if (activeTab) {
40
+ activeTab.classList.remove(className);
41
+ }
42
+
43
+ targetTab.classList.add(className);
44
+
45
+ if (!targetTab.hash) {
46
+ return;
47
+ }
48
+
49
+ targetBody = document.querySelector(targetTab.hash);
50
+
51
+ if (!targetBody) {
52
+ return;
53
+ }
54
+
55
+ activeBodies = targetBody.parentNode.querySelectorAll(classSelector);
56
+
57
+ for (var i = 0; i < activeBodies.length; i++) {
58
+ activeBodies[i].classList.remove(className);
59
+ }
60
+
61
+ targetBody.classList.add(className);
62
+ });
63
+
64
+ window.addEventListener('click', function (e) { if (getTarget(e.target)) {e.preventDefault();} });
65
+ }());
@@ -0,0 +1,136 @@
1
+ /* ========================================================================
2
+ * Ratchet: sliders.js v2.0.2
3
+ * http://goratchet.com/components#sliders
4
+ * ========================================================================
5
+ Adapted from Brad Birdsall's swipe
6
+ * Copyright 2014 Connor Sears
7
+ * Licensed under MIT (https://github.com/twbs/ratchet/blob/master/LICENSE)
8
+ * ======================================================================== */
9
+
10
+ !(function () {
11
+ 'use strict';
12
+
13
+ var pageX;
14
+ var pageY;
15
+ var slider;
16
+ var deltaX;
17
+ var deltaY;
18
+ var offsetX;
19
+ var lastSlide;
20
+ var startTime;
21
+ var resistance;
22
+ var sliderWidth;
23
+ var slideNumber;
24
+ var isScrolling;
25
+ var scrollableArea;
26
+
27
+ var getSlider = function (target) {
28
+ var i;
29
+ var sliders = document.querySelectorAll('.slider > .slide-group');
30
+
31
+ for (; target && target !== document; target = target.parentNode) {
32
+ for (i = sliders.length; i--;) {
33
+ if (sliders[i] === target) {
34
+ return target;
35
+ }
36
+ }
37
+ }
38
+ };
39
+
40
+ var getScroll = function () {
41
+ if ('webkitTransform' in slider.style) {
42
+ var translate3d = slider.style.webkitTransform.match(/translate3d\(([^,]*)/);
43
+ var ret = translate3d ? translate3d[1] : 0;
44
+ return parseInt(ret, 10);
45
+ }
46
+ };
47
+
48
+ var setSlideNumber = function (offset) {
49
+ var round = offset ? (deltaX < 0 ? 'ceil' : 'floor') : 'round';
50
+ slideNumber = Math[round](getScroll() / (scrollableArea / slider.children.length));
51
+ slideNumber += offset;
52
+ slideNumber = Math.min(slideNumber, 0);
53
+ slideNumber = Math.max(-(slider.children.length - 1), slideNumber);
54
+ };
55
+
56
+ var onTouchStart = function (e) {
57
+ slider = getSlider(e.target);
58
+
59
+ if (!slider) {
60
+ return;
61
+ }
62
+
63
+ var firstItem = slider.querySelector('.slide');
64
+
65
+ scrollableArea = firstItem.offsetWidth * slider.children.length;
66
+ isScrolling = undefined;
67
+ sliderWidth = slider.offsetWidth;
68
+ resistance = 1;
69
+ lastSlide = -(slider.children.length - 1);
70
+ startTime = +new Date();
71
+ pageX = e.touches[0].pageX;
72
+ pageY = e.touches[0].pageY;
73
+ deltaX = 0;
74
+ deltaY = 0;
75
+
76
+ setSlideNumber(0);
77
+
78
+ slider.style['-webkit-transition-duration'] = 0;
79
+ };
80
+
81
+ var onTouchMove = function (e) {
82
+ if (e.touches.length > 1 || !slider) {
83
+ return; // Exit if a pinch || no slider
84
+ }
85
+
86
+ deltaX = e.touches[0].pageX - pageX;
87
+ deltaY = e.touches[0].pageY - pageY;
88
+ pageX = e.touches[0].pageX;
89
+ pageY = e.touches[0].pageY;
90
+
91
+ if (typeof isScrolling === 'undefined') {
92
+ isScrolling = Math.abs(deltaY) > Math.abs(deltaX);
93
+ }
94
+
95
+ if (isScrolling) {
96
+ return;
97
+ }
98
+
99
+ offsetX = (deltaX / resistance) + getScroll();
100
+
101
+ e.preventDefault();
102
+
103
+ resistance = slideNumber === 0 && deltaX > 0 ? (pageX / sliderWidth) + 1.25 :
104
+ slideNumber === lastSlide && deltaX < 0 ? (Math.abs(pageX) / sliderWidth) + 1.25 : 1;
105
+
106
+ slider.style.webkitTransform = 'translate3d(' + offsetX + 'px,0,0)';
107
+ };
108
+
109
+ var onTouchEnd = function (e) {
110
+ if (!slider || isScrolling) {
111
+ return;
112
+ }
113
+
114
+ setSlideNumber(
115
+ (+new Date()) - startTime < 1000 && Math.abs(deltaX) > 15 ? (deltaX < 0 ? -1 : 1) : 0
116
+ );
117
+
118
+ offsetX = slideNumber * sliderWidth;
119
+
120
+ slider.style['-webkit-transition-duration'] = '.2s';
121
+ slider.style.webkitTransform = 'translate3d(' + offsetX + 'px,0,0)';
122
+
123
+ e = new CustomEvent('slide', {
124
+ detail: { slideNumber: Math.abs(slideNumber) },
125
+ bubbles: true,
126
+ cancelable: true
127
+ });
128
+
129
+ slider.parentNode.dispatchEvent(e);
130
+ };
131
+
132
+ window.addEventListener('touchstart', onTouchStart);
133
+ window.addEventListener('touchmove', onTouchMove);
134
+ window.addEventListener('touchend', onTouchEnd);
135
+
136
+ }());