spinjs-rails 1.2.8 → 1.3

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: cab3c4707629b7189d91c3f992d57fb01cca8422
4
+ data.tar.gz: d72a699a9019fea04ac8754516631f53a344750a
5
+ SHA512:
6
+ metadata.gz: 341eb4c352e75c21748716c1bb601b34652b806722a4d461485bbfd10ec087d8b2341e1e0e0afb8a5297952e0829580b8931159ba4a53b19f4b3fdf69eecddd3
7
+ data.tar.gz: b26f382c243b5944be120c3bf146b6b57c2545eaa845f7f582befe398a45673ea5ce04f4b823635973260a3dd7734cb8e396f25f62bddb89b93b5b49dad871f2
@@ -1,5 +1,5 @@
1
1
  module Spinjs
2
2
  module Rails
3
- VERSION = "1.2.8"
3
+ VERSION = "1.3"
4
4
  end
5
5
  end
@@ -1,14 +1,26 @@
1
- //fgnass.github.com/spin.js#v1.2.8
2
- !function(window, document, undefined) {
1
+ //fgnass.github.com/spin.js#v1.3
3
2
 
4
- /**
5
- * Copyright (c) 2011 Felix Gnass [fgnass at neteye dot de]
6
- * Licensed under the MIT license
7
- */
3
+ /**
4
+ * Copyright (c) 2011-2013 Felix Gnass
5
+ * Licensed under the MIT license
6
+ */
7
+ (function(root, factory) {
8
+
9
+ /* CommonJS */
10
+ if (typeof exports == 'object') module.exports = factory()
11
+
12
+ /* AMD module */
13
+ else if (typeof define == 'function' && define.amd) define(factory)
14
+
15
+ /* Browser global */
16
+ else root.Spinner = factory()
17
+ }
18
+ (this, function() {
19
+ "use strict";
8
20
 
9
21
  var prefixes = ['webkit', 'Moz', 'ms', 'O'] /* Vendor prefixes */
10
22
  , animations = {} /* Animation rules keyed by their name */
11
- , useCssAnimations
23
+ , useCssAnimations /* Whether to use CSS animations or setTimeout */
12
24
 
13
25
  /**
14
26
  * Utility function to create elements. If no tag name is given,
@@ -35,11 +47,11 @@
35
47
  /**
36
48
  * Insert a new stylesheet to hold the @keyframe or VML rules.
37
49
  */
38
- var sheet = function() {
50
+ var sheet = (function() {
39
51
  var el = createEl('style', {type : 'text/css'})
40
52
  ins(document.getElementsByTagName('head')[0], el)
41
53
  return el.sheet || el.styleSheet
42
- }()
54
+ }())
43
55
 
44
56
  /**
45
57
  * Creates an opacity keyframe animation rule and returns its name.
@@ -48,10 +60,10 @@
48
60
  */
49
61
  function addAnimation(alpha, trail, i, lines) {
50
62
  var name = ['opacity', trail, ~~(alpha*100), i, lines].join('-')
51
- , start = 0.01 + i/lines*100
63
+ , start = 0.01 + i/lines * 100
52
64
  , z = Math.max(1 - (1-alpha) / trail * (100-start), alpha)
53
65
  , prefix = useCssAnimations.substring(0, useCssAnimations.indexOf('Animation')).toLowerCase()
54
- , pre = prefix && '-'+prefix+'-' || ''
66
+ , pre = prefix && '-' + prefix + '-' || ''
55
67
 
56
68
  if (!animations[name]) {
57
69
  sheet.insertRule(
@@ -65,12 +77,13 @@
65
77
 
66
78
  animations[name] = 1
67
79
  }
80
+
68
81
  return name
69
82
  }
70
83
 
71
84
  /**
72
85
  * Tries various vendor prefixes and returns the first supported property.
73
- **/
86
+ */
74
87
  function vendor(el, prop) {
75
88
  var s = el.style
76
89
  , pp
@@ -117,6 +130,8 @@
117
130
  return o
118
131
  }
119
132
 
133
+ // Built-in defaults
134
+
120
135
  var defaults = {
121
136
  lines: 12, // The number of lines to draw
122
137
  length: 7, // The length of each line
@@ -125,6 +140,7 @@
125
140
  rotate: 0, // Rotation offset
126
141
  corners: 1, // Roundness (0..1)
127
142
  color: '#000', // #rgb or #rrggbb
143
+ direction: 1, // 1: clockwise, -1: counterclockwise
128
144
  speed: 1, // Rounds per second
129
145
  trail: 100, // Afterglow percentage
130
146
  opacity: 1/4, // Opacity of the lines
@@ -138,15 +154,23 @@
138
154
 
139
155
  /** The constructor */
140
156
  function Spinner(o) {
141
- if (!this.spin) return new Spinner(o)
157
+ if (typeof this == 'undefined') return new Spinner(o)
142
158
  this.opts = merge(o || {}, Spinner.defaults, defaults)
143
159
  }
144
160
 
161
+ // Global defaults that override the built-ins:
145
162
  Spinner.defaults = {}
146
163
 
147
164
  merge(Spinner.prototype, {
165
+
166
+ /**
167
+ * Adds the spinner to the given target element. If this instance is already
168
+ * spinning, it is automatically removed from its previous target b calling
169
+ * stop() internally.
170
+ */
148
171
  spin: function(target) {
149
172
  this.stop()
173
+
150
174
  var self = this
151
175
  , o = self.opts
152
176
  , el = self.el = css(createEl(0, {className: o.className}), {position: o.position, width: 0, zIndex: o.zIndex})
@@ -164,12 +188,14 @@
164
188
  })
165
189
  }
166
190
 
167
- el.setAttribute('aria-role', 'progressbar')
191
+ el.setAttribute('role', 'progressbar')
168
192
  self.lines(el, self.opts)
169
193
 
170
194
  if (!useCssAnimations) {
171
195
  // No CSS animation support, use setTimeout() instead
172
196
  var i = 0
197
+ , start = (o.lines - 1) * (1 - o.direction) / 2
198
+ , alpha
173
199
  , fps = o.fps
174
200
  , f = fps/o.speed
175
201
  , ostep = (1-o.opacity) / (f*o.trail / 100)
@@ -177,9 +203,10 @@
177
203
 
178
204
  ;(function anim() {
179
205
  i++;
180
- for (var s=o.lines; s; s--) {
181
- var alpha = Math.max(1-(i+s*astep)%f * ostep, o.opacity)
182
- self.opacity(el, o.lines-s, alpha, o)
206
+ for (var j = 0; j < o.lines; j++) {
207
+ alpha = Math.max(1 - (i + (o.lines - j) * astep) % f * ostep, o.opacity)
208
+
209
+ self.opacity(el, j * o.direction + start, alpha, o)
183
210
  }
184
211
  self.timeout = self.el && setTimeout(anim, ~~(1000/fps))
185
212
  })()
@@ -187,6 +214,9 @@
187
214
  return self
188
215
  },
189
216
 
217
+ /**
218
+ * Stops and removes the Spinner.
219
+ */
190
220
  stop: function() {
191
221
  var el = this.el
192
222
  if (el) {
@@ -197,8 +227,13 @@
197
227
  return this
198
228
  },
199
229
 
230
+ /**
231
+ * Internal method that draws the individual lines. Will be overwritten
232
+ * in VML fallback mode below.
233
+ */
200
234
  lines: function(el, o) {
201
235
  var i = 0
236
+ , start = (o.lines - 1) * (1 - o.direction) / 2
202
237
  , seg
203
238
 
204
239
  function fill(color, shadow) {
@@ -220,7 +255,7 @@
220
255
  top: 1+~(o.width/2) + 'px',
221
256
  transform: o.hwaccel ? 'translate3d(0,0,0)' : '',
222
257
  opacity: o.opacity,
223
- animation: useCssAnimations && addAnimation(o.opacity, o.trail, i, o.lines) + ' ' + 1/o.speed + 's linear infinite'
258
+ animation: useCssAnimations && addAnimation(o.opacity, o.trail, start + i * o.direction, o.lines) + ' ' + 1/o.speed + 's linear infinite'
224
259
  })
225
260
 
226
261
  if (o.shadow) ins(seg, css(fill('#000', '0 0 4px ' + '#000'), {top: 2+'px'}))
@@ -230,91 +265,85 @@
230
265
  return el
231
266
  },
232
267
 
268
+ /**
269
+ * Internal method that adjusts the opacity of a single line.
270
+ * Will be overwritten in VML fallback mode below.
271
+ */
233
272
  opacity: function(el, i, val) {
234
273
  if (i < el.childNodes.length) el.childNodes[i].style.opacity = val
235
274
  }
236
275
 
237
276
  })
238
277
 
239
- /////////////////////////////////////////////////////////////////////////
240
- // VML rendering for IE
241
- /////////////////////////////////////////////////////////////////////////
242
278
 
243
- /**
244
- * Check and init VML support
245
- */
246
- ;(function() {
279
+ function initVML() {
247
280
 
281
+ /* Utility function to create a VML tag */
248
282
  function vml(tag, attr) {
249
283
  return createEl('<' + tag + ' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">', attr)
250
284
  }
251
285
 
252
- var s = css(createEl('group'), {behavior: 'url(#default#VML)'})
253
-
254
- if (!vendor(s, 'transform') && s.adj) {
255
-
256
- // VML support detected. Insert CSS rule ...
257
- sheet.addRule('.spin-vml', 'behavior:url(#default#VML)')
258
-
259
- Spinner.prototype.lines = function(el, o) {
260
- var r = o.length+o.width
261
- , s = 2*r
286
+ // No CSS transforms but VML support, add a CSS rule for VML elements:
287
+ sheet.addRule('.spin-vml', 'behavior:url(#default#VML)')
288
+
289
+ Spinner.prototype.lines = function(el, o) {
290
+ var r = o.length+o.width
291
+ , s = 2*r
292
+
293
+ function grp() {
294
+ return css(
295
+ vml('group', {
296
+ coordsize: s + ' ' + s,
297
+ coordorigin: -r + ' ' + -r
298
+ }),
299
+ { width: s, height: s }
300
+ )
301
+ }
262
302
 
263
- function grp() {
264
- return css(
265
- vml('group', {
266
- coordsize: s + ' ' + s,
267
- coordorigin: -r + ' ' + -r
268
- }),
269
- { width: s, height: s }
270
- )
271
- }
272
-
273
- var margin = -(o.width+o.length)*2 + 'px'
274
- , g = css(grp(), {position: 'absolute', top: margin, left: margin})
275
- , i
276
-
277
- function seg(i, dx, filter) {
278
- ins(g,
279
- ins(css(grp(), {rotation: 360 / o.lines * i + 'deg', left: ~~dx}),
280
- ins(css(vml('roundrect', {arcsize: o.corners}), {
281
- width: r,
282
- height: o.width,
283
- left: o.radius,
284
- top: -o.width>>1,
285
- filter: filter
286
- }),
287
- vml('fill', {color: o.color, opacity: o.opacity}),
288
- vml('stroke', {opacity: 0}) // transparent stroke to fix color bleeding upon opacity change
289
- )
303
+ var margin = -(o.width+o.length)*2 + 'px'
304
+ , g = css(grp(), {position: 'absolute', top: margin, left: margin})
305
+ , i
306
+
307
+ function seg(i, dx, filter) {
308
+ ins(g,
309
+ ins(css(grp(), {rotation: 360 / o.lines * i + 'deg', left: ~~dx}),
310
+ ins(css(vml('roundrect', {arcsize: o.corners}), {
311
+ width: r,
312
+ height: o.width,
313
+ left: o.radius,
314
+ top: -o.width>>1,
315
+ filter: filter
316
+ }),
317
+ vml('fill', {color: o.color, opacity: o.opacity}),
318
+ vml('stroke', {opacity: 0}) // transparent stroke to fix color bleeding upon opacity change
290
319
  )
291
320
  )
292
- }
321
+ )
322
+ }
293
323
 
294
- if (o.shadow)
295
- for (i = 1; i <= o.lines; i++)
296
- seg(i, -2, 'progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)')
324
+ if (o.shadow)
325
+ for (i = 1; i <= o.lines; i++)
326
+ seg(i, -2, 'progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)')
297
327
 
298
- for (i = 1; i <= o.lines; i++) seg(i)
299
- return ins(el, g)
300
- }
328
+ for (i = 1; i <= o.lines; i++) seg(i)
329
+ return ins(el, g)
330
+ }
301
331
 
302
- Spinner.prototype.opacity = function(el, i, val, o) {
303
- var c = el.firstChild
304
- o = o.shadow && o.lines || 0
305
- if (c && i+o < c.childNodes.length) {
306
- c = c.childNodes[i+o]; c = c && c.firstChild; c = c && c.firstChild
307
- if (c) c.opacity = val
308
- }
332
+ Spinner.prototype.opacity = function(el, i, val, o) {
333
+ var c = el.firstChild
334
+ o = o.shadow && o.lines || 0
335
+ if (c && i+o < c.childNodes.length) {
336
+ c = c.childNodes[i+o]; c = c && c.firstChild; c = c && c.firstChild
337
+ if (c) c.opacity = val
309
338
  }
310
339
  }
311
- else
312
- useCssAnimations = vendor(s, 'animation')
313
- })()
340
+ }
341
+
342
+ var probe = css(createEl('group'), {behavior: 'url(#default#VML)'})
343
+
344
+ if (!vendor(probe, 'transform') && probe.adj) initVML()
345
+ else useCssAnimations = vendor(probe, 'animation')
314
346
 
315
- if (typeof define == 'function' && define.amd)
316
- define(function() { return Spinner })
317
- else
318
- window.Spinner = Spinner
347
+ return Spinner
319
348
 
320
- }(window, document);
349
+ }));
metadata CHANGED
@@ -1,30 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spinjs-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.8
5
- prerelease:
4
+ version: '1.3'
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dmytrii Nagirniak
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-10 00:00:00.000000000 Z
11
+ date: 2013-07-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '3.1'
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
26
  version: '3.1'
30
27
  description: An animated CSS3 loading spinner with VML fallback for IE.
@@ -48,32 +45,25 @@ files:
48
45
  homepage: https://github.com/dnagir/spinjs-rails
49
46
  licenses:
50
47
  - MIT
48
+ metadata: {}
51
49
  post_install_message:
52
50
  rdoc_options: []
53
51
  require_paths:
54
52
  - lib
55
53
  required_ruby_version: !ruby/object:Gem::Requirement
56
- none: false
57
54
  requirements:
58
- - - ! '>='
55
+ - - '>='
59
56
  - !ruby/object:Gem::Version
60
57
  version: '0'
61
- segments:
62
- - 0
63
- hash: 382156763220495077
64
58
  required_rubygems_version: !ruby/object:Gem::Requirement
65
- none: false
66
59
  requirements:
67
- - - ! '>='
60
+ - - '>='
68
61
  - !ruby/object:Gem::Version
69
62
  version: '0'
70
- segments:
71
- - 0
72
- hash: 382156763220495077
73
63
  requirements: []
74
64
  rubyforge_project: spinjs-rails
75
- rubygems_version: 1.8.24
65
+ rubygems_version: 2.0.3
76
66
  signing_key:
77
- specification_version: 3
67
+ specification_version: 4
78
68
  summary: A spinning activity indicator for Rails 3 with no images and CSS.
79
69
  test_files: []