volt-semantic-ui 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -0
  3. data/Gemfile +0 -0
  4. data/LICENSE.txt +0 -0
  5. data/README.md +0 -0
  6. data/Rakefile +0 -0
  7. data/app/semanticui/assets/css/semantic.min.css +3 -3
  8. data/app/semanticui/assets/css/themes/basic/assets/fonts/icons.eot +0 -0
  9. data/app/semanticui/assets/css/themes/basic/assets/fonts/icons.svg +0 -0
  10. data/app/semanticui/assets/css/themes/basic/assets/fonts/icons.ttf +0 -0
  11. data/app/semanticui/assets/css/themes/basic/assets/fonts/icons.woff +0 -0
  12. data/app/semanticui/assets/css/themes/default/assets/fonts/icons.eot +0 -0
  13. data/app/semanticui/assets/css/themes/default/assets/fonts/icons.otf +0 -0
  14. data/app/semanticui/assets/css/themes/default/assets/fonts/icons.svg +526 -465
  15. data/app/semanticui/assets/css/themes/default/assets/fonts/icons.ttf +0 -0
  16. data/app/semanticui/assets/css/themes/default/assets/fonts/icons.woff +0 -0
  17. data/app/semanticui/assets/css/themes/default/assets/fonts/icons.woff2 +0 -0
  18. data/app/semanticui/assets/css/themes/default/assets/images/flags.png +0 -0
  19. data/app/semanticui/assets/js/components/accordion.css +256 -0
  20. data/app/semanticui/assets/js/components/accordion.js +578 -0
  21. data/app/semanticui/assets/js/components/accordion.min.css +10 -0
  22. data/app/semanticui/assets/js/components/accordion.min.js +11 -0
  23. data/app/semanticui/assets/js/components/ad.css +276 -0
  24. data/app/semanticui/assets/js/components/ad.min.css +10 -0
  25. data/app/semanticui/assets/js/components/api.js +871 -0
  26. data/app/semanticui/assets/js/components/api.min.js +11 -0
  27. data/app/semanticui/assets/js/components/breadcrumb.css +124 -0
  28. data/app/semanticui/assets/js/components/breadcrumb.min.css +10 -0
  29. data/app/semanticui/assets/js/components/button.css +2391 -0
  30. data/app/semanticui/assets/js/components/button.min.css +10 -0
  31. data/app/semanticui/assets/js/components/card.css +909 -0
  32. data/app/semanticui/assets/js/components/card.min.css +10 -0
  33. data/app/semanticui/assets/js/components/checkbox.css +513 -0
  34. data/app/semanticui/assets/js/components/checkbox.js +509 -0
  35. data/app/semanticui/assets/js/components/checkbox.min.css +10 -0
  36. data/app/semanticui/assets/js/components/checkbox.min.js +11 -0
  37. data/app/semanticui/assets/js/components/comment.css +259 -0
  38. data/app/semanticui/assets/js/components/comment.min.css +10 -0
  39. data/app/semanticui/assets/js/components/dimmer.css +186 -0
  40. data/app/semanticui/assets/js/components/dimmer.js +669 -0
  41. data/app/semanticui/assets/js/components/dimmer.min.css +10 -0
  42. data/app/semanticui/assets/js/components/dimmer.min.js +11 -0
  43. data/app/semanticui/assets/js/components/divider.css +241 -0
  44. data/app/semanticui/assets/js/components/divider.min.css +10 -0
  45. data/app/semanticui/assets/js/components/dropdown.css +1103 -0
  46. data/app/semanticui/assets/js/components/dropdown.js +1795 -0
  47. data/app/semanticui/assets/js/components/dropdown.min.css +10 -0
  48. data/app/semanticui/assets/js/components/dropdown.min.js +11 -0
  49. data/app/semanticui/assets/js/components/feed.css +276 -0
  50. data/app/semanticui/assets/js/components/feed.min.css +10 -0
  51. data/app/semanticui/assets/js/components/flag.css +1024 -0
  52. data/app/semanticui/assets/js/components/flag.min.css +10 -0
  53. data/app/semanticui/assets/js/components/form.css +891 -0
  54. data/app/semanticui/assets/js/components/form.js +1118 -0
  55. data/app/semanticui/assets/js/components/form.min.css +10 -0
  56. data/app/semanticui/assets/js/components/form.min.js +11 -0
  57. data/app/semanticui/assets/js/components/grid.css +1871 -0
  58. data/app/semanticui/assets/js/components/grid.min.css +10 -0
  59. data/app/semanticui/assets/js/components/header.css +596 -0
  60. data/app/semanticui/assets/js/components/header.min.css +10 -0
  61. data/app/semanticui/assets/js/components/icon.css +2467 -0
  62. data/app/semanticui/assets/js/components/icon.min.css +10 -0
  63. data/app/semanticui/assets/js/components/image.css +288 -0
  64. data/app/semanticui/assets/js/components/image.min.css +10 -0
  65. data/app/semanticui/assets/js/components/input.css +439 -0
  66. data/app/semanticui/assets/js/components/input.min.css +10 -0
  67. data/app/semanticui/assets/js/components/item.css +456 -0
  68. data/app/semanticui/assets/js/components/item.min.css +10 -0
  69. data/app/semanticui/assets/js/components/label.css +963 -0
  70. data/app/semanticui/assets/js/components/label.min.css +10 -0
  71. data/app/semanticui/assets/js/components/list.css +878 -0
  72. data/app/semanticui/assets/js/components/list.min.css +10 -0
  73. data/app/semanticui/assets/js/components/loader.css +284 -0
  74. data/app/semanticui/assets/js/components/loader.min.css +10 -0
  75. data/app/semanticui/assets/js/components/menu.css +1608 -0
  76. data/app/semanticui/assets/js/components/menu.min.css +10 -0
  77. data/app/semanticui/assets/js/components/message.css +421 -0
  78. data/app/semanticui/assets/js/components/message.min.css +10 -0
  79. data/app/semanticui/assets/js/components/modal.css +432 -0
  80. data/app/semanticui/assets/js/components/modal.js +860 -0
  81. data/app/semanticui/assets/js/components/modal.min.css +10 -0
  82. data/app/semanticui/assets/js/components/modal.min.js +11 -0
  83. data/app/semanticui/assets/js/components/nag.css +148 -0
  84. data/app/semanticui/assets/js/components/nag.js +477 -0
  85. data/app/semanticui/assets/js/components/nag.min.css +10 -0
  86. data/app/semanticui/assets/js/components/nag.min.js +11 -0
  87. data/app/semanticui/assets/js/components/popup.css +293 -0
  88. data/app/semanticui/assets/js/components/popup.js +1224 -0
  89. data/app/semanticui/assets/js/components/popup.min.css +10 -0
  90. data/app/semanticui/assets/js/components/popup.min.js +11 -0
  91. data/app/semanticui/assets/js/components/progress.css +461 -0
  92. data/app/semanticui/assets/js/components/progress.js +785 -0
  93. data/app/semanticui/assets/js/components/progress.min.css +10 -0
  94. data/app/semanticui/assets/js/components/progress.min.js +11 -0
  95. data/app/semanticui/assets/js/components/rail.css +124 -0
  96. data/app/semanticui/assets/js/components/rail.min.css +10 -0
  97. data/app/semanticui/assets/js/components/rating.css +251 -0
  98. data/app/semanticui/assets/js/components/rating.js +451 -0
  99. data/app/semanticui/assets/js/components/rating.min.css +10 -0
  100. data/app/semanticui/assets/js/components/rating.min.js +11 -0
  101. data/app/semanticui/assets/js/components/reset.css +429 -0
  102. data/app/semanticui/assets/js/components/reset.min.css +10 -0
  103. data/app/semanticui/assets/js/components/reveal.css +293 -0
  104. data/app/semanticui/assets/js/components/reveal.min.css +10 -0
  105. data/app/semanticui/assets/js/components/search.css +329 -0
  106. data/app/semanticui/assets/js/components/search.js +1096 -0
  107. data/app/semanticui/assets/js/components/search.min.css +10 -0
  108. data/app/semanticui/assets/js/components/search.min.js +11 -0
  109. data/app/semanticui/assets/js/components/segment.css +635 -0
  110. data/app/semanticui/assets/js/components/segment.min.css +10 -0
  111. data/app/semanticui/assets/js/components/shape.css +154 -0
  112. data/app/semanticui/assets/js/components/shape.js +830 -0
  113. data/app/semanticui/assets/js/components/shape.min.css +10 -0
  114. data/app/semanticui/assets/js/components/shape.min.js +11 -0
  115. data/app/semanticui/assets/js/components/sidebar.css +625 -0
  116. data/app/semanticui/assets/js/components/sidebar.js +1089 -0
  117. data/app/semanticui/assets/js/components/sidebar.min.css +10 -0
  118. data/app/semanticui/assets/js/components/sidebar.min.js +11 -0
  119. data/app/semanticui/assets/js/components/site.css +160 -0
  120. data/app/semanticui/assets/js/components/site.js +487 -0
  121. data/app/semanticui/assets/js/components/site.min.css +10 -0
  122. data/app/semanticui/assets/js/components/site.min.js +11 -0
  123. data/app/semanticui/assets/js/components/state.js +695 -0
  124. data/app/semanticui/assets/js/components/state.min.js +11 -0
  125. data/app/semanticui/assets/js/components/statistic.css +409 -0
  126. data/app/semanticui/assets/js/components/statistic.min.css +10 -0
  127. data/app/semanticui/assets/js/components/step.css +432 -0
  128. data/app/semanticui/assets/js/components/step.min.css +10 -0
  129. data/app/semanticui/assets/js/components/sticky.css +79 -0
  130. data/app/semanticui/assets/js/components/sticky.js +792 -0
  131. data/app/semanticui/assets/js/components/sticky.min.css +10 -0
  132. data/app/semanticui/assets/js/components/sticky.min.js +11 -0
  133. data/app/semanticui/assets/js/components/tab.css +92 -0
  134. data/app/semanticui/assets/js/components/tab.js +802 -0
  135. data/app/semanticui/assets/js/components/tab.min.css +10 -0
  136. data/app/semanticui/assets/js/components/tab.min.js +11 -0
  137. data/app/semanticui/assets/js/components/table.css +1000 -0
  138. data/app/semanticui/assets/js/components/table.min.css +10 -0
  139. data/app/semanticui/assets/js/components/transition.css +1990 -0
  140. data/app/semanticui/assets/js/components/transition.js +1038 -0
  141. data/app/semanticui/assets/js/components/transition.min.css +10 -0
  142. data/app/semanticui/assets/js/components/transition.min.js +11 -0
  143. data/app/semanticui/assets/js/components/video.css +125 -0
  144. data/app/semanticui/assets/js/components/video.js +540 -0
  145. data/app/semanticui/assets/js/components/video.min.css +10 -0
  146. data/app/semanticui/assets/js/components/video.min.js +11 -0
  147. data/app/semanticui/assets/js/components/visibility.js +1032 -0
  148. data/app/semanticui/assets/js/components/visibility.min.js +11 -0
  149. data/app/semanticui/assets/js/semantic.min.js +9 -9
  150. data/lib/volt/semanticui.rb +0 -0
  151. data/lib/volt/semanticui/version.rb +1 -1
  152. data/volt-semantic-ui-0.0.1.gem +0 -0
  153. data/volt-semanticui-0.0.1.gem +0 -0
  154. data/volt-semanticui.gemspec +0 -0
  155. metadata +141 -10
@@ -0,0 +1,1038 @@
1
+ /*!
2
+ * # Semantic UI 1.11.4 - Transition
3
+ * http://github.com/semantic-org/semantic-ui/
4
+ *
5
+ *
6
+ * Copyright 2014 Contributors
7
+ * Released under the MIT license
8
+ * http://opensource.org/licenses/MIT
9
+ *
10
+ */
11
+
12
+ ;(function ( $, window, document, undefined ) {
13
+
14
+ "use strict";
15
+
16
+ $.fn.transition = function() {
17
+ var
18
+ $allModules = $(this),
19
+ moduleSelector = $allModules.selector || '',
20
+
21
+ time = new Date().getTime(),
22
+ performance = [],
23
+
24
+ moduleArguments = arguments,
25
+ query = moduleArguments[0],
26
+ queryArguments = [].slice.call(arguments, 1),
27
+ methodInvoked = (typeof query === 'string'),
28
+
29
+ requestAnimationFrame = window.requestAnimationFrame
30
+ || window.mozRequestAnimationFrame
31
+ || window.webkitRequestAnimationFrame
32
+ || window.msRequestAnimationFrame
33
+ || function(callback) { setTimeout(callback, 0); },
34
+
35
+ returnedValue
36
+ ;
37
+ $allModules
38
+ .each(function(index) {
39
+ var
40
+ $module = $(this),
41
+ element = this,
42
+
43
+ // set at run time
44
+ settings,
45
+ instance,
46
+
47
+ error,
48
+ className,
49
+ metadata,
50
+ animationStart,
51
+ animationEnd,
52
+ animationName,
53
+
54
+ namespace,
55
+ moduleNamespace,
56
+ eventNamespace,
57
+ module
58
+ ;
59
+
60
+ module = {
61
+
62
+ initialize: function() {
63
+
64
+ // get full settings
65
+ settings = module.get.settings.apply(element, moduleArguments);
66
+
67
+ // shorthand
68
+ className = settings.className;
69
+ error = settings.error;
70
+ metadata = settings.metadata;
71
+
72
+ // define namespace
73
+ eventNamespace = '.' + settings.namespace;
74
+ moduleNamespace = 'module-' + settings.namespace;
75
+ instance = $module.data(moduleNamespace) || module;
76
+
77
+ // get vendor specific events
78
+ animationEnd = module.get.animationEndEvent();
79
+ animationName = module.get.animationName();
80
+ animationStart = module.get.animationStartEvent();
81
+
82
+ if(methodInvoked) {
83
+ methodInvoked = module.invoke(query);
84
+ }
85
+
86
+ // method not invoked, lets run an animation
87
+ if(methodInvoked === false) {
88
+ module.verbose('Converted arguments into settings object', settings);
89
+ if(settings.interval) {
90
+ module.delay(settings.animate);
91
+ }
92
+ else {
93
+ module.animate();
94
+ }
95
+ module.instantiate();
96
+ }
97
+ },
98
+
99
+ instantiate: function() {
100
+ module.verbose('Storing instance of module', module);
101
+ instance = module;
102
+ $module
103
+ .data(moduleNamespace, instance)
104
+ ;
105
+ },
106
+
107
+ destroy: function() {
108
+ module.verbose('Destroying previous module for', element);
109
+ $module
110
+ .removeData(moduleNamespace)
111
+ ;
112
+ },
113
+
114
+ refresh: function() {
115
+ module.verbose('Refreshing display type on next animation');
116
+ delete module.displayType;
117
+ },
118
+
119
+ forceRepaint: function() {
120
+ module.verbose('Forcing element repaint');
121
+ var
122
+ $parentElement = $module.parent(),
123
+ $nextElement = $module.next()
124
+ ;
125
+ if($nextElement.length === 0) {
126
+ $module.detach().appendTo($parentElement);
127
+ }
128
+ else {
129
+ $module.detach().insertBefore($nextElement);
130
+ }
131
+ },
132
+
133
+ repaint: function() {
134
+ module.verbose('Repainting element');
135
+ var
136
+ fakeAssignment = element.offsetWidth
137
+ ;
138
+ },
139
+
140
+ delay: function(interval) {
141
+ var
142
+ isReverse = (settings.reverse === true),
143
+ shouldReverse = (settings.reverse == 'auto' && module.get.direction() == className.outward),
144
+ delay
145
+ ;
146
+ interval = (typeof interval !== undefined)
147
+ ? interval
148
+ : settings.interval
149
+ ;
150
+ delay = (isReverse || shouldReverse)
151
+ ? ($allModules.length - index) * settings.interval
152
+ : index * settings.interval
153
+ ;
154
+ module.debug('Delaying animation by', delay);
155
+ setTimeout(module.animate, delay);
156
+ },
157
+
158
+ animate: function(overrideSettings) {
159
+ settings = overrideSettings || settings;
160
+ if(!module.is.supported()) {
161
+ module.error(error.support);
162
+ return false;
163
+ }
164
+ module.debug('Preparing animation', settings.animation);
165
+ if(module.is.animating()) {
166
+ if(settings.queue) {
167
+ if(!settings.allowRepeats && module.has.direction() && module.is.occurring() && module.queuing !== true) {
168
+ module.debug('Animation is currently occurring, preventing queueing same animation', settings.animation);
169
+ }
170
+ else {
171
+ module.queue(settings.animation);
172
+ }
173
+ return false;
174
+ }
175
+ else if(!settings.allowRepeats && module.is.occurring()) {
176
+ module.debug('Animation is already occurring, will not execute repeated animation', settings.animation);
177
+ return false;
178
+ }
179
+ else {
180
+ module.debug('New animation started, completing previous early', settings.animation);
181
+ module.complete();
182
+ }
183
+ }
184
+ if( module.can.animate() ) {
185
+ module.set.animating(settings.animation);
186
+ }
187
+ else {
188
+ module.error(error.noAnimation, settings.animation, element);
189
+ }
190
+ },
191
+
192
+ reset: function() {
193
+ module.debug('Resetting animation to beginning conditions');
194
+ module.remove.animationCallbacks();
195
+ module.restore.conditions();
196
+ module.remove.animating();
197
+ },
198
+
199
+ queue: function(animation) {
200
+ module.debug('Queueing animation of', animation);
201
+ module.queuing = true;
202
+ $module
203
+ .one(animationEnd + '.queue' + eventNamespace, function() {
204
+ module.queuing = false;
205
+ module.repaint();
206
+ module.animate.apply(this, settings);
207
+ })
208
+ ;
209
+ },
210
+
211
+ complete: function (event) {
212
+ module.debug('Animation complete', settings.animation);
213
+ module.remove.completeCallback();
214
+ module.remove.failSafe();
215
+ if(!module.is.looping()) {
216
+ if( module.is.outward() ) {
217
+ module.verbose('Animation is outward, hiding element');
218
+ module.restore.conditions();
219
+ module.hide();
220
+ settings.onHide.call(this);
221
+ }
222
+ else if( module.is.inward() ) {
223
+ module.verbose('Animation is outward, showing element');
224
+ module.restore.conditions();
225
+ module.show();
226
+ settings.onShow.call(this);
227
+ }
228
+ else {
229
+ module.restore.conditions();
230
+ }
231
+ module.remove.animation();
232
+ module.remove.animating();
233
+ }
234
+ settings.onComplete.call(this);
235
+ },
236
+
237
+ has: {
238
+ direction: function(animation) {
239
+ var
240
+ hasDirection = false
241
+ ;
242
+ animation = animation || settings.animation;
243
+ if(typeof animation === 'string') {
244
+ animation = animation.split(' ');
245
+ $.each(animation, function(index, word){
246
+ if(word === className.inward || word === className.outward) {
247
+ hasDirection = true;
248
+ }
249
+ });
250
+ }
251
+ return hasDirection;
252
+ },
253
+ inlineDisplay: function() {
254
+ var
255
+ style = $module.attr('style') || ''
256
+ ;
257
+ return $.isArray(style.match(/display.*?;/, ''));
258
+ }
259
+ },
260
+
261
+ set: {
262
+ animating: function(animation) {
263
+ animation = animation || settings.animation;
264
+ if(!module.is.animating()) {
265
+ module.save.conditions();
266
+ }
267
+ module.remove.direction();
268
+ module.remove.completeCallback();
269
+ if(module.can.transition() && !module.has.direction()) {
270
+ module.set.direction();
271
+ }
272
+ module.remove.hidden();
273
+ module.set.display();
274
+ $module
275
+ .addClass(className.animating + ' ' + className.transition + ' ' + animation)
276
+ .addClass(animation)
277
+ .one(animationEnd + '.complete' + eventNamespace, module.complete)
278
+ ;
279
+ if(settings.useFailSafe) {
280
+ module.add.failSafe();
281
+ }
282
+ module.set.duration(settings.duration);
283
+ settings.onStart.call(this);
284
+ module.debug('Starting tween', animation, $module.attr('class'));
285
+ },
286
+ duration: function(animationName, duration) {
287
+ duration = duration || settings.duration;
288
+ duration = (typeof duration == 'number')
289
+ ? duration + 'ms'
290
+ : duration
291
+ ;
292
+ if(duration || duration === 0) {
293
+ module.verbose('Setting animation duration', duration);
294
+ $module
295
+ .css({
296
+ '-webkit-animation-duration': duration,
297
+ '-moz-animation-duration': duration,
298
+ '-ms-animation-duration': duration,
299
+ '-o-animation-duration': duration,
300
+ 'animation-duration': duration
301
+ })
302
+ ;
303
+ }
304
+ },
305
+ display: function() {
306
+ var
307
+ style = module.get.style(),
308
+ displayType = module.get.displayType(),
309
+ overrideStyle = style + 'display: ' + displayType + ' !important;'
310
+ ;
311
+ $module.css('display', '');
312
+ module.refresh();
313
+ if( $module.css('display') !== displayType ) {
314
+ module.verbose('Setting inline visibility to', displayType);
315
+ $module
316
+ .attr('style', overrideStyle)
317
+ ;
318
+ }
319
+ },
320
+ direction: function() {
321
+ if($module.is(':visible') && !module.is.hidden()) {
322
+ module.debug('Automatically determining the direction of animation', 'Outward');
323
+ $module
324
+ .removeClass(className.inward)
325
+ .addClass(className.outward)
326
+ ;
327
+ }
328
+ else {
329
+ module.debug('Automatically determining the direction of animation', 'Inward');
330
+ $module
331
+ .removeClass(className.outward)
332
+ .addClass(className.inward)
333
+ ;
334
+ }
335
+ },
336
+ looping: function() {
337
+ module.debug('Transition set to loop');
338
+ $module
339
+ .addClass(className.looping)
340
+ ;
341
+ },
342
+ hidden: function() {
343
+ if(!module.is.hidden()) {
344
+ $module
345
+ .addClass(className.transition)
346
+ .addClass(className.hidden)
347
+ ;
348
+ }
349
+ if($module.css('display') !== 'none') {
350
+ module.verbose('Overriding default display to hide element');
351
+ $module
352
+ .css('display', 'none')
353
+ ;
354
+ }
355
+ },
356
+ visible: function() {
357
+ $module
358
+ .addClass(className.transition)
359
+ .addClass(className.visible)
360
+ ;
361
+ }
362
+ },
363
+
364
+ save: {
365
+ displayType: function(displayType) {
366
+ $module.data(metadata.displayType, displayType);
367
+ },
368
+ transitionExists: function(animation, exists) {
369
+ $.fn.transition.exists[animation] = exists;
370
+ module.verbose('Saving existence of transition', animation, exists);
371
+ },
372
+ conditions: function() {
373
+ var
374
+ clasName = $module.attr('class') || false,
375
+ style = $module.attr('style') || ''
376
+ ;
377
+ $module.removeClass(settings.animation);
378
+ module.remove.direction();
379
+ module.cache = {
380
+ className : $module.attr('class'),
381
+ style : module.get.style()
382
+ };
383
+ module.verbose('Saving original attributes', module.cache);
384
+ }
385
+ },
386
+
387
+ restore: {
388
+ conditions: function() {
389
+ if(module.cache === undefined) {
390
+ return false;
391
+ }
392
+ if(module.cache.className) {
393
+ $module.attr('class', module.cache.className);
394
+ }
395
+ else {
396
+ $module.removeAttr('class');
397
+ }
398
+ if(module.cache.style) {
399
+ module.verbose('Restoring original style attribute', module.cache.style);
400
+ $module.attr('style', module.cache.style);
401
+ }
402
+ else {
403
+ module.verbose('Clearing style attribute');
404
+ $module.removeAttr('style');
405
+ }
406
+ module.verbose('Restoring original attributes', module.cache);
407
+ }
408
+ },
409
+
410
+ add: {
411
+ failSafe: function() {
412
+ var
413
+ duration = module.get.duration()
414
+ ;
415
+ module.timer = setTimeout(function() {
416
+ $module.trigger(animationEnd);
417
+ }, duration + settings.failSafeDelay);
418
+ module.verbose('Adding fail safe timer', module.timer);
419
+ }
420
+ },
421
+
422
+ remove: {
423
+ animating: function() {
424
+ $module.removeClass(className.animating);
425
+ },
426
+ animation: function() {
427
+ $module
428
+ .css({
429
+ '-webkit-animation' : '',
430
+ '-moz-animation' : '',
431
+ '-ms-animation' : '',
432
+ '-o-animation' : '',
433
+ 'animation' : ''
434
+ })
435
+ ;
436
+ },
437
+ animationCallbacks: function() {
438
+ module.remove.queueCallback();
439
+ module.remove.completeCallback();
440
+ },
441
+ queueCallback: function() {
442
+ $module.off('.queue' + eventNamespace)
443
+ },
444
+ completeCallback: function() {
445
+ $module.off('.complete' + eventNamespace);
446
+ },
447
+ display: function() {
448
+ $module.css('display', '');
449
+ },
450
+ direction: function() {
451
+ $module
452
+ .removeClass(className.inward)
453
+ .removeClass(className.outward)
454
+ ;
455
+ },
456
+ failSafe: function() {
457
+ module.verbose('Removing fail safe timer', module.timer);
458
+ if(module.timer) {
459
+ clearTimeout(module.timer);
460
+ }
461
+ },
462
+ hidden: function() {
463
+ $module.removeClass(className.hidden);
464
+ },
465
+ visible: function() {
466
+ $module.removeClass(className.visible);
467
+ },
468
+ looping: function() {
469
+ module.debug('Transitions are no longer looping');
470
+ if( module.is.looping() ) {
471
+ module.reset();
472
+ $module
473
+ .removeClass(className.looping)
474
+ ;
475
+ }
476
+ },
477
+ transition: function() {
478
+ $module
479
+ .removeClass(className.visible)
480
+ .removeClass(className.hidden)
481
+ ;
482
+ }
483
+ },
484
+ get: {
485
+ settings: function(animation, duration, onComplete) {
486
+ // single settings object
487
+ if(typeof animation == 'object') {
488
+ return $.extend(true, {}, $.fn.transition.settings, animation);
489
+ }
490
+ // all arguments provided
491
+ else if(typeof onComplete == 'function') {
492
+ return $.extend({}, $.fn.transition.settings, {
493
+ animation : animation,
494
+ onComplete : onComplete,
495
+ duration : duration
496
+ });
497
+ }
498
+ // only duration provided
499
+ else if(typeof duration == 'string' || typeof duration == 'number') {
500
+ return $.extend({}, $.fn.transition.settings, {
501
+ animation : animation,
502
+ duration : duration
503
+ });
504
+ }
505
+ // duration is actually settings object
506
+ else if(typeof duration == 'object') {
507
+ return $.extend({}, $.fn.transition.settings, duration, {
508
+ animation : animation
509
+ });
510
+ }
511
+ // duration is actually callback
512
+ else if(typeof duration == 'function') {
513
+ return $.extend({}, $.fn.transition.settings, {
514
+ animation : animation,
515
+ onComplete : duration
516
+ });
517
+ }
518
+ // only animation provided
519
+ else {
520
+ return $.extend({}, $.fn.transition.settings, {
521
+ animation : animation
522
+ });
523
+ }
524
+ return $.fn.transition.settings;
525
+ },
526
+ direction: function(animation) {
527
+ // quickest manually specified direction
528
+ animation = animation || settings.animation;
529
+ if(typeof animation === 'string') {
530
+ animation = animation.split(' ');
531
+ $.each(animation, function(index, word){
532
+ if(word === className.inward) {
533
+ return className.inward;
534
+ }
535
+ else if(word === className.outward) {
536
+ return className.outward;
537
+ }
538
+ });
539
+ }
540
+ // slower backup
541
+ if( !module.can.transition() ) {
542
+ return 'static';
543
+ }
544
+ if($module.is(':visible') && !module.is.hidden()) {
545
+ return className.outward;
546
+ }
547
+ else {
548
+ return className.inward;
549
+ }
550
+ },
551
+ duration: function(duration) {
552
+ duration = duration || settings.duration;
553
+ if(duration === false) {
554
+ duration = $module.css('animation-duration') || 0;
555
+ }
556
+ return (typeof duration === 'string')
557
+ ? (duration.indexOf('ms') > -1)
558
+ ? parseFloat(duration)
559
+ : parseFloat(duration) * 1000
560
+ : duration
561
+ ;
562
+ },
563
+ displayType: function() {
564
+ if(settings.displayType) {
565
+ return settings.displayType;
566
+ }
567
+ if($module.data(metadata.displayType) === undefined) {
568
+ // create fake element to determine display state
569
+ module.can.transition(true);
570
+ }
571
+ return $module.data(metadata.displayType);
572
+ },
573
+ style: function() {
574
+ var
575
+ style = $module.attr('style') || ''
576
+ ;
577
+ return style.replace(/display.*?;/, '');
578
+ },
579
+ transitionExists: function(animation) {
580
+ return $.fn.transition.exists[animation];
581
+ },
582
+ animationName: function() {
583
+ var
584
+ element = document.createElement('div'),
585
+ animations = {
586
+ 'animation' :'animationName',
587
+ 'OAnimation' :'oAnimationName',
588
+ 'MozAnimation' :'mozAnimationName',
589
+ 'WebkitAnimation' :'webkitAnimationName'
590
+ },
591
+ animation
592
+ ;
593
+ for(animation in animations){
594
+ if( element.style[animation] !== undefined ){
595
+ return animations[animation];
596
+ }
597
+ }
598
+ return false;
599
+ },
600
+ animationStartEvent: function() {
601
+ var
602
+ element = document.createElement('div'),
603
+ animations = {
604
+ 'animation' :'animationstart',
605
+ 'OAnimation' :'oAnimationStart',
606
+ 'MozAnimation' :'mozAnimationStart',
607
+ 'WebkitAnimation' :'webkitAnimationStart'
608
+ },
609
+ animation
610
+ ;
611
+ for(animation in animations){
612
+ if( element.style[animation] !== undefined ){
613
+ return animations[animation];
614
+ }
615
+ }
616
+ return false;
617
+ },
618
+ animationEndEvent: function() {
619
+ var
620
+ element = document.createElement('div'),
621
+ animations = {
622
+ 'animation' :'animationend',
623
+ 'OAnimation' :'oAnimationEnd',
624
+ 'MozAnimation' :'mozAnimationEnd',
625
+ 'WebkitAnimation' :'webkitAnimationEnd'
626
+ },
627
+ animation
628
+ ;
629
+ for(animation in animations){
630
+ if( element.style[animation] !== undefined ){
631
+ return animations[animation];
632
+ }
633
+ }
634
+ return false;
635
+ }
636
+
637
+ },
638
+
639
+ can: {
640
+ transition: function(forced) {
641
+ var
642
+ elementClass = $module.attr('class'),
643
+ tagName = $module.prop('tagName'),
644
+ animation = settings.animation,
645
+ transitionExists = module.get.transitionExists(animation),
646
+ $clone,
647
+ currentAnimation,
648
+ inAnimation,
649
+ directionExists,
650
+ displayType
651
+ ;
652
+ if( transitionExists === undefined || forced) {
653
+ module.verbose('Determining whether animation exists');
654
+ $clone = $('<' + tagName + ' />').addClass( elementClass ).insertAfter($module);
655
+ currentAnimation = $clone
656
+ .addClass(animation)
657
+ .removeClass(className.inward)
658
+ .removeClass(className.outward)
659
+ .addClass(className.animating)
660
+ .addClass(className.transition)
661
+ .css(animationName)
662
+ ;
663
+ inAnimation = $clone
664
+ .addClass(className.inward)
665
+ .css(animationName)
666
+ ;
667
+ displayType = $clone
668
+ .attr('class', elementClass)
669
+ .removeAttr('style')
670
+ .removeClass(className.hidden)
671
+ .removeClass(className.visible)
672
+ .show()
673
+ .css('display')
674
+ ;
675
+ module.verbose('Determining final display state', displayType);
676
+ module.save.displayType(displayType);
677
+
678
+ $clone.remove();
679
+ if(currentAnimation != inAnimation) {
680
+ module.debug('Direction exists for animation', animation);
681
+ directionExists = true;
682
+ }
683
+ else if(currentAnimation == 'none' || !currentAnimation) {
684
+ module.debug('No animation defined in css', animation);
685
+ return;
686
+ }
687
+ else {
688
+ module.debug('Static animation found', animation, displayType);
689
+ directionExists = false;
690
+ }
691
+ module.save.transitionExists(animation, directionExists);
692
+ }
693
+ return (transitionExists !== undefined)
694
+ ? transitionExists
695
+ : directionExists
696
+ ;
697
+ },
698
+ animate: function() {
699
+ // can transition does not return a value if animation does not exist
700
+ return (module.can.transition() !== undefined);
701
+ }
702
+ },
703
+
704
+ is: {
705
+ animating: function() {
706
+ return $module.hasClass(className.animating);
707
+ },
708
+ inward: function() {
709
+ return $module.hasClass(className.inward);
710
+ },
711
+ outward: function() {
712
+ return $module.hasClass(className.outward);
713
+ },
714
+ looping: function() {
715
+ return $module.hasClass(className.looping);
716
+ },
717
+ occurring: function(animation) {
718
+ animation = animation || settings.animation;
719
+ animation = '.' + animation.replace(' ', '.');
720
+ return ( $module.filter(animation).length > 0 );
721
+ },
722
+ visible: function() {
723
+ return $module.is(':visible');
724
+ },
725
+ hidden: function() {
726
+ return $module.css('visibility') === 'hidden';
727
+ },
728
+ supported: function() {
729
+ return(animationName !== false && animationEnd !== false);
730
+ }
731
+ },
732
+
733
+ hide: function() {
734
+ module.verbose('Hiding element');
735
+ if( module.is.animating() ) {
736
+ module.reset();
737
+ }
738
+ module.remove.display();
739
+ module.remove.visible();
740
+ module.set.hidden();
741
+ module.repaint();
742
+ },
743
+
744
+ show: function(display) {
745
+ module.verbose('Showing element', display);
746
+ module.remove.hidden();
747
+ module.set.visible();
748
+ module.set.display();
749
+ module.repaint();
750
+ },
751
+
752
+ toggle: function() {
753
+ if( module.is.visible() ) {
754
+ module.hide();
755
+ }
756
+ else {
757
+ module.show();
758
+ }
759
+ },
760
+
761
+ stop: function() {
762
+ module.debug('Stopping current animation');
763
+ $module.trigger(animationEnd);
764
+ },
765
+
766
+ stopAll: function() {
767
+ module.debug('Stopping all animation');
768
+ module.remove.queueCallback();
769
+ $module.trigger(animationEnd);
770
+ },
771
+
772
+ clear: {
773
+ queue: function() {
774
+ module.debug('Clearing animation queue')
775
+ module.remove.queueCallback();
776
+ }
777
+ },
778
+
779
+ enable: function() {
780
+ module.verbose('Starting animation');
781
+ $module.removeClass(className.disabled);
782
+ },
783
+
784
+ disable: function() {
785
+ module.debug('Stopping animation');
786
+ $module.addClass(className.disabled);
787
+ },
788
+
789
+ setting: function(name, value) {
790
+ module.debug('Changing setting', name, value);
791
+ if( $.isPlainObject(name) ) {
792
+ $.extend(true, settings, name);
793
+ }
794
+ else if(value !== undefined) {
795
+ settings[name] = value;
796
+ }
797
+ else {
798
+ return settings[name];
799
+ }
800
+ },
801
+ internal: function(name, value) {
802
+ if( $.isPlainObject(name) ) {
803
+ $.extend(true, module, name);
804
+ }
805
+ else if(value !== undefined) {
806
+ module[name] = value;
807
+ }
808
+ else {
809
+ return module[name];
810
+ }
811
+ },
812
+ debug: function() {
813
+ if(settings.debug) {
814
+ if(settings.performance) {
815
+ module.performance.log(arguments);
816
+ }
817
+ else {
818
+ module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
819
+ module.debug.apply(console, arguments);
820
+ }
821
+ }
822
+ },
823
+ verbose: function() {
824
+ if(settings.verbose && settings.debug) {
825
+ if(settings.performance) {
826
+ module.performance.log(arguments);
827
+ }
828
+ else {
829
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
830
+ module.verbose.apply(console, arguments);
831
+ }
832
+ }
833
+ },
834
+ error: function() {
835
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
836
+ module.error.apply(console, arguments);
837
+ },
838
+ performance: {
839
+ log: function(message) {
840
+ var
841
+ currentTime,
842
+ executionTime,
843
+ previousTime
844
+ ;
845
+ if(settings.performance) {
846
+ currentTime = new Date().getTime();
847
+ previousTime = time || currentTime;
848
+ executionTime = currentTime - previousTime;
849
+ time = currentTime;
850
+ performance.push({
851
+ 'Name' : message[0],
852
+ 'Arguments' : [].slice.call(message, 1) || '',
853
+ 'Element' : element,
854
+ 'Execution Time' : executionTime
855
+ });
856
+ }
857
+ clearTimeout(module.performance.timer);
858
+ module.performance.timer = setTimeout(module.performance.display, 100);
859
+ },
860
+ display: function() {
861
+ var
862
+ title = settings.name + ':',
863
+ totalTime = 0
864
+ ;
865
+ time = false;
866
+ clearTimeout(module.performance.timer);
867
+ $.each(performance, function(index, data) {
868
+ totalTime += data['Execution Time'];
869
+ });
870
+ title += ' ' + totalTime + 'ms';
871
+ if(moduleSelector) {
872
+ title += ' \'' + moduleSelector + '\'';
873
+ }
874
+ if($allModules.length > 1) {
875
+ title += ' ' + '(' + $allModules.length + ')';
876
+ }
877
+ if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
878
+ console.groupCollapsed(title);
879
+ if(console.table) {
880
+ console.table(performance);
881
+ }
882
+ else {
883
+ $.each(performance, function(index, data) {
884
+ console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
885
+ });
886
+ }
887
+ console.groupEnd();
888
+ }
889
+ performance = [];
890
+ }
891
+ },
892
+ // modified for transition to return invoke success
893
+ invoke: function(query, passedArguments, context) {
894
+ var
895
+ object = instance,
896
+ maxDepth,
897
+ found,
898
+ response
899
+ ;
900
+ passedArguments = passedArguments || queryArguments;
901
+ context = element || context;
902
+ if(typeof query == 'string' && object !== undefined) {
903
+ query = query.split(/[\. ]/);
904
+ maxDepth = query.length - 1;
905
+ $.each(query, function(depth, value) {
906
+ var camelCaseValue = (depth != maxDepth)
907
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
908
+ : query
909
+ ;
910
+ if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
911
+ object = object[camelCaseValue];
912
+ }
913
+ else if( object[camelCaseValue] !== undefined ) {
914
+ found = object[camelCaseValue];
915
+ return false;
916
+ }
917
+ else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
918
+ object = object[value];
919
+ }
920
+ else if( object[value] !== undefined ) {
921
+ found = object[value];
922
+ return false;
923
+ }
924
+ else {
925
+ return false;
926
+ }
927
+ });
928
+ }
929
+ if ( $.isFunction( found ) ) {
930
+ response = found.apply(context, passedArguments);
931
+ }
932
+ else if(found !== undefined) {
933
+ response = found;
934
+ }
935
+
936
+ if($.isArray(returnedValue)) {
937
+ returnedValue.push(response);
938
+ }
939
+ else if(returnedValue !== undefined) {
940
+ returnedValue = [returnedValue, response];
941
+ }
942
+ else if(response !== undefined) {
943
+ returnedValue = response;
944
+ }
945
+ return (found !== undefined)
946
+ ? found
947
+ : false
948
+ ;
949
+ }
950
+ };
951
+ module.initialize();
952
+ })
953
+ ;
954
+ return (returnedValue !== undefined)
955
+ ? returnedValue
956
+ : this
957
+ ;
958
+ };
959
+
960
+ // Records if CSS transition is available
961
+ $.fn.transition.exists = {};
962
+
963
+ $.fn.transition.settings = {
964
+
965
+ // module info
966
+ name : 'Transition',
967
+
968
+ // debug content outputted to console
969
+ debug : false,
970
+
971
+ // verbose debug output
972
+ verbose : true,
973
+
974
+ // performance data output
975
+ performance : true,
976
+
977
+ // event namespace
978
+ namespace : 'transition',
979
+
980
+ // delay between animations in group
981
+ interval : 0,
982
+
983
+ // whether group animations should be reversed
984
+ reverse : 'auto',
985
+
986
+ // animation callback event
987
+ onStart : function() {},
988
+ onComplete : function() {},
989
+ onShow : function() {},
990
+ onHide : function() {},
991
+
992
+ // whether timeout should be used to ensure callback fires in cases animationend does not
993
+ useFailSafe : true,
994
+
995
+ // delay in ms for fail safe
996
+ failSafeDelay : 100,
997
+
998
+ // whether EXACT animation can occur twice in a row
999
+ allowRepeats : false,
1000
+
1001
+ // Override final display type on visible
1002
+ displayType : false,
1003
+
1004
+ // animation duration
1005
+ animation : 'fade',
1006
+ duration : false,
1007
+
1008
+ // new animations will occur after previous ones
1009
+ queue : true,
1010
+
1011
+ metadata : {
1012
+ displayType: 'display'
1013
+ },
1014
+
1015
+ className : {
1016
+ animating : 'animating',
1017
+ disabled : 'disabled',
1018
+ hidden : 'hidden',
1019
+ inward : 'in',
1020
+ loading : 'loading',
1021
+ looping : 'looping',
1022
+ outward : 'out',
1023
+ transition : 'transition',
1024
+ visible : 'visible'
1025
+ },
1026
+
1027
+ // possible errors
1028
+ error: {
1029
+ noAnimation : 'There is no css animation matching the one you specified.',
1030
+ repeated : 'That animation is already occurring, cancelling repeated animation',
1031
+ method : 'The method you called is not defined',
1032
+ support : 'This browser does not support CSS animations'
1033
+ }
1034
+
1035
+ };
1036
+
1037
+
1038
+ })( jQuery, window , document );