scrollreveal-rails 0.0.1
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 +15 -0
- data/.gitignore +7 -0
- data/.travis.yml +4 -0
- data/Changelog.md +4 -0
- data/Gemfile +2 -0
- data/Rakefile +5 -0
- data/Readme.md +134 -0
- data/app/assets/javascripts/scrollReveal.js +358 -0
- data/lib/scrollreveal-rails.rb +5 -0
- data/lib/scrollreveal/helper.rb +9 -0
- data/lib/scrollreveal/rails.rb +9 -0
- data/lib/scrollreveal/version.rb +3 -0
- data/scrollreveal-rails.gemspec +25 -0
- metadata +115 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZWNiOTY0ZGU4MTBjODA3YmEyYjFiYTRlYTdmMDBkZjc4MzM4YjIwZg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NGNhYTA4ZGJjMzVjYzI0ZjJlODUxNWFlYzExOGM4MmJiODY0YjJmYw==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MWE2MzhjM2JkOTMzNTllMjkwOTQ2N2U4OTY2NjlkMGRmZTU3NmE1NDY0ZWZk
|
10
|
+
YjNkYzYyNjQ2YjNkMTZkZGY0NzA4YjllMjMyOWE4NTdjMTY0NTc5YmM1Mjkz
|
11
|
+
YWE4MWU0ODViYTY0NWRlODJlNjgxYjU3Mzc0MGE3Yjg4NTMyYzk=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MGRmNTNjMDAwZTVhZGFmMTdiODQ3ZGUzMWY3NTkwZmI2OGM0MjcyYzJiZDhm
|
14
|
+
NzU0NTlkODNhNDAwN2NmNzhkMjFlMTgzYzI4ZTNlNTQ4NGYzOThmMjcyMDQ4
|
15
|
+
ZjAzNTM4Nzg3MTYwNmM5YTFjYTEwNzViMzEzMDQxYzJkMjlhNDk=
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Changelog.md
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
data/Readme.md
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
# Scrollreveal-Rails
|
2
|
+
|
3
|
+
A Ruby wrapper to integrate [scrollReveal](https://github.com/julianlloyd/scrollReveal.js) - A small library to create and maintain how elements fade in, triggered when they enter the viewport.
|
4
|
+
|
5
|
+
|
6
|
+
See the [demo application](http://fast-waters-6745.herokuapp.com) in action.
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add the gem to the Gemfile:
|
10
|
+
|
11
|
+
gem "scrollreveal-rails"
|
12
|
+
|
13
|
+
## Usage
|
14
|
+
|
15
|
+
Add ScrollReveal to your JS
|
16
|
+
Append the following lines to your app/assets/javascripts/application.js file:
|
17
|
+
|
18
|
+
//= require scrollReveal
|
19
|
+
|
20
|
+
$(function() {
|
21
|
+
window.scrollReveal = new scrollReveal();
|
22
|
+
});
|
23
|
+
|
24
|
+
|
25
|
+
Basic Usage
|
26
|
+
-----------
|
27
|
+
|
28
|
+
In your view `*.html.erb` or `*.html.haml`
|
29
|
+
|
30
|
+
<!-- Reveal using defaults. -->
|
31
|
+
scroll_reveal content: 'Holla!'
|
32
|
+
|
33
|
+
**But wait!** It’s more fun if you define your own reveal animation parameters, which you can do using using natural, declarative language:
|
34
|
+
|
35
|
+
<!-- Reveal using custom parameters. -->
|
36
|
+
scroll_reveal content: 'Foo', animation: 'enter left and move 50px over 1.33s'
|
37
|
+
scroll_reveal content: 'Bar', animation: 'enter from the bottom after 1s'
|
38
|
+
scroll_reveal content: 'Baz' animation: 'wait 2.5s and then ease-in-out 100px'
|
39
|
+
|
40
|
+
Getting Started
|
41
|
+
---------------
|
42
|
+
What you enter into the `data-scrollReveal` attribute is parsed for specific words:
|
43
|
+
|
44
|
+
- **keywords** that expect to be followed by a **value**.<br><br>
|
45
|
+
- **fillers** as natural language sugar. (optional)
|
46
|
+
|
47
|
+
#### Keywords and Values
|
48
|
+
These specific **keyword** / **value** pairs allow you to describe basic reveal animation behavior.
|
49
|
+
***
|
50
|
+
**keyword:** `enter` — Controls the vector origin of your reveal animation.<br>
|
51
|
+
**value:** `top` | `right` | `bottom` | `left`<br><br>
|
52
|
+
*Example:*
|
53
|
+
|
54
|
+
<!-- Reveal your element with a downward motion. -->
|
55
|
+
|
56
|
+
scroll_reveal content: 'Foo', animation: 'enter top'
|
57
|
+
|
58
|
+
***
|
59
|
+
**keyword:** `move` — The distance your revealing element travels.<br>
|
60
|
+
**value:** [ integer ]px.
|
61
|
+
|
62
|
+
*Example:*
|
63
|
+
|
64
|
+
scroll_reveal content: 'Foo', animation: 'move 24px'
|
65
|
+
|
66
|
+
***
|
67
|
+
**keyword:** `over` — The duration of your reveal animation.<br>
|
68
|
+
**value:** [ decimal ]s
|
69
|
+
|
70
|
+
|
71
|
+
*Example:*
|
72
|
+
|
73
|
+
scroll_reveal content: 'Foo', animation: 'over 1.66s'
|
74
|
+
|
75
|
+
***
|
76
|
+
**keyword:** `after/wait` — The duration before your reveal begins.<br>
|
77
|
+
**value:** [ decimal ]s
|
78
|
+
|
79
|
+
|
80
|
+
*Example:*
|
81
|
+
|
82
|
+
<!-- Both are accepted. -->
|
83
|
+
|
84
|
+
scroll_reveal content: 'Mel', animation: 'after 0.33s'
|
85
|
+
scroll_reveal content: 'Mel', animation: 'wait 0.33s'
|
86
|
+
|
87
|
+
####Combining Keyword/Value Pairs
|
88
|
+
You can easily combine the above pairs to create more dynamic reveal animations.
|
89
|
+
|
90
|
+
*Example:*
|
91
|
+
|
92
|
+
scroll_reveal content: 'Foo', animation: 'enter top move 50px'
|
93
|
+
scroll_reveal content: 'Bar', animation: 'enter top move 50px, after 0.3s'
|
94
|
+
scroll_reveal content: 'Baz', animation: 'enter top move 50px, after 0.6s'
|
95
|
+
scroll_reveal content: 'Mel', animation: 'enter top move 50px, after 0.9s'
|
96
|
+
|
97
|
+
####Passing Blocks
|
98
|
+
You can easily pass a block too.
|
99
|
+
|
100
|
+
*Example:*
|
101
|
+
|
102
|
+
scroll_reveal animation: 'enter top move 50px' do
|
103
|
+
image_tag 'foo.jpg'
|
104
|
+
end
|
105
|
+
|
106
|
+
|
107
|
+
#### Fillers (optional)
|
108
|
+
You can use conjoining filler words for more readable language.
|
109
|
+
|
110
|
+
- `from`
|
111
|
+
- `the`
|
112
|
+
- `and`
|
113
|
+
- `then`
|
114
|
+
- `but`
|
115
|
+
- `with`
|
116
|
+
- `,`
|
117
|
+
|
118
|
+
*Example*:
|
119
|
+
|
120
|
+
<!-- These 4 lines are equivalent. -->
|
121
|
+
|
122
|
+
scroll_reveal content: 'Foo', animation: 'wait 0.3s, then enter left and move 40px over 2s'
|
123
|
+
scroll_reveal content: 'Bar', animation: 'enter from the left after 0.3s, move 40px, over 2s'
|
124
|
+
scroll_reveal content: 'Baz', animation: 'enter left move 40px over 2s after 0.3s'
|
125
|
+
scroll_reveal content: 'Mel', animation: 'enter left, move 40px, over 2s, wait 0.3s'
|
126
|
+
|
127
|
+
|
128
|
+
## Licensing
|
129
|
+
|
130
|
+
|
131
|
+
The gem itself is released under the MIT license
|
132
|
+
|
133
|
+
:pray:
|
134
|
+
|
@@ -0,0 +1,358 @@
|
|
1
|
+
/*
|
2
|
+
_ _ _____ _ _
|
3
|
+
| | | __ \ | | (_)
|
4
|
+
___ ___ _ __ ___ | | | |__) |_____ _____ __ _| | _ ___
|
5
|
+
/ __|/ __| '__/ _ \| | | _ // _ \ \ / / _ \/ _` | | | / __|
|
6
|
+
\__ \ (__| | | (_) | | | | \ \ __/\ V / __/ (_| | |_| \__ \
|
7
|
+
|___/\___|_| \___/|_|_|_| \_\___| \_/ \___|\__,_|_(_) |___/ v.0.0.2
|
8
|
+
_/ |
|
9
|
+
|__/
|
10
|
+
|
11
|
+
"Declarative on-scroll reveal animations."
|
12
|
+
|
13
|
+
/*=============================================================================
|
14
|
+
|
15
|
+
scrollReveal.js was inspired by cbpScroller.js (c) 2014 Codrops.
|
16
|
+
|
17
|
+
Licensed under the MIT license.
|
18
|
+
http://www.opensource.org/licenses/mit-license.php
|
19
|
+
|
20
|
+
scrollReveal.js (c) 2014 Julian Lloyd
|
21
|
+
|
22
|
+
=============================================================================*/
|
23
|
+
|
24
|
+
window.scrollReveal = (function (window) {
|
25
|
+
|
26
|
+
'use strict';
|
27
|
+
|
28
|
+
function scrollReveal(options) {
|
29
|
+
|
30
|
+
this.docElem = window.document.documentElement;
|
31
|
+
this.options = this.extend(this.defaults, options);
|
32
|
+
|
33
|
+
if (this.options.init == true) this.init();
|
34
|
+
}
|
35
|
+
|
36
|
+
scrollReveal.prototype = {
|
37
|
+
|
38
|
+
defaults: {
|
39
|
+
after: '0s',
|
40
|
+
enter: 'bottom',
|
41
|
+
move: '24px',
|
42
|
+
over: '0.66s',
|
43
|
+
easing: 'ease-in-out',
|
44
|
+
|
45
|
+
// if 0, the element is considered in the viewport as soon as it enters
|
46
|
+
// if 1, the element is considered in the viewport when it's fully visible
|
47
|
+
viewportFactor: 0.33,
|
48
|
+
|
49
|
+
// if false, animations occur only once
|
50
|
+
// if true, animations occur each time an element enters the viewport
|
51
|
+
reset: false,
|
52
|
+
|
53
|
+
// if true, scrollReveal.init() is automaticaly called upon instantiation
|
54
|
+
init: true
|
55
|
+
},
|
56
|
+
|
57
|
+
/*=============================================================================*/
|
58
|
+
|
59
|
+
init: function () {
|
60
|
+
|
61
|
+
this.scrolled = false;
|
62
|
+
|
63
|
+
var self = this;
|
64
|
+
|
65
|
+
// Check DOM for the data-scrollReveal attribute
|
66
|
+
// and initialize all found elements.
|
67
|
+
this.elems = Array.prototype.slice.call(this.docElem.querySelectorAll('[data-scrollReveal]'));
|
68
|
+
this.elems.forEach(function (el, i) {
|
69
|
+
self.update(el);
|
70
|
+
});
|
71
|
+
|
72
|
+
var scrollHandler = function () {
|
73
|
+
if (!self.scrolled) {
|
74
|
+
self.scrolled = true;
|
75
|
+
setTimeout(function () {
|
76
|
+
self._scrollPage();
|
77
|
+
}, 60);
|
78
|
+
}
|
79
|
+
};
|
80
|
+
|
81
|
+
var resizeHandler = function () {
|
82
|
+
|
83
|
+
// If we’re still waiting for settimeout, reset the timer.
|
84
|
+
if (self.resizeTimeout) {
|
85
|
+
clearTimeout(self.resizeTimeout);
|
86
|
+
}
|
87
|
+
function delayed() {
|
88
|
+
self._scrollPage();
|
89
|
+
self.resizeTimeout = null;
|
90
|
+
}
|
91
|
+
self.resizeTimeout = setTimeout(delayed, 200);
|
92
|
+
};
|
93
|
+
|
94
|
+
window.addEventListener('scroll', scrollHandler, false);
|
95
|
+
window.addEventListener('resize', resizeHandler, false);
|
96
|
+
},
|
97
|
+
|
98
|
+
/*=============================================================================*/
|
99
|
+
|
100
|
+
_scrollPage: function () {
|
101
|
+
var self = this;
|
102
|
+
|
103
|
+
this.elems.forEach(function (el, i) {
|
104
|
+
self.update(el);
|
105
|
+
});
|
106
|
+
this.scrolled = false;
|
107
|
+
},
|
108
|
+
|
109
|
+
/*=============================================================================*/
|
110
|
+
|
111
|
+
parseLanguage: function (el) {
|
112
|
+
|
113
|
+
// Splits on a sequence of one or more commas or spaces.
|
114
|
+
var words = el.getAttribute('data-scrollreveal').split(/[, ]+/),
|
115
|
+
parsed = {};
|
116
|
+
|
117
|
+
function filter (words) {
|
118
|
+
var ret = [],
|
119
|
+
|
120
|
+
blacklist = [
|
121
|
+
"from",
|
122
|
+
"the",
|
123
|
+
"and",
|
124
|
+
"then",
|
125
|
+
"but",
|
126
|
+
"with"
|
127
|
+
];
|
128
|
+
|
129
|
+
words.forEach(function (word, i) {
|
130
|
+
if (blacklist.indexOf(word) > -1) {
|
131
|
+
return;
|
132
|
+
}
|
133
|
+
ret.push(word);
|
134
|
+
});
|
135
|
+
|
136
|
+
return ret;
|
137
|
+
}
|
138
|
+
|
139
|
+
words = filter(words);
|
140
|
+
|
141
|
+
words.forEach(function (word, i) {
|
142
|
+
|
143
|
+
switch (word) {
|
144
|
+
case "enter":
|
145
|
+
parsed.enter = words[i + 1];
|
146
|
+
return;
|
147
|
+
|
148
|
+
case "after":
|
149
|
+
parsed.after = words[i + 1];
|
150
|
+
return;
|
151
|
+
|
152
|
+
case "wait":
|
153
|
+
parsed.after = words[i + 1];
|
154
|
+
return;
|
155
|
+
|
156
|
+
case "move":
|
157
|
+
parsed.move = words[i + 1];
|
158
|
+
return;
|
159
|
+
|
160
|
+
case "ease":
|
161
|
+
parsed.move = words[i + 1];
|
162
|
+
parsed.ease = "ease";
|
163
|
+
return;
|
164
|
+
|
165
|
+
case "ease-in":
|
166
|
+
parsed.move = words[i + 1];
|
167
|
+
parsed.easing = "ease-in";
|
168
|
+
return;
|
169
|
+
|
170
|
+
case "ease-in-out":
|
171
|
+
parsed.move = words[i + 1];
|
172
|
+
parsed.easing = "ease-in-out";
|
173
|
+
return;
|
174
|
+
|
175
|
+
case "ease-out":
|
176
|
+
parsed.move = words[i + 1];
|
177
|
+
parsed.easing = "ease-out";
|
178
|
+
return;
|
179
|
+
|
180
|
+
case "over":
|
181
|
+
parsed.over = words[i + 1];
|
182
|
+
return;
|
183
|
+
|
184
|
+
default:
|
185
|
+
return;
|
186
|
+
}
|
187
|
+
});
|
188
|
+
|
189
|
+
return parsed;
|
190
|
+
},
|
191
|
+
|
192
|
+
|
193
|
+
/*=============================================================================*/
|
194
|
+
|
195
|
+
update: function (el) {
|
196
|
+
var css = this.genCSS(el);
|
197
|
+
|
198
|
+
if (!el.getAttribute('data-scrollReveal-initialized')) {
|
199
|
+
el.setAttribute('style', css.initial);
|
200
|
+
el.setAttribute('data-scrollReveal-initialized', true);
|
201
|
+
}
|
202
|
+
|
203
|
+
if (!this.isElementInViewport(el, this.options.viewportFactor)) {
|
204
|
+
if (this.options.reset) {
|
205
|
+
el.setAttribute('style', css.initial + css.reset);
|
206
|
+
}
|
207
|
+
return;
|
208
|
+
}
|
209
|
+
|
210
|
+
if (el.getAttribute('data-scrollReveal-complete')) return;
|
211
|
+
|
212
|
+
if (this.isElementInViewport(el, this.options.viewportFactor)) {
|
213
|
+
el.setAttribute('style', css.target + css.transition);
|
214
|
+
// Without reset enabled, we can safely remove the style tag
|
215
|
+
// to prevent CSS specificy wars with authored CSS.
|
216
|
+
if (!this.options.reset) {
|
217
|
+
setTimeout(function () {
|
218
|
+
el.removeAttribute('style');
|
219
|
+
el.setAttribute('data-scrollReveal-complete',true);
|
220
|
+
}, css.totalDuration);
|
221
|
+
}
|
222
|
+
return;
|
223
|
+
}
|
224
|
+
},
|
225
|
+
|
226
|
+
/*=============================================================================*/
|
227
|
+
|
228
|
+
genCSS: function (el) {
|
229
|
+
var parsed = this.parseLanguage(el),
|
230
|
+
enter,
|
231
|
+
axis;
|
232
|
+
|
233
|
+
if (parsed.enter) {
|
234
|
+
|
235
|
+
if (parsed.enter == "top" || parsed.enter == "bottom") {
|
236
|
+
enter = parsed.enter;
|
237
|
+
axis = "y";
|
238
|
+
}
|
239
|
+
|
240
|
+
if (parsed.enter == "left" || parsed.enter == "right") {
|
241
|
+
enter = parsed.enter;
|
242
|
+
axis = "x";
|
243
|
+
}
|
244
|
+
|
245
|
+
} else {
|
246
|
+
|
247
|
+
if (this.options.enter == "top" || this.options.enter == "bottom") {
|
248
|
+
enter = this.options.enter
|
249
|
+
axis = "y";
|
250
|
+
}
|
251
|
+
|
252
|
+
if (this.options.enter == "left" || this.options.enter == "right") {
|
253
|
+
enter = this.options.enter
|
254
|
+
axis = "x";
|
255
|
+
}
|
256
|
+
}
|
257
|
+
|
258
|
+
// After all values are parsed, let’s make sure our our
|
259
|
+
// pixel distance is negative for top and left entrances.
|
260
|
+
//
|
261
|
+
// ie. "move 25px from top" starts at 'top: -25px' in CSS.
|
262
|
+
|
263
|
+
if (enter == "top" || enter == "left") {
|
264
|
+
if (!typeof parsed.move == "undefined") {
|
265
|
+
parsed.move = "-" + parsed.move;
|
266
|
+
}
|
267
|
+
else {
|
268
|
+
parsed.move = "-" + this.options.move;
|
269
|
+
}
|
270
|
+
}
|
271
|
+
|
272
|
+
var dist = parsed.move || this.options.move,
|
273
|
+
dur = parsed.over || this.options.over,
|
274
|
+
delay = parsed.after || this.options.after,
|
275
|
+
easing = parsed.easing || this.options.easing;
|
276
|
+
|
277
|
+
var transition = "-webkit-transition: all " + dur + " " + easing + " " + delay + ";" +
|
278
|
+
"-moz-transition: all " + dur + " " + easing + " " + delay + ";" +
|
279
|
+
"-o-transition: all " + dur + " " + easing + " " + delay + ";" +
|
280
|
+
"transition: all " + dur + " " + easing + " " + delay + ";" +
|
281
|
+
"-webkit-perspective: 1000;" +
|
282
|
+
"-webkit-backface-visibility: hidden;";
|
283
|
+
|
284
|
+
// The same as transition, but removing the delay for elements fading out.
|
285
|
+
var reset = "-webkit-transition: all " + dur + " " + easing + " 0s;" +
|
286
|
+
"-moz-transition: all " + dur + " " + easing + " 0s;" +
|
287
|
+
"-o-transition: all " + dur + " " + easing + " 0s;" +
|
288
|
+
"transition: all " + dur + " " + easing + " 0s;" +
|
289
|
+
"-webkit-perspective: 1000;" +
|
290
|
+
"-webkit-backface-visibility: hidden;";
|
291
|
+
|
292
|
+
var initial = "-webkit-transform: translate" + axis + "(" + dist + ");" +
|
293
|
+
"-moz-transform: translate" + axis + "(" + dist + ");" +
|
294
|
+
"transform: translate" + axis + "(" + dist + ");" +
|
295
|
+
"opacity: 0;";
|
296
|
+
|
297
|
+
var target = "-webkit-transform: translate" + axis + "(0);" +
|
298
|
+
"-moz-transform: translate" + axis + "(0);" +
|
299
|
+
"transform: translate" + axis + "(0);" +
|
300
|
+
"opacity: 1;";
|
301
|
+
return {
|
302
|
+
transition: transition,
|
303
|
+
initial: initial,
|
304
|
+
target: target,
|
305
|
+
reset: reset,
|
306
|
+
totalDuration: ((parseFloat(dur) + parseFloat(delay)) * 1000)
|
307
|
+
};
|
308
|
+
},
|
309
|
+
|
310
|
+
getViewportH : function () {
|
311
|
+
var client = this.docElem['clientHeight'],
|
312
|
+
inner = window['innerHeight'];
|
313
|
+
|
314
|
+
return (client < inner) ? inner : client;
|
315
|
+
},
|
316
|
+
|
317
|
+
getOffset : function(el) {
|
318
|
+
var offsetTop = 0,
|
319
|
+
offsetLeft = 0;
|
320
|
+
|
321
|
+
do {
|
322
|
+
if (!isNaN(el.offsetTop)) {
|
323
|
+
offsetTop += el.offsetTop;
|
324
|
+
}
|
325
|
+
if (!isNaN(el.offsetLeft)) {
|
326
|
+
offsetLeft += el.offsetLeft;
|
327
|
+
}
|
328
|
+
} while (el = el.offsetParent)
|
329
|
+
|
330
|
+
return {
|
331
|
+
top: offsetTop,
|
332
|
+
left: offsetLeft
|
333
|
+
}
|
334
|
+
},
|
335
|
+
|
336
|
+
isElementInViewport : function(el, h) {
|
337
|
+
var scrolled = window.pageYOffset,
|
338
|
+
viewed = scrolled + this.getViewportH(),
|
339
|
+
elH = el.offsetHeight,
|
340
|
+
elTop = this.getOffset(el).top,
|
341
|
+
elBottom = elTop + elH,
|
342
|
+
h = h || 0;
|
343
|
+
|
344
|
+
return (elTop + elH * h) <= viewed && (elBottom) >= scrolled;
|
345
|
+
},
|
346
|
+
|
347
|
+
extend: function (a, b){
|
348
|
+
for (var key in b) {
|
349
|
+
if (b.hasOwnProperty(key)) {
|
350
|
+
a[key] = b[key];
|
351
|
+
}
|
352
|
+
}
|
353
|
+
return a;
|
354
|
+
}
|
355
|
+
}; // end scrollReveal.prototype
|
356
|
+
|
357
|
+
return scrollReveal;
|
358
|
+
})(window);
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "scrollreveal/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "scrollreveal-rails"
|
7
|
+
s.version = Scrollreveal::VERSION
|
8
|
+
s.authors = ["Ankit Gupta"," Ekta Verma"]
|
9
|
+
s.date = '2014-02-23'
|
10
|
+
s.email = ["ankit.gupta8898@gmail.com","eku4evr@gmail.com"]
|
11
|
+
s.summary = %q{Ruby Wrapper on top of ScrollReveal.js}
|
12
|
+
s.description = %q{Gem that includes ScrollReveal (A small library to create and maintain how elements fade in,triggered when they enter the viewport.)}
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.licenses = ['MIT']
|
19
|
+
s.homepage = 'https://github.com/gemathon-rockets/scrollreveal-rails'
|
20
|
+
s.add_dependency "railties", ">= 3.1"
|
21
|
+
s.add_development_dependency "bundler", "~> 1.0"
|
22
|
+
s.add_development_dependency "rails", ">= 3.1"
|
23
|
+
s.add_development_dependency 'rake'
|
24
|
+
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: scrollreveal-rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ankit Gupta
|
8
|
+
- ! ' Ekta Verma'
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-02-23 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: railties
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ! '>='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '3.1'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ! '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '3.1'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: bundler
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ~>
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '1.0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ~>
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '1.0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rails
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ! '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '3.1'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '3.1'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: rake
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
description: Gem that includes ScrollReveal (A small library to create and maintain
|
71
|
+
how elements fade in,triggered when they enter the viewport.)
|
72
|
+
email:
|
73
|
+
- ankit.gupta8898@gmail.com
|
74
|
+
- eku4evr@gmail.com
|
75
|
+
executables: []
|
76
|
+
extensions: []
|
77
|
+
extra_rdoc_files: []
|
78
|
+
files:
|
79
|
+
- .gitignore
|
80
|
+
- .travis.yml
|
81
|
+
- Changelog.md
|
82
|
+
- Gemfile
|
83
|
+
- Rakefile
|
84
|
+
- Readme.md
|
85
|
+
- app/assets/javascripts/scrollReveal.js
|
86
|
+
- lib/scrollreveal-rails.rb
|
87
|
+
- lib/scrollreveal/helper.rb
|
88
|
+
- lib/scrollreveal/rails.rb
|
89
|
+
- lib/scrollreveal/version.rb
|
90
|
+
- scrollreveal-rails.gemspec
|
91
|
+
homepage: https://github.com/gemathon-rockets/scrollreveal-rails
|
92
|
+
licenses:
|
93
|
+
- MIT
|
94
|
+
metadata: {}
|
95
|
+
post_install_message:
|
96
|
+
rdoc_options: []
|
97
|
+
require_paths:
|
98
|
+
- lib
|
99
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ! '>='
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
109
|
+
requirements: []
|
110
|
+
rubyforge_project:
|
111
|
+
rubygems_version: 2.1.10
|
112
|
+
signing_key:
|
113
|
+
specification_version: 4
|
114
|
+
summary: Ruby Wrapper on top of ScrollReveal.js
|
115
|
+
test_files: []
|