coffeebox 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e5ce6c509dd5879b86c35b398828e123e46c65b
4
- data.tar.gz: 667a799e26564b66e34ded39a34a0d33fc0855d8
3
+ metadata.gz: 3d7e983d56906bb2e1358e905e4a4cde7852935f
4
+ data.tar.gz: b144ca98a3cb1bacc84c6e439cd6544e502e5cce
5
5
  SHA512:
6
- metadata.gz: f6df150a9f5ee066ffe817e1fe455036636e423b8a84bd926a031c9b7985ad6272ec64a1192503f8719fafc55142ae530eaad3ca78679c8be9e915f00e34af37
7
- data.tar.gz: 6b48d4605df4196ab3f6c5ae48a5145749c9f5691502319e9d81ab1a8abe0289ae47588c52b253542608f7476132107514a6f6df4e7e0057c42934cada59cc19
6
+ metadata.gz: 57522cb58c1771e7f432837ca00c2657255beee971d0b6a9b53d51c7377a53eae4219ec1d9b9e1374b1560daca3aa9e19552d708fe94d32a3bdd04b9e8bf3168
7
+ data.tar.gz: afecc09dd8e12dc397fd29c1af2459ddd310f4adcdfd1190f2fc577aa116f0228718e732f84037216740f1750f3d26fff65f6a7bb13361792df803c6ec7a7f53
data/LICENSE.txt CHANGED
@@ -1,3 +1,4 @@
1
+ Copyright (c) 2007-2010 Chris Wanstrath, Kyle Neath
1
2
  Copyright (c) 2013 glebtv
2
3
 
3
4
  MIT License
@@ -1,128 +1,70 @@
1
- /* v1.5
2
- Copyright (c) 2009 Dimas Begunoff, http://www.farinspace.com
3
- https://github.com/farinspace/jquery.imgpreload
4
- Licensed under the MIT license
5
- http://en.wikipedia.org/wiki/MIT_License
1
+ /**
2
+ * jquery.imgpreload 1.6.2 <https://github.com/farinspace/jquery.imgpreload>
3
+ * Copyright 2009-2014 Dimas Begunoff <http://farinspace.com>
4
+ * License MIT <http://opensource.org/licenses/MIT>
6
5
  */
7
-
8
6
  if ('undefined' != typeof jQuery)
9
7
  {
10
- (function($){
11
-
12
- // extend jquery (because i love jQuery)
13
- $.imgpreload = function (imgs,settings)
14
- {
15
- settings = $.extend({},$.fn.imgpreload.defaults,(settings instanceof Function)?{all:settings}:settings);
8
+ (function($){
9
+ 'use strict';
16
10
 
17
- // use of typeof required
18
- // https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Operators/Special_Operators/Instanceof_Operator#Description
19
- if ('string' == typeof imgs) { imgs = new Array(imgs); }
11
+ // extend jquery (because i love jQuery)
12
+ $.imgpreload = function (imgs,settings)
13
+ {
14
+ settings = $.extend({},$.fn.imgpreload.defaults,(settings instanceof Function)?{all:settings}:settings);
20
15
 
21
- var loaded = new Array();
16
+ // use of typeof required
17
+ // https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Operators/Special_Operators/Instanceof_Operator#Description
18
+ if ('string' == typeof imgs) { imgs = [imgs]; }
22
19
 
23
- $.each(imgs,function(i,elem)
24
- {
25
- var img = new Image();
20
+ var loaded = [];
26
21
 
27
- var url = elem;
22
+ $.each(imgs,function(i,elem)
23
+ {
24
+ var img = new Image();
28
25
 
29
- var img_obj = img;
26
+ var url = elem;
30
27
 
31
- if ('string' != typeof elem)
32
- {
33
- url = $(elem).attr('src') || $(elem).css('background-image').replace(/^url\((?:"|')?(.*)(?:'|")?\)$/mg, "$1");
28
+ var img_obj = img;
34
29
 
35
- img_obj = elem;
36
- }
30
+ if ('string' != typeof elem)
31
+ {
32
+ url = $(elem).attr('src') || $(elem).css('background-image').replace(/^url\((?:"|')?(.*)(?:'|")?\)$/mg, "$1");
37
33
 
38
- $(img).bind('load error', function(e)
39
- {
40
- loaded.push(img_obj);
34
+ img_obj = elem;
35
+ }
41
36
 
42
- $.data(img_obj, 'loaded', ('error'==e.type)?false:true);
43
-
44
- if (settings.each instanceof Function) { settings.each.call(img_obj); }
37
+ $(img).bind('load error', function(e)
38
+ {
39
+ loaded.push(img_obj);
45
40
 
46
- // http://jsperf.com/length-in-a-variable
47
- if (loaded.length>=imgs.length && settings.all instanceof Function) { settings.all.call(loaded); }
41
+ $.data(img_obj, 'loaded', ('error'==e.type)?false:true);
48
42
 
49
- $(this).unbind('load error');
50
- });
43
+ // http://msdn.microsoft.com/en-us/library/ie/tkcsy6fe(v=vs.94).aspx
44
+ if (settings.each instanceof Function) { settings.each.call(img_obj, loaded.slice(0)); }
51
45
 
52
- img.src = url;
53
- });
54
- };
46
+ // http://jsperf.com/length-in-a-variable
47
+ if (loaded.length>=imgs.length && settings.all instanceof Function) { settings.all.call(loaded); }
55
48
 
56
- $.fn.imgpreload = function(settings)
57
- {
58
- $.imgpreload(this,settings);
49
+ $(this).unbind('load error');
50
+ });
59
51
 
60
- return this;
61
- };
52
+ img.src = url;
53
+ });
54
+ };
62
55
 
63
- $.fn.imgpreload.defaults =
64
- {
65
- each: null // callback invoked when each image in a group loads
66
- , all: null // callback invoked when when the entire group of images has loaded
67
- };
56
+ $.fn.imgpreload = function(settings)
57
+ {
58
+ $.imgpreload(this,settings);
68
59
 
69
- })(jQuery);
70
- }
60
+ return this;
61
+ };
71
62
 
72
- /*
73
-
74
- Usage:
75
-
76
- $('#content img').imgpreload(function()
77
- {
78
- // this = array of dom image objects
79
- // callback executes when all images are loaded
80
- });
81
-
82
- $('#content img').imgpreload
83
- ({
84
- each: function()
85
- {
86
- // this = dom image object
87
- // check for success with: $(this).data('loaded')
88
- // callback executes when each image loads
89
- },
90
- all: function()
91
- {
92
- // this = array of dom image objects
93
- // check for success with: $(this[i]).data('loaded')
94
- // callback executes when all images are loaded
95
- }
96
- });
97
-
98
- $.imgpreload('/images/a.gif',function()
99
- {
100
- // this = array of dom image objects
101
- // check for success with: $(this[i]).data('loaded')
102
- // callback
103
- });
104
-
105
- $.imgpreload(['/images/a.gif','/images/b.gif'],function()
106
- {
107
- // this = array of dom image objects
108
- // check for success with: $(this[i]).data('loaded')
109
- // callback executes when all images are loaded
110
- });
111
-
112
- $.imgpreload(['/images/a.gif','/images/b.gif'],
113
- {
114
- each: function()
115
- {
116
- // this = dom image object
117
- // check for success with: $(this).data('loaded')
118
- // callback executes on every image load
119
- },
120
- all: function()
121
- {
122
- // this = array of dom image objects
123
- // check for success with: $(this[i]).data('loaded')
124
- // callback executes when all images are loaded
125
- }
126
- });
63
+ $.fn.imgpreload.defaults =
64
+ {
65
+ each: null, // callback invoked when each image is loaded
66
+ all: null // callback invoked when all images have loaded
67
+ };
127
68
 
128
- */
69
+ })(jQuery);
70
+ }
@@ -159,7 +159,7 @@ fillcoffeeboxFromHref = (href, klass) ->
159
159
  if href.match(/#/)
160
160
  url = window.location.href.split("#")[0]
161
161
  target = href.replace(url, "")
162
- $.coffeebox.reveal $(target).html(), klass if target is "#"
162
+ $.coffeebox.reveal $(target).html(), klass if target.indexOf("#") != -1
163
163
 
164
164
  # image
165
165
  else if href.match($.coffeebox.settings.imageTypesRegexp)
@@ -1,64 +1,82 @@
1
1
  /**
2
- * v 2.0.1
3
2
  * Copyright (c) 2011-2014 Felix Gnass
4
3
  * Licensed under the MIT license
4
+ * http://spin.js.org/
5
+ *
6
+ * Example:
7
+ var opts = {
8
+ lines: 12 // The number of lines to draw
9
+ , length: 7 // The length of each line
10
+ , width: 5 // The line thickness
11
+ , radius: 10 // The radius of the inner circle
12
+ , scale: 1.0 // Scales overall size of the spinner
13
+ , corners: 1 // Roundness (0..1)
14
+ , color: '#000' // #rgb or #rrggbb
15
+ , opacity: 1/4 // Opacity of the lines
16
+ , rotate: 0 // Rotation offset
17
+ , direction: 1 // 1: clockwise, -1: counterclockwise
18
+ , speed: 1 // Rounds per second
19
+ , trail: 100 // Afterglow percentage
20
+ , fps: 20 // Frames per second when using setTimeout()
21
+ , zIndex: 2e9 // Use a high z-index by default
22
+ , className: 'spinner' // CSS class to assign to the element
23
+ , top: '50%' // center vertically
24
+ , left: '50%' // center horizontally
25
+ , shadow: false // Whether to render a shadow
26
+ , hwaccel: false // Whether to use hardware acceleration (might be buggy)
27
+ , position: 'absolute' // Element positioning
28
+ }
29
+ var target = document.getElementById('foo')
30
+ var spinner = new Spinner(opts).spin(target)
5
31
  */
6
- (function(root, factory) {
32
+ ;(function (root, factory) {
7
33
 
8
34
  /* CommonJS */
9
- if (typeof exports == 'object') module.exports = factory()
35
+ if (typeof module == 'object' && module.exports) module.exports = factory()
10
36
 
11
37
  /* AMD module */
12
38
  else if (typeof define == 'function' && define.amd) define(factory)
13
39
 
14
40
  /* Browser global */
15
41
  else root.Spinner = factory()
16
- }
17
- (this, function() {
18
- "use strict";
42
+ }(this, function () {
43
+ "use strict"
19
44
 
20
45
  var prefixes = ['webkit', 'Moz', 'ms', 'O'] /* Vendor prefixes */
21
46
  , animations = {} /* Animation rules keyed by their name */
22
47
  , useCssAnimations /* Whether to use CSS animations or setTimeout */
48
+ , sheet /* A stylesheet to hold the @keyframe or VML rules. */
23
49
 
24
50
  /**
25
51
  * Utility function to create elements. If no tag name is given,
26
52
  * a DIV is created. Optionally properties can be passed.
27
53
  */
28
- function createEl(tag, prop) {
54
+ function createEl (tag, prop) {
29
55
  var el = document.createElement(tag || 'div')
30
56
  , n
31
57
 
32
- for(n in prop) el[n] = prop[n]
58
+ for (n in prop) el[n] = prop[n]
33
59
  return el
34
60
  }
35
61
 
36
62
  /**
37
63
  * Appends children and returns the parent.
38
64
  */
39
- function ins(parent /* child1, child2, ...*/) {
40
- for (var i=1, n=arguments.length; i<n; i++)
65
+ function ins (parent /* child1, child2, ...*/) {
66
+ for (var i = 1, n = arguments.length; i < n; i++) {
41
67
  parent.appendChild(arguments[i])
68
+ }
42
69
 
43
70
  return parent
44
71
  }
45
72
 
46
- /**
47
- * Insert a new stylesheet to hold the @keyframe or VML rules.
48
- */
49
- var sheet = (function() {
50
- var el = createEl('style', {type : 'text/css'})
51
- ins(document.getElementsByTagName('head')[0], el)
52
- return el.sheet || el.styleSheet
53
- }())
54
-
55
73
  /**
56
74
  * Creates an opacity keyframe animation rule and returns its name.
57
75
  * Since most mobile Webkits have timing issues with animation-delay,
58
76
  * we create separate rules for each line/segment.
59
77
  */
60
- function addAnimation(alpha, trail, i, lines) {
61
- var name = ['opacity', trail, ~~(alpha*100), i, lines].join('-')
78
+ function addAnimation (alpha, trail, i, lines) {
79
+ var name = ['opacity', trail, ~~(alpha * 100), i, lines].join('-')
62
80
  , start = 0.01 + i/lines * 100
63
81
  , z = Math.max(1 - (1-alpha) / trail * (100-start), alpha)
64
82
  , prefix = useCssAnimations.substring(0, useCssAnimations.indexOf('Animation')).toLowerCase()
@@ -83,25 +101,26 @@
83
101
  /**
84
102
  * Tries various vendor prefixes and returns the first supported property.
85
103
  */
86
- function vendor(el, prop) {
104
+ function vendor (el, prop) {
87
105
  var s = el.style
88
106
  , pp
89
107
  , i
90
108
 
91
109
  prop = prop.charAt(0).toUpperCase() + prop.slice(1)
92
- for(i=0; i<prefixes.length; i++) {
110
+ if (s[prop] !== undefined) return prop
111
+ for (i = 0; i < prefixes.length; i++) {
93
112
  pp = prefixes[i]+prop
94
- if(s[pp] !== undefined) return pp
113
+ if (s[pp] !== undefined) return pp
95
114
  }
96
- if(s[prop] !== undefined) return prop
97
115
  }
98
116
 
99
117
  /**
100
118
  * Sets multiple style properties at once.
101
119
  */
102
- function css(el, prop) {
103
- for (var n in prop)
104
- el.style[vendor(el, n)||n] = prop[n]
120
+ function css (el, prop) {
121
+ for (var n in prop) {
122
+ el.style[vendor(el, n) || n] = prop[n]
123
+ }
105
124
 
106
125
  return el
107
126
  }
@@ -109,57 +128,50 @@
109
128
  /**
110
129
  * Fills in default values.
111
130
  */
112
- function merge(obj) {
113
- for (var i=1; i < arguments.length; i++) {
131
+ function merge (obj) {
132
+ for (var i = 1; i < arguments.length; i++) {
114
133
  var def = arguments[i]
115
- for (var n in def)
134
+ for (var n in def) {
116
135
  if (obj[n] === undefined) obj[n] = def[n]
136
+ }
117
137
  }
118
138
  return obj
119
139
  }
120
140
 
121
- /**
122
- * Returns the absolute page-offset of the given element.
123
- */
124
- function pos(el) {
125
- var o = { x:el.offsetLeft, y:el.offsetTop }
126
- while((el = el.offsetParent))
127
- o.x+=el.offsetLeft, o.y+=el.offsetTop
128
-
129
- return o
130
- }
131
-
132
141
  /**
133
142
  * Returns the line color from the given string or array.
134
143
  */
135
- function getColor(color, idx) {
144
+ function getColor (color, idx) {
136
145
  return typeof color == 'string' ? color : color[idx % color.length]
137
146
  }
138
147
 
139
148
  // Built-in defaults
140
149
 
141
150
  var defaults = {
142
- lines: 12, // The number of lines to draw
143
- length: 7, // The length of each line
144
- width: 5, // The line thickness
145
- radius: 10, // The radius of the inner circle
146
- rotate: 0, // Rotation offset
147
- corners: 1, // Roundness (0..1)
148
- color: '#000', // #rgb or #rrggbb
149
- direction: 1, // 1: clockwise, -1: counterclockwise
150
- speed: 1, // Rounds per second
151
- trail: 100, // Afterglow percentage
152
- opacity: 1/4, // Opacity of the lines
153
- fps: 20, // Frames per second when using setTimeout()
154
- zIndex: 2e9, // Use a high z-index by default
155
- className: 'spinner', // CSS class to assign to the element
156
- top: '50%', // center vertically
157
- left: '50%', // center horizontally
158
- position: 'absolute' // element position
151
+ lines: 12 // The number of lines to draw
152
+ , length: 7 // The length of each line
153
+ , width: 5 // The line thickness
154
+ , radius: 10 // The radius of the inner circle
155
+ , scale: 1.0 // Scales overall size of the spinner
156
+ , corners: 1 // Roundness (0..1)
157
+ , color: '#000' // #rgb or #rrggbb
158
+ , opacity: 1/4 // Opacity of the lines
159
+ , rotate: 0 // Rotation offset
160
+ , direction: 1 // 1: clockwise, -1: counterclockwise
161
+ , speed: 1 // Rounds per second
162
+ , trail: 100 // Afterglow percentage
163
+ , fps: 20 // Frames per second when using setTimeout()
164
+ , zIndex: 2e9 // Use a high z-index by default
165
+ , className: 'spinner' // CSS class to assign to the element
166
+ , top: '50%' // center vertically
167
+ , left: '50%' // center horizontally
168
+ , shadow: false // Whether to render a shadow
169
+ , hwaccel: false // Whether to use hardware acceleration (might be buggy)
170
+ , position: 'absolute' // Element positioning
159
171
  }
160
172
 
161
173
  /** The constructor */
162
- function Spinner(o) {
174
+ function Spinner (o) {
163
175
  this.opts = merge(o || {}, Spinner.defaults, defaults)
164
176
  }
165
177
 
@@ -167,27 +179,28 @@
167
179
  Spinner.defaults = {}
168
180
 
169
181
  merge(Spinner.prototype, {
170
-
171
182
  /**
172
183
  * Adds the spinner to the given target element. If this instance is already
173
184
  * spinning, it is automatically removed from its previous target b calling
174
185
  * stop() internally.
175
186
  */
176
- spin: function(target) {
187
+ spin: function (target) {
177
188
  this.stop()
178
189
 
179
190
  var self = this
180
191
  , o = self.opts
181
- , el = self.el = css(createEl(0, {className: o.className}), {position: o.position, width: 0, zIndex: o.zIndex})
182
- , mid = o.radius+o.length+o.width
192
+ , el = self.el = createEl(null, {className: o.className})
183
193
 
184
194
  css(el, {
185
- left: o.left,
186
- top: o.top
195
+ position: o.position
196
+ , width: 0
197
+ , zIndex: o.zIndex
198
+ , left: o.left
199
+ , top: o.top
187
200
  })
188
-
201
+
189
202
  if (target) {
190
- target.insertBefore(el, target.firstChild||null)
203
+ target.insertBefore(el, target.firstChild || null)
191
204
  }
192
205
 
193
206
  el.setAttribute('role', 'progressbar')
@@ -199,27 +212,27 @@
199
212
  , start = (o.lines - 1) * (1 - o.direction) / 2
200
213
  , alpha
201
214
  , fps = o.fps
202
- , f = fps/o.speed
203
- , ostep = (1-o.opacity) / (f*o.trail / 100)
204
- , astep = f/o.lines
215
+ , f = fps / o.speed
216
+ , ostep = (1 - o.opacity) / (f * o.trail / 100)
217
+ , astep = f / o.lines
205
218
 
206
- ;(function anim() {
207
- i++;
219
+ ;(function anim () {
220
+ i++
208
221
  for (var j = 0; j < o.lines; j++) {
209
222
  alpha = Math.max(1 - (i + (o.lines - j) * astep) % f * ostep, o.opacity)
210
223
 
211
224
  self.opacity(el, j * o.direction + start, alpha, o)
212
225
  }
213
- self.timeout = self.el && setTimeout(anim, ~~(1000/fps))
226
+ self.timeout = self.el && setTimeout(anim, ~~(1000 / fps))
214
227
  })()
215
228
  }
216
229
  return self
217
- },
230
+ }
218
231
 
219
232
  /**
220
233
  * Stops and removes the Spinner.
221
234
  */
222
- stop: function() {
235
+ , stop: function () {
223
236
  var el = this.el
224
237
  if (el) {
225
238
  clearTimeout(this.timeout)
@@ -227,123 +240,137 @@
227
240
  this.el = undefined
228
241
  }
229
242
  return this
230
- },
243
+ }
231
244
 
232
245
  /**
233
246
  * Internal method that draws the individual lines. Will be overwritten
234
247
  * in VML fallback mode below.
235
248
  */
236
- lines: function(el, o) {
249
+ , lines: function (el, o) {
237
250
  var i = 0
238
251
  , start = (o.lines - 1) * (1 - o.direction) / 2
239
252
  , seg
240
253
 
241
- function fill(color, shadow) {
254
+ function fill (color, shadow) {
242
255
  return css(createEl(), {
243
- position: 'absolute',
244
- width: (o.length+o.width) + 'px',
245
- height: o.width + 'px',
246
- background: color,
247
- boxShadow: shadow,
248
- transformOrigin: 'left',
249
- transform: 'rotate(' + ~~(360/o.lines*i+o.rotate) + 'deg) translate(' + o.radius+'px' +',0)',
250
- borderRadius: (o.corners * o.width>>1) + 'px'
256
+ position: 'absolute'
257
+ , width: o.scale * (o.length + o.width) + 'px'
258
+ , height: o.scale * o.width + 'px'
259
+ , background: color
260
+ , boxShadow: shadow
261
+ , transformOrigin: 'left'
262
+ , transform: 'rotate(' + ~~(360/o.lines*i + o.rotate) + 'deg) translate(' + o.scale*o.radius + 'px' + ',0)'
263
+ , borderRadius: (o.corners * o.scale * o.width >> 1) + 'px'
251
264
  })
252
265
  }
253
266
 
254
267
  for (; i < o.lines; i++) {
255
268
  seg = css(createEl(), {
256
- position: 'absolute',
257
- top: 1+~(o.width/2) + 'px',
258
- transform: o.hwaccel ? 'translate3d(0,0,0)' : '',
259
- opacity: o.opacity,
260
- animation: useCssAnimations && addAnimation(o.opacity, o.trail, start + i * o.direction, o.lines) + ' ' + 1/o.speed + 's linear infinite'
269
+ position: 'absolute'
270
+ , top: 1 + ~(o.scale * o.width / 2) + 'px'
271
+ , transform: o.hwaccel ? 'translate3d(0,0,0)' : ''
272
+ , opacity: o.opacity
273
+ , animation: useCssAnimations && addAnimation(o.opacity, o.trail, start + i * o.direction, o.lines) + ' ' + 1 / o.speed + 's linear infinite'
261
274
  })
262
275
 
263
- if (o.shadow) ins(seg, css(fill('#000', '0 0 4px ' + '#000'), {top: 2+'px'}))
276
+ if (o.shadow) ins(seg, css(fill('#000', '0 0 4px #000'), {top: '2px'}))
264
277
  ins(el, ins(seg, fill(getColor(o.color, i), '0 0 1px rgba(0,0,0,.1)')))
265
278
  }
266
279
  return el
267
- },
280
+ }
268
281
 
269
282
  /**
270
283
  * Internal method that adjusts the opacity of a single line.
271
284
  * Will be overwritten in VML fallback mode below.
272
285
  */
273
- opacity: function(el, i, val) {
286
+ , opacity: function (el, i, val) {
274
287
  if (i < el.childNodes.length) el.childNodes[i].style.opacity = val
275
288
  }
276
289
 
277
290
  })
278
291
 
279
292
 
280
- function initVML() {
293
+ function initVML () {
281
294
 
282
295
  /* Utility function to create a VML tag */
283
- function vml(tag, attr) {
296
+ function vml (tag, attr) {
284
297
  return createEl('<' + tag + ' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">', attr)
285
298
  }
286
299
 
287
300
  // No CSS transforms but VML support, add a CSS rule for VML elements:
288
301
  sheet.addRule('.spin-vml', 'behavior:url(#default#VML)')
289
302
 
290
- Spinner.prototype.lines = function(el, o) {
291
- var r = o.length+o.width
292
- , s = 2*r
303
+ Spinner.prototype.lines = function (el, o) {
304
+ var r = o.scale * (o.length + o.width)
305
+ , s = o.scale * 2 * r
293
306
 
294
- function grp() {
307
+ function grp () {
295
308
  return css(
296
309
  vml('group', {
297
- coordsize: s + ' ' + s,
298
- coordorigin: -r + ' ' + -r
299
- }),
300
- { width: s, height: s }
310
+ coordsize: s + ' ' + s
311
+ , coordorigin: -r + ' ' + -r
312
+ })
313
+ , { width: s, height: s }
301
314
  )
302
315
  }
303
316
 
304
- var margin = -(o.width+o.length)*2 + 'px'
317
+ var margin = -(o.width + o.length) * o.scale * 2 + 'px'
305
318
  , g = css(grp(), {position: 'absolute', top: margin, left: margin})
306
319
  , i
307
320
 
308
- function seg(i, dx, filter) {
309
- ins(g,
310
- ins(css(grp(), {rotation: 360 / o.lines * i + 'deg', left: ~~dx}),
311
- ins(css(vml('roundrect', {arcsize: o.corners}), {
312
- width: r,
313
- height: o.width,
314
- left: o.radius,
315
- top: -o.width>>1,
316
- filter: filter
317
- }),
318
- vml('fill', {color: getColor(o.color, i), opacity: o.opacity}),
319
- vml('stroke', {opacity: 0}) // transparent stroke to fix color bleeding upon opacity change
321
+ function seg (i, dx, filter) {
322
+ ins(
323
+ g
324
+ , ins(
325
+ css(grp(), {rotation: 360 / o.lines * i + 'deg', left: ~~dx})
326
+ , ins(
327
+ css(
328
+ vml('roundrect', {arcsize: o.corners})
329
+ , { width: r
330
+ , height: o.scale * o.width
331
+ , left: o.scale * o.radius
332
+ , top: -o.scale * o.width >> 1
333
+ , filter: filter
334
+ }
335
+ )
336
+ , vml('fill', {color: getColor(o.color, i), opacity: o.opacity})
337
+ , vml('stroke', {opacity: 0}) // transparent stroke to fix color bleeding upon opacity change
320
338
  )
321
339
  )
322
340
  )
323
341
  }
324
342
 
325
343
  if (o.shadow)
326
- for (i = 1; i <= o.lines; i++)
344
+ for (i = 1; i <= o.lines; i++) {
327
345
  seg(i, -2, 'progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)')
346
+ }
328
347
 
329
348
  for (i = 1; i <= o.lines; i++) seg(i)
330
349
  return ins(el, g)
331
350
  }
332
351
 
333
- Spinner.prototype.opacity = function(el, i, val, o) {
352
+ Spinner.prototype.opacity = function (el, i, val, o) {
334
353
  var c = el.firstChild
335
354
  o = o.shadow && o.lines || 0
336
- if (c && i+o < c.childNodes.length) {
337
- c = c.childNodes[i+o]; c = c && c.firstChild; c = c && c.firstChild
355
+ if (c && i + o < c.childNodes.length) {
356
+ c = c.childNodes[i + o]; c = c && c.firstChild; c = c && c.firstChild
338
357
  if (c) c.opacity = val
339
358
  }
340
359
  }
341
360
  }
342
361
 
343
- var probe = css(createEl('group'), {behavior: 'url(#default#VML)'})
362
+ if (typeof document !== 'undefined') {
363
+ sheet = (function () {
364
+ var el = createEl('style', {type : 'text/css'})
365
+ ins(document.getElementsByTagName('head')[0], el)
366
+ return el.sheet || el.styleSheet
367
+ }())
344
368
 
345
- if (!vendor(probe, 'transform') && probe.adj) initVML()
346
- else useCssAnimations = vendor(probe, 'animation')
369
+ var probe = css(createEl('group'), {behavior: 'url(#default#VML)'})
370
+
371
+ if (!vendor(probe, 'transform') && probe.adj) initVML()
372
+ else useCssAnimations = vendor(probe, 'animation')
373
+ }
347
374
 
348
375
  return Spinner
349
376
 
@@ -1,3 +1,3 @@
1
1
  module Coffeebox
2
- VERSION = "0.2.3"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coffeebox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - glebtv
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-29 00:00:00.000000000 Z
11
+ date: 2016-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  version: '0'
97
97
  requirements: []
98
98
  rubyforge_project:
99
- rubygems_version: 2.4.5
99
+ rubygems_version: 2.4.5.1
100
100
  signing_key:
101
101
  specification_version: 4
102
102
  summary: An opinionated rewrite of Facebox in coffescript bundled as a rails gem