jquery-smooth-scroll-rails 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: dfefec1e7d7aada47a298565e019b7e28f671ebe
4
+ data.tar.gz: ad6db3084d690982799b0bf94cb897801515cea7
5
+ SHA512:
6
+ metadata.gz: 7b8cf622f038c987402a7293725fe949c8fe9ce14ea69fd1b57368e1f53c3d571838521b6669b9255c229ff6a213a861dcb113bc4e47d4f867a549bdc804ef0f
7
+ data.tar.gz: cdcf5c9cd9a8cda70ec150125c7560f5d6eff10223c42daf3917e1ec6447faa1a998a23f2f29e27313a20934887c0c51535d35a6b060505670320b6a8e973f3d
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012 mahm
1
+ Copyright (c) 2014 mahm
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,10 +1,30 @@
1
1
  ## Installation
2
2
 
3
- Add this to your `Gemfile`:
3
+ Rails programmer will have [jquery-smooth-scroll plugin](https://github.com/kswedberg/jquery-smooth-scroll) in asset pipeline when using this little shiny thang. Bling you scrolling!
4
+
5
+ There is no gem of this version bumping fork yet.
6
+
7
+ ### Rails 4
8
+
9
+ Add this to your project's `Gemfile`:
4
10
 
5
11
  ```ruby
6
12
  group :assets do
7
- gem 'smooth-scroll-rails'
13
+ #gem 'jquery-smooth-scroll-rails'
14
+ gem 'jquery-smooth-scroll-rails', :git => 'git@github.com:gretel/jquery-smooth-scroll-rails.git'
8
15
  end
9
16
  ```
10
17
 
18
+ Add this to `application.js`, possibly at `app/assets/javascripts/application.js`:
19
+
20
+ //= require jquery-smooth-scroll
21
+
22
+ For production you might need to [re-precompile](http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets) assets:
23
+
24
+ RAILS_ENV=production bundle exec rake assets:precompile
25
+
26
+ The actual usage is [explained here](https://github.com/kswedberg/jquery-smooth-scroll/blob/master/readme.md).
27
+
28
+ ### Rails 3
29
+
30
+ Dunno if it works, sorry. Please report any issues.
@@ -0,0 +1,222 @@
1
+ /*
2
+ * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
3
+ *
4
+ * Uses the built in easing capabilities added In jQuery 1.1
5
+ * to offer multiple easing options
6
+ *
7
+ * TERMS OF USE - jQuery Easing
8
+ *
9
+ * Open source under the BSD License.
10
+ *
11
+ * Copyright © 2008 George McGinley Smith
12
+ * All rights reserved.
13
+ *
14
+ * Redistribution and use in source and binary forms, with or without modification,
15
+ * are permitted provided that the following conditions are met:
16
+ *
17
+ * Redistributions of source code must retain the above copyright notice, this list of
18
+ * conditions and the following disclaimer.
19
+ * Redistributions in binary form must reproduce the above copyright notice, this list
20
+ * of conditions and the following disclaimer in the documentation and/or other materials
21
+ * provided with the distribution.
22
+ *
23
+ * Neither the name of the author nor the names of contributors may be used to endorse
24
+ * or promote products derived from this software without specific prior written permission.
25
+ *
26
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
27
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
28
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
29
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
31
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
32
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
33
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
34
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
35
+ *
36
+ */
37
+
38
+ // t: current time, b: begInnIng value, c: change In value, d: duration
39
+ jQuery.easing['jswing'] = jQuery.easing['swing'];
40
+
41
+ jQuery.extend(jQuery.easing, {
42
+ def: 'easeOutQuad',
43
+ swing: function(x, t, b, c, d) {
44
+ //alert(jQuery.easing.default);
45
+ return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
46
+ },
47
+ easeInQuad: function(x, t, b, c, d) {
48
+ return c * (t /= d) * t + b;
49
+ },
50
+ easeOutQuad: function(x, t, b, c, d) {
51
+ return -c * (t /= d) * (t - 2) + b;
52
+ },
53
+ easeInOutQuad: function(x, t, b, c, d) {
54
+ if ((t /= d / 2) < 1) return c / 2 * t * t + b;
55
+ return -c / 2 * ((--t) * (t - 2) - 1) + b;
56
+ },
57
+ easeInCubic: function(x, t, b, c, d) {
58
+ return c * (t /= d) * t * t + b;
59
+ },
60
+ easeOutCubic: function(x, t, b, c, d) {
61
+ return c * ((t = t / d - 1) * t * t + 1) + b;
62
+ },
63
+ easeInOutCubic: function(x, t, b, c, d) {
64
+ if ((t /= d / 2) < 1) return c / 2 * t * t * t + b;
65
+ return c / 2 * ((t -= 2) * t * t + 2) + b;
66
+ },
67
+ easeInQuart: function(x, t, b, c, d) {
68
+ return c * (t /= d) * t * t * t + b;
69
+ },
70
+ easeOutQuart: function(x, t, b, c, d) {
71
+ return -c * ((t = t / d - 1) * t * t * t - 1) + b;
72
+ },
73
+ easeInOutQuart: function(x, t, b, c, d) {
74
+ if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b;
75
+ return -c / 2 * ((t -= 2) * t * t * t - 2) + b;
76
+ },
77
+ easeInQuint: function(x, t, b, c, d) {
78
+ return c * (t /= d) * t * t * t * t + b;
79
+ },
80
+ easeOutQuint: function(x, t, b, c, d) {
81
+ return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
82
+ },
83
+ easeInOutQuint: function(x, t, b, c, d) {
84
+ if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b;
85
+ return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
86
+ },
87
+ easeInSine: function(x, t, b, c, d) {
88
+ return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
89
+ },
90
+ easeOutSine: function(x, t, b, c, d) {
91
+ return c * Math.sin(t / d * (Math.PI / 2)) + b;
92
+ },
93
+ easeInOutSine: function(x, t, b, c, d) {
94
+ return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
95
+ },
96
+ easeInExpo: function(x, t, b, c, d) {
97
+ return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
98
+ },
99
+ easeOutExpo: function(x, t, b, c, d) {
100
+ return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;
101
+ },
102
+ easeInOutExpo: function(x, t, b, c, d) {
103
+ if (t == 0) return b;
104
+ if (t == d) return b + c;
105
+ if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
106
+ return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;
107
+ },
108
+ easeInCirc: function(x, t, b, c, d) {
109
+ return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
110
+ },
111
+ easeOutCirc: function(x, t, b, c, d) {
112
+ return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
113
+ },
114
+ easeInOutCirc: function(x, t, b, c, d) {
115
+ if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
116
+ return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
117
+ },
118
+ easeInElastic: function(x, t, b, c, d) {
119
+ var s = 1.70158;
120
+ var p = 0;
121
+ var a = c;
122
+ if (t == 0) return b;
123
+ if ((t /= d) == 1) return b + c;
124
+ if (!p) p = d * .3;
125
+ if (a < Math.abs(c)) {
126
+ a = c;
127
+ var s = p / 4;
128
+ } else var s = p / (2 * Math.PI) * Math.asin(c / a);
129
+ return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
130
+ },
131
+ easeOutElastic: function(x, t, b, c, d) {
132
+ var s = 1.70158;
133
+ var p = 0;
134
+ var a = c;
135
+ if (t == 0) return b;
136
+ if ((t /= d) == 1) return b + c;
137
+ if (!p) p = d * .3;
138
+ if (a < Math.abs(c)) {
139
+ a = c;
140
+ var s = p / 4;
141
+ } else var s = p / (2 * Math.PI) * Math.asin(c / a);
142
+ return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;
143
+ },
144
+ easeInOutElastic: function(x, t, b, c, d) {
145
+ var s = 1.70158;
146
+ var p = 0;
147
+ var a = c;
148
+ if (t == 0) return b;
149
+ if ((t /= d / 2) == 2) return b + c;
150
+ if (!p) p = d * (.3 * 1.5);
151
+ if (a < Math.abs(c)) {
152
+ a = c;
153
+ var s = p / 4;
154
+ } else var s = p / (2 * Math.PI) * Math.asin(c / a);
155
+ if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
156
+ return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;
157
+ },
158
+ easeInBack: function(x, t, b, c, d, s) {
159
+ if (s == undefined) s = 1.70158;
160
+ return c * (t /= d) * t * ((s + 1) * t - s) + b;
161
+ },
162
+ easeOutBack: function(x, t, b, c, d, s) {
163
+ if (s == undefined) s = 1.70158;
164
+ return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
165
+ },
166
+ easeInOutBack: function(x, t, b, c, d, s) {
167
+ if (s == undefined) s = 1.70158;
168
+ if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
169
+ return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
170
+ },
171
+ easeInBounce: function(x, t, b, c, d) {
172
+ return c - jQuery.easing.easeOutBounce(x, d - t, 0, c, d) + b;
173
+ },
174
+ easeOutBounce: function(x, t, b, c, d) {
175
+ if ((t /= d) < (1 / 2.75)) {
176
+ return c * (7.5625 * t * t) + b;
177
+ } else if (t < (2 / 2.75)) {
178
+ return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
179
+ } else if (t < (2.5 / 2.75)) {
180
+ return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
181
+ } else {
182
+ return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
183
+ }
184
+ },
185
+ easeInOutBounce: function(x, t, b, c, d) {
186
+ if (t < d / 2) return jQuery.easing.easeInBounce(x, t * 2, 0, c, d) * .5 + b;
187
+ return jQuery.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b;
188
+ }
189
+ });
190
+
191
+ /*
192
+ *
193
+ * TERMS OF USE - EASING EQUATIONS
194
+ *
195
+ * Open source under the BSD License.
196
+ *
197
+ * Copyright © 2001 Robert Penner
198
+ * All rights reserved.
199
+ *
200
+ * Redistribution and use in source and binary forms, with or without modification,
201
+ * are permitted provided that the following conditions are met:
202
+ *
203
+ * Redistributions of source code must retain the above copyright notice, this list of
204
+ * conditions and the following disclaimer.
205
+ * Redistributions in binary form must reproduce the above copyright notice, this list
206
+ * of conditions and the following disclaimer in the documentation and/or other materials
207
+ * provided with the distribution.
208
+ *
209
+ * Neither the name of the author nor the names of contributors may be used to endorse
210
+ * or promote products derived from this software without specific prior written permission.
211
+ *
212
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
213
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
214
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
215
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
216
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
217
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
218
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
219
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
220
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
221
+ *
222
+ */
@@ -0,0 +1,267 @@
1
+ /*!
2
+ * Smooth Scroll - v1.4.13 - 2013-11-02
3
+ * https://github.com/kswedberg/jquery-smooth-scroll
4
+ * Copyright (c) 2013 Karl Swedberg
5
+ * Licensed MIT (https://github.com/kswedberg/jquery-smooth-scroll/blob/master/LICENSE-MIT)
6
+ */
7
+
8
+ (function($) {
9
+ var version = '1.4.13',
10
+ optionOverrides = {},
11
+ defaults = {
12
+ exclude: [],
13
+ excludeWithin: [],
14
+ offset: 0,
15
+
16
+ // one of 'top' or 'left'
17
+ direction: 'top',
18
+
19
+ // jQuery set of elements you wish to scroll (for $.smoothScroll).
20
+ // if null (default), $('html, body').firstScrollable() is used.
21
+ scrollElement: null,
22
+
23
+ // only use if you want to override default behavior
24
+ scrollTarget: null,
25
+
26
+ // fn(opts) function to be called before scrolling occurs.
27
+ // `this` is the element(s) being scrolled
28
+ beforeScroll: function() {},
29
+
30
+ // fn(opts) function to be called after scrolling occurs.
31
+ // `this` is the triggering element
32
+ afterScroll: function() {},
33
+ easing: 'swing',
34
+ speed: 400,
35
+
36
+ // coefficient for "auto" speed
37
+ autoCoefficent: 2,
38
+
39
+ // $.fn.smoothScroll only: whether to prevent the default click action
40
+ preventDefault: true
41
+ },
42
+
43
+ getScrollable = function(opts) {
44
+ var scrollable = [],
45
+ scrolled = false,
46
+ dir = opts.dir && opts.dir == 'left' ? 'scrollLeft' : 'scrollTop';
47
+
48
+ this.each(function() {
49
+
50
+ if (this == document || this == window) {
51
+ return;
52
+ }
53
+ var el = $(this);
54
+ if (el[dir]() > 0) {
55
+ scrollable.push(this);
56
+ } else {
57
+ // if scroll(Top|Left) === 0, nudge the element 1px and see if it moves
58
+ el[dir](1);
59
+ scrolled = el[dir]() > 0;
60
+ if (scrolled) {
61
+ scrollable.push(this);
62
+ }
63
+ // then put it back, of course
64
+ el[dir](0);
65
+ }
66
+ });
67
+
68
+ // If no scrollable elements, fall back to <body>,
69
+ // if it's in the jQuery collection
70
+ // (doing this because Safari sets scrollTop async,
71
+ // so can't set it to 1 and immediately get the value.)
72
+ if (!scrollable.length) {
73
+ this.each(function(index) {
74
+ if (this.nodeName === 'BODY') {
75
+ scrollable = [this];
76
+ }
77
+ });
78
+ }
79
+
80
+ // Use the first scrollable element if we're calling firstScrollable()
81
+ if (opts.el === 'first' && scrollable.length > 1) {
82
+ scrollable = [scrollable[0]];
83
+ }
84
+
85
+ return scrollable;
86
+ },
87
+ isTouch = 'ontouchend' in document;
88
+
89
+ $.fn.extend({
90
+ scrollable: function(dir) {
91
+ var scrl = getScrollable.call(this, {
92
+ dir: dir
93
+ });
94
+ return this.pushStack(scrl);
95
+ },
96
+ firstScrollable: function(dir) {
97
+ var scrl = getScrollable.call(this, {
98
+ el: 'first',
99
+ dir: dir
100
+ });
101
+ return this.pushStack(scrl);
102
+ },
103
+
104
+ smoothScroll: function(options, extra) {
105
+ options = options || {};
106
+
107
+ if (options === 'options') {
108
+ if (!extra) {
109
+ return this.first().data('ssOpts');
110
+ }
111
+ return this.each(function() {
112
+ var $this = $(this),
113
+ opts = $.extend($this.data('ssOpts') || {}, extra);
114
+
115
+ $(this).data('ssOpts', opts);
116
+ });
117
+ }
118
+
119
+ var opts = $.extend({}, $.fn.smoothScroll.defaults, options),
120
+ locationPath = $.smoothScroll.filterPath(location.pathname);
121
+
122
+ this
123
+ .unbind('click.smoothscroll')
124
+ .bind('click.smoothscroll', function(event) {
125
+ var link = this,
126
+ $link = $(this),
127
+ thisOpts = $.extend({}, opts, $link.data('ssOpts') || {}),
128
+ exclude = opts.exclude,
129
+ excludeWithin = thisOpts.excludeWithin,
130
+ elCounter = 0,
131
+ ewlCounter = 0,
132
+ include = true,
133
+ clickOpts = {},
134
+ hostMatch = ((location.hostname === link.hostname) || !link.hostname),
135
+ pathMatch = thisOpts.scrollTarget || ($.smoothScroll.filterPath(link.pathname) || locationPath) === locationPath,
136
+ thisHash = escapeSelector(link.hash);
137
+
138
+ if (!thisOpts.scrollTarget && (!hostMatch || !pathMatch || !thisHash)) {
139
+ include = false;
140
+ } else {
141
+ while (include && elCounter < exclude.length) {
142
+ if ($link.is(escapeSelector(exclude[elCounter++]))) {
143
+ include = false;
144
+ }
145
+ }
146
+ while (include && ewlCounter < excludeWithin.length) {
147
+ if ($link.closest(excludeWithin[ewlCounter++]).length) {
148
+ include = false;
149
+ }
150
+ }
151
+ }
152
+
153
+ if (include) {
154
+
155
+ if (thisOpts.preventDefault) {
156
+ event.preventDefault();
157
+ }
158
+
159
+ $.extend(clickOpts, thisOpts, {
160
+ scrollTarget: thisOpts.scrollTarget || thisHash,
161
+ link: link
162
+ });
163
+ $.smoothScroll(clickOpts);
164
+ }
165
+ });
166
+
167
+ return this;
168
+ }
169
+ });
170
+
171
+ $.smoothScroll = function(options, px) {
172
+ if (options === 'options' && typeof px === 'object') {
173
+ return $.extend(optionOverrides, px);
174
+ }
175
+ var opts, $scroller, scrollTargetOffset, speed,
176
+ scrollerOffset = 0,
177
+ offPos = 'offset',
178
+ scrollDir = 'scrollTop',
179
+ aniProps = {},
180
+ aniOpts = {},
181
+ scrollprops = [];
182
+
183
+ if (typeof options === 'number') {
184
+ opts = $.extend({
185
+ link: null
186
+ }, $.fn.smoothScroll.defaults, optionOverrides);
187
+ scrollTargetOffset = options;
188
+ } else {
189
+ opts = $.extend({
190
+ link: null
191
+ }, $.fn.smoothScroll.defaults, options || {}, optionOverrides);
192
+ if (opts.scrollElement) {
193
+ offPos = 'position';
194
+ if (opts.scrollElement.css('position') == 'static') {
195
+ opts.scrollElement.css('position', 'relative');
196
+ }
197
+ }
198
+ }
199
+
200
+ scrollDir = opts.direction == 'left' ? 'scrollLeft' : scrollDir;
201
+
202
+ if (opts.scrollElement) {
203
+ $scroller = opts.scrollElement;
204
+ if (!(/^(?:HTML|BODY)$/).test($scroller[0].nodeName)) {
205
+ scrollerOffset = $scroller[scrollDir]();
206
+ }
207
+ } else {
208
+ $scroller = $('html, body').firstScrollable(opts.direction);
209
+ }
210
+
211
+ // beforeScroll callback function must fire before calculating offset
212
+ opts.beforeScroll.call($scroller, opts);
213
+
214
+ scrollTargetOffset = (typeof options === 'number') ? options :
215
+ px ||
216
+ ($(opts.scrollTarget)[offPos]() &&
217
+ $(opts.scrollTarget)[offPos]()[opts.direction]) ||
218
+ 0;
219
+
220
+ aniProps[scrollDir] = scrollTargetOffset + scrollerOffset + opts.offset;
221
+ speed = opts.speed;
222
+
223
+ // automatically calculate the speed of the scroll based on distance / coefficient
224
+ if (speed === 'auto') {
225
+
226
+ // if aniProps[scrollDir] == 0 then we'll use scrollTop() value instead
227
+ speed = aniProps[scrollDir] || $scroller.scrollTop();
228
+
229
+ // divide the speed by the coefficient
230
+ speed = speed / opts.autoCoefficent;
231
+ }
232
+
233
+ aniOpts = {
234
+ duration: speed,
235
+ easing: opts.easing,
236
+ complete: function() {
237
+ opts.afterScroll.call(opts.link, opts);
238
+ }
239
+ };
240
+
241
+ if (opts.step) {
242
+ aniOpts.step = opts.step;
243
+ }
244
+
245
+ if ($scroller.length) {
246
+ $scroller.stop().animate(aniProps, aniOpts);
247
+ } else {
248
+ opts.afterScroll.call(opts.link, opts);
249
+ }
250
+ };
251
+
252
+ $.smoothScroll.version = version;
253
+ $.smoothScroll.filterPath = function(string) {
254
+ return string
255
+ .replace(/^\//, '')
256
+ .replace(/(?:index|default).[a-zA-Z]{3,4}$/, '')
257
+ .replace(/\/$/, '');
258
+ };
259
+
260
+ // default options
261
+ $.fn.smoothScroll.defaults = defaults;
262
+
263
+ function escapeSelector(str) {
264
+ return str.replace(/(:|\.)/g, '\\$1');
265
+ }
266
+
267
+ })(jQuery);
@@ -1,4 +1,4 @@
1
- require "jquey-smooth-scroll-rails/version"
1
+ require "jquery-smooth-scroll-rails/version"
2
2
 
3
3
  module JquerySmoothScrollRails
4
4
  class Engine < ::Rails::Engine
@@ -0,0 +1,3 @@
1
+ module JquerySmoothScrollRails
2
+ VERSION = "0.0.5"
3
+ end
metadata CHANGED
@@ -1,68 +1,64 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jquery-smooth-scroll-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.0.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - machida
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-22 00:00:00.000000000 Z
11
+ date: 2014-10-04 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: railties
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: '3.1'
19
+ version: '4.0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '3.1'
30
- description: SmoothScroll(A jQuery plugin that smooth scroll.) for rails.
26
+ version: '4.0'
27
+ description: Automatically make same-page links scroll smoothly
31
28
  email:
32
29
  - machida@fjord.jp
33
30
  executables: []
34
31
  extensions: []
35
32
  extra_rdoc_files: []
36
33
  files:
37
- - lib/jquey-smooth-scroll-rails/version.rb
38
- - lib/jquey-smooth-scroll-rails.rb
39
- - vendor/assets/javascripts/jquery.easing.js.coffee
40
- - vendor/assets/javascripts/jquery.smoothScroll.js.coffee
41
34
  - MIT-LICENSE
42
35
  - README.md
43
- homepage: http://fjord.jp
36
+ - app/assets/javascripts/jquery-easing.js
37
+ - app/assets/javascripts/jquery-smooth-scroll.js
38
+ - lib/jquery-smooth-scroll-rails.rb
39
+ - lib/jquery-smooth-scroll-rails/version.rb
40
+ homepage: https://github.com/machida/jquery-smooth-scroll-rails
44
41
  licenses: []
42
+ metadata: {}
45
43
  post_install_message:
46
44
  rdoc_options: []
47
45
  require_paths:
48
46
  - lib
49
47
  required_ruby_version: !ruby/object:Gem::Requirement
50
- none: false
51
48
  requirements:
52
- - - ! '>='
49
+ - - ">="
53
50
  - !ruby/object:Gem::Version
54
51
  version: '0'
55
52
  required_rubygems_version: !ruby/object:Gem::Requirement
56
- none: false
57
53
  requirements:
58
- - - ! '>='
54
+ - - ">="
59
55
  - !ruby/object:Gem::Version
60
56
  version: '0'
61
57
  requirements: []
62
58
  rubyforge_project:
63
- rubygems_version: 1.8.24
59
+ rubygems_version: 2.2.2
64
60
  signing_key:
65
- specification_version: 3
66
- summary: jquey-smooth-scroll for rails
61
+ specification_version: 4
62
+ summary: jquery-smooth-scroll for rails
67
63
  test_files: []
68
64
  has_rdoc:
@@ -1,3 +0,0 @@
1
- module JqueySmoothScrollRails
2
- VERSION = "0.0.3"
3
- end
@@ -1,223 +0,0 @@
1
- #
2
- # * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
3
- # *
4
- # * Uses the built in easing capabilities added In jQuery 1.1
5
- # * to offer multiple easing options
6
- # *
7
- # * TERMS OF USE - jQuery Easing
8
- # *
9
- # * Open source under the BSD License.
10
- # *
11
- # * Copyright c 2008 George McGinley Smith
12
- # * All rights reserved.
13
- # *
14
- # * Redistribution and use in source and binary forms, with or without modification,
15
- # * are permitted provided that the following conditions are met:
16
- # *
17
- # * Redistributions of source code must retain the above copyright notice, this list of
18
- # * conditions and the following disclaimer.
19
- # * Redistributions in binary form must reproduce the above copyright notice, this list
20
- # * of conditions and the following disclaimer in the documentation and/or other materials
21
- # * provided with the distribution.
22
- # *
23
- # * Neither the name of the author nor the names of contributors may be used to endorse
24
- # * or promote products derived from this software without specific prior written permission.
25
- # *
26
- # * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
27
- # * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
28
- # * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
29
- # * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
- # * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
31
- # * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
32
- # * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
33
- # * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
34
- # * OF THE POSSIBILITY OF SUCH DAMAGE.
35
- # *
36
- #
37
-
38
- # t: current time, b: begInnIng value, c: change In value, d: duration
39
- jQuery.easing["jswing"] = jQuery.easing["swing"]
40
- jQuery.extend jQuery.easing,
41
- def: "easeOutQuad"
42
- swing: (x, t, b, c, d) ->
43
-
44
- #alert(jQuery.easing.default);
45
- jQuery.easing[jQuery.easing.def] x, t, b, c, d
46
-
47
- easeInQuad: (x, t, b, c, d) ->
48
- c * (t /= d) * t + b
49
-
50
- easeOutQuad: (x, t, b, c, d) ->
51
- -c * (t /= d) * (t - 2) + b
52
-
53
- easeInOutQuad: (x, t, b, c, d) ->
54
- return c / 2 * t * t + b if (t /= d / 2) < 1
55
- -c / 2 * ((--t) * (t - 2) - 1) + b
56
-
57
- easeInCubic: (x, t, b, c, d) ->
58
- c * (t /= d) * t * t + b
59
-
60
- easeOutCubic: (x, t, b, c, d) ->
61
- c * ((t = t / d - 1) * t * t + 1) + b
62
-
63
- easeInOutCubic: (x, t, b, c, d) ->
64
- return c / 2 * t * t * t + b if (t /= d / 2) < 1
65
- c / 2 * ((t -= 2) * t * t + 2) + b
66
-
67
- easeInQuart: (x, t, b, c, d) ->
68
- c * (t /= d) * t * t * t + b
69
-
70
- easeOutQuart: (x, t, b, c, d) ->
71
- -c * ((t = t / d - 1) * t * t * t - 1) + b
72
-
73
- easeInOutQuart: (x, t, b, c, d) ->
74
- return c / 2 * t * t * t * t + b if (t /= d / 2) < 1
75
- -c / 2 * ((t -= 2) * t * t * t - 2) + b
76
-
77
- easeInQuint: (x, t, b, c, d) ->
78
- c * (t /= d) * t * t * t * t + b
79
-
80
- easeOutQuint: (x, t, b, c, d) ->
81
- c * ((t = t / d - 1) * t * t * t * t + 1) + b
82
-
83
- easeInOutQuint: (x, t, b, c, d) ->
84
- return c / 2 * t * t * t * t * t + b if (t /= d / 2) < 1
85
- c / 2 * ((t -= 2) * t * t * t * t + 2) + b
86
-
87
- easeInSine: (x, t, b, c, d) ->
88
- -c * Math.cos(t / d * (Math.PI / 2)) + c + b
89
-
90
- easeOutSine: (x, t, b, c, d) ->
91
- c * Math.sin(t / d * (Math.PI / 2)) + b
92
-
93
- easeInOutSine: (x, t, b, c, d) ->
94
- -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b
95
-
96
- easeInExpo: (x, t, b, c, d) ->
97
- (if (t is 0) then b else c * Math.pow(2, 10 * (t / d - 1)) + b)
98
-
99
- easeOutExpo: (x, t, b, c, d) ->
100
- (if (t is d) then b + c else c * (-Math.pow(2, -10 * t / d) + 1) + b)
101
-
102
- easeInOutExpo: (x, t, b, c, d) ->
103
- return b if t is 0
104
- return b + c if t is d
105
- return c / 2 * Math.pow(2, 10 * (t - 1)) + b if (t /= d / 2) < 1
106
- c / 2 * (-Math.pow(2, -10 * --t) + 2) + b
107
-
108
- easeInCirc: (x, t, b, c, d) ->
109
- -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b
110
-
111
- easeOutCirc: (x, t, b, c, d) ->
112
- c * Math.sqrt(1 - (t = t / d - 1) * t) + b
113
-
114
- easeInOutCirc: (x, t, b, c, d) ->
115
- return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b if (t /= d / 2) < 1
116
- c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b
117
-
118
- easeInElastic: (x, t, b, c, d) ->
119
- s = 1.70158
120
- p = 0
121
- a = c
122
- return b if t is 0
123
- return b + c if (t /= d) is 1
124
- p = d * .3 unless p
125
- if a < Math.abs(c)
126
- a = c
127
- s = p / 4
128
- else
129
- s = p / (2 * Math.PI) * Math.asin(c / a)
130
- -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b
131
-
132
- easeOutElastic: (x, t, b, c, d) ->
133
- s = 1.70158
134
- p = 0
135
- a = c
136
- return b if t is 0
137
- return b + c if (t /= d) is 1
138
- p = d * .3 unless p
139
- if a < Math.abs(c)
140
- a = c
141
- s = p / 4
142
- else
143
- s = p / (2 * Math.PI) * Math.asin(c / a)
144
- a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b
145
-
146
- easeInOutElastic: (x, t, b, c, d) ->
147
- s = 1.70158
148
- p = 0
149
- a = c
150
- return b if t is 0
151
- return b + c if (t /= d / 2) is 2
152
- p = d * (.3 * 1.5) unless p
153
- if a < Math.abs(c)
154
- a = c
155
- s = p / 4
156
- else
157
- s = p / (2 * Math.PI) * Math.asin(c / a)
158
- return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b if t < 1
159
- a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b
160
-
161
- easeInBack: (x, t, b, c, d, s) ->
162
- s = 1.70158 if s is `undefined`
163
- c * (t /= d) * t * ((s + 1) * t - s) + b
164
-
165
- easeOutBack: (x, t, b, c, d, s) ->
166
- s = 1.70158 if s is `undefined`
167
- c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b
168
-
169
- easeInOutBack: (x, t, b, c, d, s) ->
170
- s = 1.70158 if s is `undefined`
171
- return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b if (t /= d / 2) < 1
172
- c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b
173
-
174
- easeInBounce: (x, t, b, c, d) ->
175
- c - jQuery.easing.easeOutBounce(x, d - t, 0, c, d) + b
176
-
177
- easeOutBounce: (x, t, b, c, d) ->
178
- if (t /= d) < (1 / 2.75)
179
- c * (7.5625 * t * t) + b
180
- else if t < (2 / 2.75)
181
- c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b
182
- else if t < (2.5 / 2.75)
183
- c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b
184
- else
185
- c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b
186
-
187
- easeInOutBounce: (x, t, b, c, d) ->
188
- return jQuery.easing.easeInBounce(x, t * 2, 0, c, d) * .5 + b if t < d / 2
189
- jQuery.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b
190
-
191
-
192
- #
193
- # *
194
- # * TERMS OF USE - EASING EQUATIONS
195
- # *
196
- # * Open source under the BSD License.
197
- # *
198
- # * Copyright c 2001 Robert Penner
199
- # * All rights reserved.
200
- # *
201
- # * Redistribution and use in source and binary forms, with or without modification,
202
- # * are permitted provided that the following conditions are met:
203
- # *
204
- # * Redistributions of source code must retain the above copyright notice, this list of
205
- # * conditions and the following disclaimer.
206
- # * Redistributions in binary form must reproduce the above copyright notice, this list
207
- # * of conditions and the following disclaimer in the documentation and/or other materials
208
- # * provided with the distribution.
209
- # *
210
- # * Neither the name of the author nor the names of contributors may be used to endorse
211
- # * or promote products derived from this software without specific prior written permission.
212
- # *
213
- # * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
214
- # * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
215
- # * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
216
- # * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
217
- # * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
218
- # * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
219
- # * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
220
- # * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
221
- # * OF THE POSSIBILITY OF SUCH DAMAGE.
222
- # *
223
- #
@@ -1,148 +0,0 @@
1
- ###
2
- jQuery SmoothScroll Plugin
3
- Required: jQuery(http://jquery.com/)
4
- License: MIT
5
- Update: 2012/12/06
6
- Version: 1.1
7
- Original Author: yuu.creatorish
8
- Customized: machida
9
- URL: http://creatorish.com
10
- PluginURL: http://creatorish.com/lab/5393
11
- ###
12
-
13
- jQuery.fn.smoothScroll = (op) ->
14
- clickHandler = (e) ->
15
- e.preventDefault()
16
- e.stopPropagation()
17
- h = jQuery(this).attr("href")
18
- t = jQuery(h)
19
- t = d if t.length is 0
20
- scrolling = true
21
- if c
22
- s.attr
23
- st: c.scrollTop()
24
- sl: c.scrollLeft()
25
-
26
- else
27
- s.attr
28
- st: w.scrollTop()
29
- sl: w.scrollLeft()
30
-
31
- option.start s.attr("sl"), s.attr("st")
32
- o = t.offset()
33
- if c
34
- o = t.position()
35
- o.top = c.get(0).scrollHeight - c.innerHeight() if o.top > c.get(0).scrollHeight - c.innerHeight()
36
- s.stop(true).animate
37
- st: o.top
38
- sl: o.left
39
- ,
40
- duration: option.duration
41
- easing: option.easing
42
- step: stepHandler
43
- complete: completeHandler
44
-
45
- completeHandler = ->
46
- scrolling = false
47
- scroll @sl, @st
48
- option.complete @sl, @st
49
- stepHandler = ->
50
- scroll @sl, @st
51
- option.step @sl, @st
52
- scroll = (x, y) ->
53
- if c
54
- c.scrollLeft x
55
- c.scrollTop y
56
- else
57
- window.scrollTo x, y
58
- stopQueue = ->
59
- if scrolling
60
- option.canceled s.attr("sl"), s.attr("st")
61
- scrolling = false
62
- s.stop true
63
- scrollTo = (x, y) ->
64
- scrolling = true
65
- if c
66
- s.attr
67
- st: c.scrollTop()
68
- sl: c.scrollLeft()
69
-
70
- else
71
- s.attr
72
- st: w.scrollTop()
73
- sl: w.scrollLeft()
74
-
75
- option.start s.attr("sl"), s.attr("st")
76
- o =
77
- top: y
78
- left: x
79
-
80
- if c
81
- o.top = c.get(0).scrollHeight - c.innerHeight() if o.top > c.get(0).scrollHeight - c.innerHeight()
82
- o.left = c.get(0).scrollWidth - c.innerWidth() if o.left > c.get(0).scrollWidth - c.innerWidth()
83
- else
84
- o.top = document.body.scrollHeight - window.innerHeight if o.top > document.body.scrollHeight - window.innerHeight
85
- o.left = document.body.scrollWidth - window.innerWidth if o.left > document.body.scrollWidth - window.innerWidth
86
- s.stop(true).animate
87
- st: o.top
88
- sl: o.left
89
- ,
90
- duration: option.duration
91
- easing: option.easing
92
- step: stepHandler
93
- complete: completeHandler
94
-
95
- scrollToElement = (selector) ->
96
- o = jQuery(selector).offset()
97
- o = jQuery(selector).position() if c
98
- scrollTo o.left, o.top
99
- option =
100
- easing: "swing"
101
- duration: 500
102
- cancel: true
103
- target: null
104
- start: (x, y) ->
105
-
106
- step: (x, y) ->
107
-
108
- canceled: (x, y) ->
109
-
110
- complete: (x, y) ->
111
-
112
- jQuery.extend option, op
113
- scrolling = false
114
- w = jQuery(window)
115
- d = jQuery(document.body)
116
- s = jQuery(
117
- st: 0
118
- sl: 0
119
- v: 0
120
- )
121
- c = undefined
122
- if option.target
123
- c = jQuery(option.target)
124
- c.wrapInner "<div style='position: relative'></div>" unless c.children().length is 1
125
- if option.cancel
126
- if "ontouchend" of document
127
- if c
128
- c.unbind "touchstart", stopQueue
129
- c.bind "touchstart", stopQueue
130
- else
131
- d.unbind "touchstart", stopQueue
132
- d.bind "touchstart", stopQueue
133
- else
134
- if c
135
- c.bind "DOMMouseScroll mousewheel", stopQueue
136
- c.unbind "mousedown", stopQueue
137
- c.bind "mousedown", stopQueue
138
- else
139
- w.bind "DOMMouseScroll mousewheel", stopQueue
140
- d.unbind "mousedown", stopQueue
141
- d.bind "mousedown", stopQueue
142
- jQuery.each this, ->
143
- jQuery(this).unbind "click", clickHandler
144
- jQuery(this).bind "click", clickHandler
145
-
146
- scroll: scrollTo
147
- scrollToElement: scrollToElement
148
- stop: stopQueue