antiscroll_rails 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 303bf65f95909bcf742d0453154c582665d22108
4
+ data.tar.gz: ee788cf6e34cf7c7049049e7a24d373d81317e8e
5
+ SHA512:
6
+ metadata.gz: 99e5d0d0aeb682e92c7da4c36a8be7954ae45d2ea6e616f88fcd6e52caba1840c826fb72c915e36a883fcef5730a003576f1ec3e88e1d6bcad5e716435d93d21
7
+ data.tar.gz: 3615acd8433598d4f2c5cf8094ca93be81bc5fb70f51c92757a266d2e042f7cbde9e3fdf392315cc0ff886e3d0816be33af50e6288c41d714e1ec9543742aabb
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in antiscroll_rails.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Guy Israeli
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,32 @@
1
+ # AntiscrollRails
2
+
3
+ antiscroll.js for rails
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'antiscroll_rails'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install antiscroll_rails
18
+
19
+ ## Usage
20
+
21
+ add to manifests
22
+
23
+ //= require antiscroll
24
+
25
+ *= require antiscroll
26
+ ## Contributing
27
+
28
+ 1. Fork it ( https://github.com/[my-github-username]/antiscroll_rails/fork )
29
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
30
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
31
+ 4. Push to the branch (`git push origin my-new-feature`)
32
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'antiscroll_rails/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "antiscroll_rails"
8
+ spec.version = AntiscrollRails::VERSION
9
+ spec.authors = ["Guy Israeli"]
10
+ spec.email = ["guy.israeli@gmail.com"]
11
+ spec.summary = %q{Antiscroll.js for Rails}
12
+ spec.description = %q{creating OS X Lion type scrollbars - Antiscroll, for Rails!}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.6"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_dependency "railties", ">= 3.1"
24
+ spec.add_dependency "jquery-mousewheel_rails", "~>3.1.11"
25
+ end
@@ -0,0 +1,3 @@
1
+ module AntiscrollRails
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,8 @@
1
+ require "antiscroll_rails/version"
2
+
3
+ module AntiscrollRails
4
+ module Rails
5
+ class Engine < ::Rails::Engine
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,471 @@
1
+ (function ($) {
2
+
3
+ /**
4
+ * Augment jQuery prototype.
5
+ */
6
+
7
+ $.fn.antiscroll = function (options) {
8
+ return this.each(function () {
9
+ if ($(this).data('antiscroll')) {
10
+ $(this).data('antiscroll').destroy();
11
+ }
12
+
13
+ $(this).data('antiscroll', new $.Antiscroll(this, options));
14
+ });
15
+ };
16
+
17
+ /**
18
+ * Expose constructor.
19
+ */
20
+
21
+ $.Antiscroll = Antiscroll;
22
+
23
+ /**
24
+ * Antiscroll pane constructor.
25
+ *
26
+ * @param {Element|jQuery} main pane
27
+ * @parma {Object} options
28
+ * @api public
29
+ */
30
+
31
+ function Antiscroll (el, opts) {
32
+ this.el = $(el);
33
+ this.options = opts || {};
34
+
35
+ this.x = (false !== this.options.x) || this.options.forceHorizontal;
36
+ this.y = (false !== this.options.y) || this.options.forceVertical;
37
+ this.autoHide = false !== this.options.autoHide;
38
+ this.padding = undefined == this.options.padding ? 2 : this.options.padding;
39
+
40
+ this.inner = this.el.find('.antiscroll-inner');
41
+ this.inner.css({
42
+ 'width': '+=' + (this.y ? scrollbarSize() : 0)
43
+ , 'height': '+=' + (this.x ? scrollbarSize() : 0)
44
+ });
45
+
46
+ this.refresh();
47
+ };
48
+
49
+ /**
50
+ * refresh scrollbars
51
+ *
52
+ * @api public
53
+ */
54
+
55
+ Antiscroll.prototype.refresh = function() {
56
+ var needHScroll = this.inner.get(0).scrollWidth > this.el.width() + (this.y ? scrollbarSize() : 0),
57
+ needVScroll = this.inner.get(0).scrollHeight > this.el.height() + (this.x ? scrollbarSize() : 0);
58
+
59
+ if (this.x) {
60
+ if (!this.horizontal && needHScroll) {
61
+ this.horizontal = new Scrollbar.Horizontal(this);
62
+ } else if (this.horizontal && !needHScroll) {
63
+ this.horizontal.destroy();
64
+ this.horizontal = null;
65
+ } else if (this.horizontal) {
66
+ this.horizontal.update();
67
+ }
68
+ }
69
+
70
+ if (this.y) {
71
+ if (!this.vertical && needVScroll) {
72
+ this.vertical = new Scrollbar.Vertical(this);
73
+ } else if (this.vertical && !needVScroll) {
74
+ this.vertical.destroy();
75
+ this.vertical = null;
76
+ } else if (this.vertical) {
77
+ this.vertical.update();
78
+ }
79
+ }
80
+ };
81
+
82
+ /**
83
+ * Cleans up.
84
+ *
85
+ * @return {Antiscroll} for chaining
86
+ * @api public
87
+ */
88
+
89
+ Antiscroll.prototype.destroy = function () {
90
+ if (this.horizontal) {
91
+ this.horizontal.destroy();
92
+ this.horizontal = null
93
+ }
94
+ if (this.vertical) {
95
+ this.vertical.destroy();
96
+ this.vertical = null
97
+ }
98
+ return this;
99
+ };
100
+
101
+ /**
102
+ * Rebuild Antiscroll.
103
+ *
104
+ * @return {Antiscroll} for chaining
105
+ * @api public
106
+ */
107
+
108
+ Antiscroll.prototype.rebuild = function () {
109
+ this.destroy();
110
+ this.inner.attr('style', '');
111
+ Antiscroll.call(this, this.el, this.options);
112
+ return this;
113
+ };
114
+
115
+ /**
116
+ * Scrollbar constructor.
117
+ *
118
+ * @param {Element|jQuery} element
119
+ * @api public
120
+ */
121
+
122
+ function Scrollbar (pane) {
123
+ this.pane = pane;
124
+ this.pane.el.append(this.el);
125
+ this.innerEl = this.pane.inner.get(0);
126
+
127
+ this.dragging = false;
128
+ this.enter = false;
129
+ this.shown = false;
130
+
131
+ // hovering
132
+ this.pane.el.mouseenter($.proxy(this, 'mouseenter'));
133
+ this.pane.el.mouseleave($.proxy(this, 'mouseleave'));
134
+
135
+ // dragging
136
+ this.el.mousedown($.proxy(this, 'mousedown'));
137
+
138
+ // scrolling
139
+ this.innerPaneScrollListener = $.proxy(this, 'scroll');
140
+ this.pane.inner.scroll(this.innerPaneScrollListener);
141
+
142
+ // wheel -optional-
143
+ this.innerPaneMouseWheelListener = $.proxy(this, 'mousewheel');
144
+ this.pane.inner.bind('mousewheel', this.innerPaneMouseWheelListener);
145
+
146
+ // show
147
+ var initialDisplay = this.pane.options.initialDisplay;
148
+
149
+ if (initialDisplay !== false) {
150
+ this.show();
151
+ if (this.pane.autoHide) {
152
+ this.hiding = setTimeout($.proxy(this, 'hide'), parseInt(initialDisplay, 10) || 3000);
153
+ }
154
+ }
155
+ };
156
+
157
+ /**
158
+ * Cleans up.
159
+ *
160
+ * @return {Scrollbar} for chaining
161
+ * @api public
162
+ */
163
+
164
+ Scrollbar.prototype.destroy = function () {
165
+ this.el.remove();
166
+ this.pane.inner.unbind('scroll', this.innerPaneScrollListener);
167
+ this.pane.inner.unbind('mousewheel', this.innerPaneMouseWheelListener);
168
+ return this;
169
+ };
170
+
171
+ /**
172
+ * Called upon mouseenter.
173
+ *
174
+ * @api private
175
+ */
176
+
177
+ Scrollbar.prototype.mouseenter = function () {
178
+ this.enter = true;
179
+ this.show();
180
+ };
181
+
182
+ /**
183
+ * Called upon mouseleave.
184
+ *
185
+ * @api private
186
+ */
187
+
188
+ Scrollbar.prototype.mouseleave = function () {
189
+ this.enter = false;
190
+
191
+ if (!this.dragging) {
192
+ if (this.pane.autoHide) {
193
+ this.hide();
194
+ }
195
+ }
196
+ };
197
+
198
+ /**
199
+ * Called upon wrap scroll.
200
+ *
201
+ * @api private
202
+ */
203
+
204
+ Scrollbar.prototype.scroll = function () {
205
+ if (!this.shown) {
206
+ this.show();
207
+ if (!this.enter && !this.dragging) {
208
+ if (this.pane.autoHide) {
209
+ this.hiding = setTimeout($.proxy(this, 'hide'), 1500);
210
+ }
211
+ }
212
+ }
213
+
214
+ this.update();
215
+ };
216
+
217
+ /**
218
+ * Called upon scrollbar mousedown.
219
+ *
220
+ * @api private
221
+ */
222
+
223
+ Scrollbar.prototype.mousedown = function (ev) {
224
+ ev.preventDefault();
225
+
226
+ this.dragging = true;
227
+
228
+ this.startPageY = ev.pageY - parseInt(this.el.css('top'), 10);
229
+ this.startPageX = ev.pageX - parseInt(this.el.css('left'), 10);
230
+
231
+ // prevent crazy selections on IE
232
+ this.el[0].ownerDocument.onselectstart = function () { return false; };
233
+
234
+ var pane = this.pane,
235
+ move = $.proxy(this, 'mousemove'),
236
+ self = this
237
+
238
+ $(this.el[0].ownerDocument)
239
+ .mousemove(move)
240
+ .mouseup(function () {
241
+ self.dragging = false;
242
+ this.onselectstart = null;
243
+
244
+ $(this).unbind('mousemove', move);
245
+
246
+ if (!self.enter) {
247
+ self.hide();
248
+ }
249
+ });
250
+ };
251
+
252
+ /**
253
+ * Show scrollbar.
254
+ *
255
+ * @api private
256
+ */
257
+
258
+ Scrollbar.prototype.show = function (duration) {
259
+ if (!this.shown && this.update()) {
260
+ this.el.addClass('antiscroll-scrollbar-shown');
261
+ if (this.hiding) {
262
+ clearTimeout(this.hiding);
263
+ this.hiding = null;
264
+ }
265
+ this.shown = true;
266
+ }
267
+ };
268
+
269
+ /**
270
+ * Hide scrollbar.
271
+ *
272
+ * @api private
273
+ */
274
+
275
+ Scrollbar.prototype.hide = function () {
276
+ if (this.pane.autoHide !== false && this.shown) {
277
+ // check for dragging
278
+ this.el.removeClass('antiscroll-scrollbar-shown');
279
+ this.shown = false;
280
+ }
281
+ };
282
+
283
+ /**
284
+ * Horizontal scrollbar constructor
285
+ *
286
+ * @api private
287
+ */
288
+
289
+ Scrollbar.Horizontal = function (pane) {
290
+ this.el = $('<div class="antiscroll-scrollbar antiscroll-scrollbar-horizontal"/>', pane.el);
291
+ Scrollbar.call(this, pane);
292
+ };
293
+
294
+ /**
295
+ * Inherits from Scrollbar.
296
+ */
297
+
298
+ inherits(Scrollbar.Horizontal, Scrollbar);
299
+
300
+ /**
301
+ * Updates size/position of scrollbar.
302
+ *
303
+ * @api private
304
+ */
305
+
306
+ Scrollbar.Horizontal.prototype.update = function () {
307
+ var paneWidth = this.pane.el.width(),
308
+ trackWidth = paneWidth - this.pane.padding * 2,
309
+ innerEl = this.pane.inner.get(0)
310
+
311
+ this.el
312
+ .css('width', trackWidth * paneWidth / innerEl.scrollWidth)
313
+ .css('left', trackWidth * innerEl.scrollLeft / innerEl.scrollWidth);
314
+
315
+ return paneWidth < innerEl.scrollWidth;
316
+ };
317
+
318
+ /**
319
+ * Called upon drag.
320
+ *
321
+ * @api private
322
+ */
323
+
324
+ Scrollbar.Horizontal.prototype.mousemove = function (ev) {
325
+ var trackWidth = this.pane.el.width() - this.pane.padding * 2,
326
+ pos = ev.pageX - this.startPageX,
327
+ barWidth = this.el.width(),
328
+ innerEl = this.pane.inner.get(0)
329
+
330
+ // minimum top is 0, maximum is the track height
331
+ var y = Math.min(Math.max(pos, 0), trackWidth - barWidth);
332
+
333
+ innerEl.scrollLeft = (innerEl.scrollWidth - this.pane.el.width())
334
+ * y / (trackWidth - barWidth);
335
+ };
336
+
337
+ /**
338
+ * Called upon container mousewheel.
339
+ *
340
+ * @api private
341
+ */
342
+
343
+ Scrollbar.Horizontal.prototype.mousewheel = function (ev, delta, x, y) {
344
+ if ((x < 0 && 0 == this.pane.inner.get(0).scrollLeft) ||
345
+ (x > 0 && (this.innerEl.scrollLeft + Math.ceil(this.pane.el.width())
346
+ == this.innerEl.scrollWidth))) {
347
+ ev.preventDefault();
348
+ return false;
349
+ }
350
+ };
351
+
352
+ /**
353
+ * Vertical scrollbar constructor
354
+ *
355
+ * @api private
356
+ */
357
+
358
+ Scrollbar.Vertical = function (pane) {
359
+ this.el = $('<div class="antiscroll-scrollbar antiscroll-scrollbar-vertical"/>', pane.el);
360
+ Scrollbar.call(this, pane);
361
+ };
362
+
363
+ /**
364
+ * Inherits from Scrollbar.
365
+ */
366
+
367
+ inherits(Scrollbar.Vertical, Scrollbar);
368
+
369
+ /**
370
+ * Updates size/position of scrollbar.
371
+ *
372
+ * @api private
373
+ */
374
+
375
+ Scrollbar.Vertical.prototype.update = function () {
376
+ var paneHeight = this.pane.el.height(),
377
+ trackHeight = paneHeight - this.pane.padding * 2,
378
+ innerEl = this.innerEl;
379
+
380
+ var scrollbarHeight = trackHeight * paneHeight / innerEl.scrollHeight;
381
+ scrollbarHeight = scrollbarHeight < 20 ? 20 : scrollbarHeight;
382
+
383
+ var topPos = trackHeight * innerEl.scrollTop / innerEl.scrollHeight;
384
+
385
+ if((topPos + scrollbarHeight) > trackHeight) {
386
+ var diff = (topPos + scrollbarHeight) - trackHeight;
387
+ topPos = topPos - diff - 3;
388
+ }
389
+
390
+ this.el
391
+ .css('height', scrollbarHeight)
392
+ .css('top', topPos);
393
+
394
+ return paneHeight < innerEl.scrollHeight;
395
+ };
396
+
397
+ /**
398
+ * Called upon drag.
399
+ *
400
+ * @api private
401
+ */
402
+
403
+ Scrollbar.Vertical.prototype.mousemove = function (ev) {
404
+ var paneHeight = this.pane.el.height(),
405
+ trackHeight = paneHeight - this.pane.padding * 2,
406
+ pos = ev.pageY - this.startPageY,
407
+ barHeight = this.el.height(),
408
+ innerEl = this.innerEl
409
+
410
+ // minimum top is 0, maximum is the track height
411
+ var y = Math.min(Math.max(pos, 0), trackHeight - barHeight);
412
+
413
+ innerEl.scrollTop = (innerEl.scrollHeight - paneHeight)
414
+ * y / (trackHeight - barHeight);
415
+ };
416
+
417
+ /**
418
+ * Called upon container mousewheel.
419
+ *
420
+ * @api private
421
+ */
422
+
423
+ Scrollbar.Vertical.prototype.mousewheel = function (ev, delta, x, y) {
424
+ if ((y > 0 && 0 == this.innerEl.scrollTop) ||
425
+ (y < 0 && (this.innerEl.scrollTop + Math.ceil(this.pane.el.height())
426
+ == this.innerEl.scrollHeight))) {
427
+ ev.preventDefault();
428
+ return false;
429
+ }
430
+ };
431
+
432
+ /**
433
+ * Cross-browser inheritance.
434
+ *
435
+ * @param {Function} constructor
436
+ * @param {Function} constructor we inherit from
437
+ * @api private
438
+ */
439
+
440
+ function inherits (ctorA, ctorB) {
441
+ function f() {};
442
+ f.prototype = ctorB.prototype;
443
+ ctorA.prototype = new f;
444
+ };
445
+
446
+ /**
447
+ * Scrollbar size detection.
448
+ */
449
+
450
+ var size;
451
+
452
+ function scrollbarSize () {
453
+ if (size === undefined) {
454
+ var div = $(
455
+ '<div class="antiscroll-inner" style="width:50px;height:50px;overflow-y:scroll;'
456
+ + 'position:absolute;top:-200px;left:-200px;"><div style="height:100px;width:100%"/>'
457
+ + '</div>'
458
+ );
459
+
460
+ $('body').append(div);
461
+ var w1 = $(div).innerWidth();
462
+ var w2 = $('div', div).innerWidth();
463
+ $(div).remove();
464
+
465
+ size = w1 - w2;
466
+ }
467
+
468
+ return size;
469
+ };
470
+
471
+ })(jQuery);
@@ -0,0 +1,60 @@
1
+ .antiscroll-wrap {
2
+ display: inline-block;
3
+ position: relative;
4
+ overflow: hidden;
5
+ }
6
+
7
+ .antiscroll-scrollbar {
8
+ background: gray;
9
+ background: rgba(0, 0, 0, 0.5);
10
+ border-radius: 7px;
11
+ -webkit-box-shadow: 0 0 1px #fff;
12
+ box-shadow: 0 0 1px #fff;
13
+ position: absolute;
14
+ opacity: 0;
15
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
16
+ -webkit-transition: linear 300ms opacity;
17
+ -moz-transition: linear 300ms opacity;
18
+ -o-transition: linear 300ms opacity;
19
+ }
20
+
21
+ .antiscroll-scrollbar-shown {
22
+ opacity: 1;
23
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
24
+ }
25
+
26
+ .antiscroll-scrollbar-horizontal {
27
+ height: 7px;
28
+ margin-left: 2px;
29
+ bottom: 2px;
30
+ left: 0;
31
+ }
32
+
33
+ .antiscroll-scrollbar-vertical {
34
+ width: 7px;
35
+ margin-top: 2px;
36
+ right: 2px;
37
+ top: 0;
38
+ }
39
+
40
+ .antiscroll-inner {
41
+ overflow: scroll;
42
+ }
43
+
44
+ /** A bug in Chrome 25 on Lion requires each selector to have their own
45
+ blocks. E.g. the following:
46
+
47
+ .antiscroll-inner::-webkit-scrollbar, .antiscroll-inner::scrollbar {...}
48
+
49
+ causes the width and height rules to be ignored by the browser resulting
50
+ in both native and antiscroll scrollbars appearing at the same time.
51
+ */
52
+ .antiscroll-inner::-webkit-scrollbar {
53
+ width: 0;
54
+ height: 0;
55
+ }
56
+
57
+ .antiscroll-inner::scrollbar {
58
+ width: 0;
59
+ height: 0;
60
+ }
metadata ADDED
@@ -0,0 +1,111 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: antiscroll_rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Guy Israeli
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: railties
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '3.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '3.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: jquery-mousewheel_rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 3.1.11
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 3.1.11
69
+ description: creating OS X Lion type scrollbars - Antiscroll, for Rails!
70
+ email:
71
+ - guy.israeli@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - Gemfile
78
+ - LICENSE.txt
79
+ - README.md
80
+ - Rakefile
81
+ - antiscroll_rails.gemspec
82
+ - lib/antiscroll_rails.rb
83
+ - lib/antiscroll_rails/version.rb
84
+ - vendor/javascripts/antiscroll.js
85
+ - vendor/stylesheets/antiscroll.css
86
+ homepage: ''
87
+ licenses:
88
+ - MIT
89
+ metadata: {}
90
+ post_install_message:
91
+ rdoc_options: []
92
+ require_paths:
93
+ - lib
94
+ required_ruby_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ requirements: []
105
+ rubyforge_project:
106
+ rubygems_version: 2.2.2
107
+ signing_key:
108
+ specification_version: 4
109
+ summary: Antiscroll.js for Rails
110
+ test_files: []
111
+ has_rdoc: