semantic-ui 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +7 -0
  2. data/lib/semantic-ui.rb +8 -0
  3. data/lib/semantic-ui/version.rb +5 -0
  4. data/vendor/assets/fonts/icons.eot +0 -0
  5. data/vendor/assets/fonts/icons.svg +450 -0
  6. data/vendor/assets/fonts/icons.ttf +0 -0
  7. data/vendor/assets/fonts/icons.woff +0 -0
  8. data/vendor/assets/images/loader-large-inverted.gif +0 -0
  9. data/vendor/assets/images/loader-large.gif +0 -0
  10. data/vendor/assets/images/loader-medium-inverted.gif +0 -0
  11. data/vendor/assets/images/loader-medium.gif +0 -0
  12. data/vendor/assets/images/loader-mini-inverted.gif +0 -0
  13. data/vendor/assets/images/loader-mini.gif +0 -0
  14. data/vendor/assets/images/loader-small-inverted.gif +0 -0
  15. data/vendor/assets/images/loader-small.gif +0 -0
  16. data/vendor/assets/javascripts/modules/accordion.js +411 -0
  17. data/vendor/assets/javascripts/modules/behavior/api.js +666 -0
  18. data/vendor/assets/javascripts/modules/behavior/colorize.js +271 -0
  19. data/vendor/assets/javascripts/modules/behavior/form.js +703 -0
  20. data/vendor/assets/javascripts/modules/behavior/state.js +752 -0
  21. data/vendor/assets/javascripts/modules/chatroom.js +766 -0
  22. data/vendor/assets/javascripts/modules/checkbox.js +348 -0
  23. data/vendor/assets/javascripts/modules/dimmer.js +524 -0
  24. data/vendor/assets/javascripts/modules/dropdown.js +707 -0
  25. data/vendor/assets/javascripts/modules/modal.js +478 -0
  26. data/vendor/assets/javascripts/modules/nag.js +542 -0
  27. data/vendor/assets/javascripts/modules/popup.js +721 -0
  28. data/vendor/assets/javascripts/modules/rating.js +358 -0
  29. data/vendor/assets/javascripts/modules/search.js +769 -0
  30. data/vendor/assets/javascripts/modules/shape.js +776 -0
  31. data/vendor/assets/javascripts/modules/sidebar.js +489 -0
  32. data/vendor/assets/javascripts/modules/tab.js +674 -0
  33. data/vendor/assets/javascripts/modules/transition.js +650 -0
  34. data/vendor/assets/javascripts/modules/video.js +459 -0
  35. data/vendor/assets/javascripts/semantic-ui.js +1 -0
  36. data/vendor/assets/stylesheets/collections/breadcrumb.less +79 -0
  37. data/vendor/assets/stylesheets/collections/form.less +536 -0
  38. data/vendor/assets/stylesheets/collections/grid.less +655 -0
  39. data/vendor/assets/stylesheets/collections/menu.less +1765 -0
  40. data/vendor/assets/stylesheets/collections/message.less +337 -0
  41. data/vendor/assets/stylesheets/collections/table.less +532 -0
  42. data/vendor/assets/stylesheets/elements/button.less +1190 -0
  43. data/vendor/assets/stylesheets/elements/divider.less +200 -0
  44. data/vendor/assets/stylesheets/elements/header.less +325 -0
  45. data/vendor/assets/stylesheets/elements/icon.less +484 -0
  46. data/vendor/assets/stylesheets/elements/image.less +170 -0
  47. data/vendor/assets/stylesheets/elements/input.less +300 -0
  48. data/vendor/assets/stylesheets/elements/label.less +824 -0
  49. data/vendor/assets/stylesheets/elements/loader.less +178 -0
  50. data/vendor/assets/stylesheets/elements/progress.less +353 -0
  51. data/vendor/assets/stylesheets/elements/segment.less +465 -0
  52. data/vendor/assets/stylesheets/elements/step.less +294 -0
  53. data/vendor/assets/stylesheets/modules/accordion.less +135 -0
  54. data/vendor/assets/stylesheets/modules/chatroom.less +271 -0
  55. data/vendor/assets/stylesheets/modules/checkbox.less +380 -0
  56. data/vendor/assets/stylesheets/modules/dimmer.less +230 -0
  57. data/vendor/assets/stylesheets/modules/dropdown.less +506 -0
  58. data/vendor/assets/stylesheets/modules/modal.less +160 -0
  59. data/vendor/assets/stylesheets/modules/nag.less +175 -0
  60. data/vendor/assets/stylesheets/modules/popup.less +238 -0
  61. data/vendor/assets/stylesheets/modules/rating.less +151 -0
  62. data/vendor/assets/stylesheets/modules/reveal.less +367 -0
  63. data/vendor/assets/stylesheets/modules/search.less +275 -0
  64. data/vendor/assets/stylesheets/modules/shape.less +115 -0
  65. data/vendor/assets/stylesheets/modules/sidebar.less +147 -0
  66. data/vendor/assets/stylesheets/modules/tab.less +59 -0
  67. data/vendor/assets/stylesheets/modules/transition.less +839 -0
  68. data/vendor/assets/stylesheets/modules/video.less +99 -0
  69. data/vendor/assets/stylesheets/semantic-ui.less +1 -0
  70. data/vendor/assets/stylesheets/views/comment.less +221 -0
  71. data/vendor/assets/stylesheets/views/feed.less +151 -0
  72. data/vendor/assets/stylesheets/views/item.less +641 -0
  73. data/vendor/assets/stylesheets/views/list.less +508 -0
  74. data/vendor/assets/stylesheets/views/statistic.css +27 -0
  75. metadata +187 -0
@@ -0,0 +1,776 @@
1
+ /* ******************************
2
+ Semantic Module: Shape
3
+ Author: Jack Lukic
4
+ Notes: First Commit March 25, 2013
5
+
6
+ An experimental plugin for manipulating 3D shapes on a 2D plane
7
+
8
+ ****************************** */
9
+
10
+ ;(function ( $, window, document, undefined ) {
11
+
12
+ $.fn.shape = function(parameters) {
13
+ var
14
+ $allModules = $(this),
15
+
16
+ moduleSelector = $allModules.selector || '',
17
+ settings = $.extend(true, {}, $.fn.shape.settings, parameters),
18
+
19
+ // internal aliases
20
+ namespace = settings.namespace,
21
+ selector = settings.selector,
22
+ error = settings.error,
23
+ className = settings.className,
24
+
25
+ // define namespaces for modules
26
+ eventNamespace = '.' + namespace,
27
+ moduleNamespace = 'module-' + namespace,
28
+
29
+ time = new Date().getTime(),
30
+ performance = [],
31
+
32
+ query = arguments[0],
33
+ methodInvoked = (typeof query == 'string'),
34
+ queryArguments = [].slice.call(arguments, 1),
35
+ invokedResponse
36
+ ;
37
+
38
+ $allModules
39
+ .each(function() {
40
+ var
41
+ // selector cache
42
+ $module = $(this),
43
+ $sides = $module.find(selector.sides),
44
+ $side = $module.find(selector.side),
45
+
46
+ // private variables
47
+ $activeSide,
48
+ $nextSide,
49
+
50
+ // standard module
51
+ element = this,
52
+ instance = $module.data(moduleNamespace),
53
+ module
54
+ ;
55
+
56
+ module = {
57
+
58
+ initialize: function() {
59
+ module.verbose('Initializing module for', element);
60
+ module.set.defaultSide();
61
+ module.instantiate();
62
+ },
63
+
64
+ instantiate: function() {
65
+ module.verbose('Storing instance of module', module);
66
+ instance = module;
67
+ $module
68
+ .data(moduleNamespace, instance)
69
+ ;
70
+ },
71
+
72
+ destroy: function() {
73
+ module.verbose('Destroying previous module for', element);
74
+ $module
75
+ .removeData(moduleNamespace)
76
+ .off(eventNamespace)
77
+ ;
78
+ },
79
+
80
+ refresh: function() {
81
+ module.verbose('Refreshing selector cache for', element);
82
+ $module = $(element);
83
+ $sides = $(this).find(selector.shape);
84
+ $side = $(this).find(selector.side);
85
+ },
86
+
87
+ repaint: function() {
88
+ module.verbose('Forcing repaint event');
89
+ var
90
+ shape = $sides.get(0) || document.createElement('div'),
91
+ fakeAssignment = shape.offsetWidth
92
+ ;
93
+ },
94
+
95
+ animate: function(propertyObject, callback) {
96
+ module.verbose('Animating box with properties', propertyObject);
97
+ callback = callback || function(event) {
98
+ module.verbose('Executing animation callback');
99
+ if(event !== undefined) {
100
+ event.stopPropagation();
101
+ }
102
+ module.reset();
103
+ module.set.active();
104
+ };
105
+ if(settings.useCSS) {
106
+ if(module.get.transitionEvent()) {
107
+ module.verbose('Starting CSS animation');
108
+ $module
109
+ .addClass(className.animating)
110
+ ;
111
+ module.set.stageSize();
112
+ module.repaint();
113
+ $module
114
+ .addClass(className.css)
115
+ ;
116
+ $activeSide
117
+ .addClass(className.hidden)
118
+ ;
119
+ $sides
120
+ .css(propertyObject)
121
+ .one(module.get.transitionEvent(), callback)
122
+ ;
123
+ }
124
+ else {
125
+ callback();
126
+ }
127
+ }
128
+ else {
129
+ // not yet supported until .animate() is extended to allow RotateX/Y
130
+ module.verbose('Starting javascript animation');
131
+ $module
132
+ .addClass(className.animating)
133
+ .removeClass(className.css)
134
+ ;
135
+ module.set.stageSize();
136
+ module.repaint();
137
+ $activeSide
138
+ .animate({
139
+ opacity: 0
140
+ }, settings.duration, settings.easing)
141
+ ;
142
+ $sides
143
+ .animate(propertyObject, settings.duration, settings.easing, callback)
144
+ ;
145
+ }
146
+ },
147
+
148
+ queue: function(method) {
149
+ module.debug('Queueing animation of', method);
150
+ $sides
151
+ .one(module.get.transitionEvent(), function() {
152
+ module.debug('Executing queued animation');
153
+ setTimeout(function(){
154
+ $module.shape(method);
155
+ }, 0);
156
+ })
157
+ ;
158
+ },
159
+
160
+ reset: function() {
161
+ module.verbose('Animating states reset');
162
+ $module
163
+ .removeClass(className.css)
164
+ .removeClass(className.animating)
165
+ .attr('style', '')
166
+ .removeAttr('style')
167
+ ;
168
+ // removeAttr style does not consistently work in safari
169
+ $sides
170
+ .attr('style', '')
171
+ .removeAttr('style')
172
+ ;
173
+ $side
174
+ .attr('style', '')
175
+ .removeAttr('style')
176
+ .removeClass(className.hidden)
177
+ ;
178
+ $nextSide
179
+ .removeClass(className.animating)
180
+ .attr('style', '')
181
+ .removeAttr('style')
182
+ ;
183
+ },
184
+
185
+ is: {
186
+ animating: function() {
187
+ return $module.hasClass(className.animating);
188
+ }
189
+ },
190
+
191
+ get: {
192
+
193
+ transform: {
194
+ up: function() {
195
+ var
196
+ translate = {
197
+ y: -(($activeSide.outerHeight() - $nextSide.outerHeight()) / 2),
198
+ z: -($activeSide.outerHeight() / 2)
199
+ }
200
+ ;
201
+ return {
202
+ transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(-90deg)'
203
+ };
204
+ },
205
+
206
+ down: function() {
207
+ var
208
+ translate = {
209
+ y: -(($activeSide.outerHeight() - $nextSide.outerHeight()) / 2),
210
+ z: -($activeSide.outerHeight() / 2)
211
+ }
212
+ ;
213
+ return {
214
+ transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(90deg)'
215
+ };
216
+ },
217
+
218
+ left: function() {
219
+ var
220
+ translate = {
221
+ x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2),
222
+ z : -($activeSide.outerWidth() / 2)
223
+ }
224
+ ;
225
+ return {
226
+ transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(90deg)'
227
+ };
228
+ },
229
+
230
+ right: function() {
231
+ var
232
+ translate = {
233
+ x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2),
234
+ z : -($activeSide.outerWidth() / 2)
235
+ }
236
+ ;
237
+ return {
238
+ transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(-90deg)'
239
+ };
240
+ },
241
+
242
+ over: function() {
243
+ var
244
+ translate = {
245
+ x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2)
246
+ }
247
+ ;
248
+ return {
249
+ transform: 'translateX(' + translate.x + 'px) rotateY(180deg)'
250
+ };
251
+ },
252
+
253
+ back: function() {
254
+ var
255
+ translate = {
256
+ x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2)
257
+ }
258
+ ;
259
+ return {
260
+ transform: 'translateX(' + translate.x + 'px) rotateY(-180deg)'
261
+ };
262
+ }
263
+ },
264
+
265
+ transitionEvent: function() {
266
+ var
267
+ element = document.createElement('element'),
268
+ transitions = {
269
+ 'transition' :'transitionend',
270
+ 'OTransition' :'oTransitionEnd',
271
+ 'MozTransition' :'transitionend',
272
+ 'WebkitTransition' :'webkitTransitionEnd'
273
+ },
274
+ transition
275
+ ;
276
+ for(transition in transitions){
277
+ if( element.style[transition] !== undefined ){
278
+ return transitions[transition];
279
+ }
280
+ }
281
+ },
282
+
283
+ nextSide: function() {
284
+ return ( $activeSide.next(selector.side).size() > 0 )
285
+ ? $activeSide.next(selector.side)
286
+ : $module.find(selector.side).first()
287
+ ;
288
+ }
289
+
290
+ },
291
+
292
+ set: {
293
+
294
+ defaultSide: function() {
295
+ $activeSide = $module.find('.' + settings.className.active);
296
+ $nextSide = ( $activeSide.next(selector.side).size() > 0 )
297
+ ? $activeSide.next(selector.side)
298
+ : $module.find(selector.side).first()
299
+ ;
300
+ module.verbose('Active side set to', $activeSide);
301
+ module.verbose('Next side set to', $nextSide);
302
+ },
303
+
304
+ stageSize: function() {
305
+ var
306
+ stage = {
307
+ width : $nextSide.outerWidth(),
308
+ height : $nextSide.outerHeight()
309
+ }
310
+ ;
311
+ module.verbose('Resizing stage to fit new content', stage);
312
+ $module
313
+ .css({
314
+ width : stage.width,
315
+ height : stage.height
316
+ })
317
+ ;
318
+ },
319
+
320
+ nextSide: function(selector) {
321
+ $nextSide = $module.find(selector);
322
+ if($nextSide.size() === 0) {
323
+ module.error(error.side);
324
+ }
325
+ module.verbose('Next side manually set to', $nextSide);
326
+ },
327
+
328
+ active: function() {
329
+ module.verbose('Setting new side to active', $nextSide);
330
+ $side
331
+ .removeClass(className.active)
332
+ ;
333
+ $nextSide
334
+ .addClass(className.active)
335
+ ;
336
+ $.proxy(settings.onChange, $nextSide)();
337
+ module.set.defaultSide();
338
+ }
339
+ },
340
+
341
+ flip: {
342
+
343
+ up: function() {
344
+ module.debug('Flipping up', $nextSide);
345
+ if( !module.is.animating() ) {
346
+ module.stage.above();
347
+ module.animate( module.get.transform.up() );
348
+ }
349
+ else {
350
+ module.queue('flip up');
351
+ }
352
+ },
353
+
354
+ down: function() {
355
+ module.debug('Flipping down', $nextSide);
356
+ if( !module.is.animating() ) {
357
+ module.stage.below();
358
+ module.animate( module.get.transform.down() );
359
+ }
360
+ else {
361
+ module.queue('flip down');
362
+ }
363
+ },
364
+
365
+ left: function() {
366
+ module.debug('Flipping left', $nextSide);
367
+ if( !module.is.animating() ) {
368
+ module.stage.left();
369
+ module.animate(module.get.transform.left() );
370
+ }
371
+ else {
372
+ module.queue('flip left');
373
+ }
374
+ },
375
+
376
+ right: function() {
377
+ module.debug('Flipping right', $nextSide);
378
+ if( !module.is.animating() ) {
379
+ module.stage.right();
380
+ module.animate(module.get.transform.right() );
381
+ }
382
+ else {
383
+ module.queue('flip right');
384
+ }
385
+ },
386
+
387
+ over: function() {
388
+ module.debug('Flipping over', $nextSide);
389
+ if( !module.is.animating() ) {
390
+ module.stage.behind();
391
+ module.animate(module.get.transform.over() );
392
+ }
393
+ else {
394
+ module.queue('flip over');
395
+ }
396
+ },
397
+
398
+ back: function() {
399
+ module.debug('Flipping back', $nextSide);
400
+ if( !module.is.animating() ) {
401
+ module.stage.behind();
402
+ module.animate(module.get.transform.back() );
403
+ }
404
+ else {
405
+ module.queue('flip back');
406
+ }
407
+ }
408
+
409
+ },
410
+
411
+ stage: {
412
+
413
+ above: function() {
414
+ var
415
+ box = {
416
+ origin : (($activeSide.outerHeight() - $nextSide.outerHeight()) / 2),
417
+ depth : {
418
+ active : ($nextSide.outerHeight() / 2),
419
+ next : ($activeSide.outerHeight() / 2)
420
+ }
421
+ }
422
+ ;
423
+ module.verbose('Setting the initial animation position as above', $nextSide, box);
424
+ $activeSide
425
+ .css({
426
+ 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)'
427
+ })
428
+ ;
429
+ $nextSide
430
+ .addClass(className.animating)
431
+ .css({
432
+ 'display' : 'block',
433
+ 'top' : box.origin + 'px',
434
+ 'transform' : 'rotateX(90deg) translateZ(' + box.depth.next + 'px)'
435
+ })
436
+ ;
437
+ },
438
+
439
+ below: function() {
440
+ var
441
+ box = {
442
+ origin : (($activeSide.outerHeight() - $nextSide.outerHeight()) / 2),
443
+ depth : {
444
+ active : ($nextSide.outerHeight() / 2),
445
+ next : ($activeSide.outerHeight() / 2)
446
+ }
447
+ }
448
+ ;
449
+ module.verbose('Setting the initial animation position as below', $nextSide, box);
450
+ $activeSide
451
+ .css({
452
+ 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)'
453
+ })
454
+ ;
455
+ $nextSide
456
+ .addClass(className.animating)
457
+ .css({
458
+ 'display' : 'block',
459
+ 'top' : box.origin + 'px',
460
+ 'transform' : 'rotateX(-90deg) translateZ(' + box.depth.next + 'px)'
461
+ })
462
+ ;
463
+ },
464
+
465
+ left: function() {
466
+ var
467
+ box = {
468
+ origin : ( ( $activeSide.outerWidth() - $nextSide.outerWidth() ) / 2),
469
+ depth : {
470
+ active : ($nextSide.outerWidth() / 2),
471
+ next : ($activeSide.outerWidth() / 2)
472
+ }
473
+ }
474
+ ;
475
+ module.verbose('Setting the initial animation position as left', $nextSide, box);
476
+ $activeSide
477
+ .css({
478
+ 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)'
479
+ })
480
+ ;
481
+ $nextSide
482
+ .addClass(className.animating)
483
+ .css({
484
+ 'display' : 'block',
485
+ 'left' : box.origin + 'px',
486
+ 'transform' : 'rotateY(-90deg) translateZ(' + box.depth.next + 'px)'
487
+ })
488
+ ;
489
+ },
490
+
491
+ right: function() {
492
+ var
493
+ box = {
494
+ origin : ( ( $activeSide.outerWidth() - $nextSide.outerWidth() ) / 2),
495
+ depth : {
496
+ active : ($nextSide.outerWidth() / 2),
497
+ next : ($activeSide.outerWidth() / 2)
498
+ }
499
+ }
500
+ ;
501
+ module.verbose('Setting the initial animation position as left', $nextSide, box);
502
+ $activeSide
503
+ .css({
504
+ 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)'
505
+ })
506
+ ;
507
+ $nextSide
508
+ .addClass(className.animating)
509
+ .css({
510
+ 'display' : 'block',
511
+ 'left' : box.origin + 'px',
512
+ 'transform' : 'rotateY(90deg) translateZ(' + box.depth.next + 'px)'
513
+ })
514
+ ;
515
+ },
516
+
517
+ behind: function() {
518
+ var
519
+ box = {
520
+ origin : ( ( $activeSide.outerWidth() - $nextSide.outerWidth() ) / 2),
521
+ depth : {
522
+ active : ($nextSide.outerWidth() / 2),
523
+ next : ($activeSide.outerWidth() / 2)
524
+ }
525
+ }
526
+ ;
527
+ module.verbose('Setting the initial animation position as behind', $nextSide, box);
528
+ $activeSide
529
+ .css({
530
+ 'transform' : 'rotateY(0deg)'
531
+ })
532
+ ;
533
+ $nextSide
534
+ .addClass(className.animating)
535
+ .css({
536
+ 'display' : 'block',
537
+ 'left' : box.origin + 'px',
538
+ 'transform' : 'rotateY(-180deg)'
539
+ })
540
+ ;
541
+ }
542
+ },
543
+ setting: function(name, value) {
544
+ if(value !== undefined) {
545
+ if( $.isPlainObject(name) ) {
546
+ $.extend(true, settings, name);
547
+ }
548
+ else {
549
+ settings[name] = value;
550
+ }
551
+ }
552
+ else {
553
+ return settings[name];
554
+ }
555
+ },
556
+ internal: function(name, value) {
557
+ if(value !== undefined) {
558
+ if( $.isPlainObject(name) ) {
559
+ $.extend(true, module, name);
560
+ }
561
+ else {
562
+ module[name] = value;
563
+ }
564
+ }
565
+ else {
566
+ return module[name];
567
+ }
568
+ },
569
+ debug: function() {
570
+ if(settings.debug) {
571
+ if(settings.performance) {
572
+ module.performance.log(arguments);
573
+ }
574
+ else {
575
+ module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
576
+ module.debug.apply(console, arguments);
577
+ }
578
+ }
579
+ },
580
+ verbose: function() {
581
+ if(settings.verbose && settings.debug) {
582
+ if(settings.performance) {
583
+ module.performance.log(arguments);
584
+ }
585
+ else {
586
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
587
+ module.verbose.apply(console, arguments);
588
+ }
589
+ }
590
+ },
591
+ error: function() {
592
+ module.error = Function.prototype.bind.call(console.error, console, settings.moduleName + ':');
593
+ module.error.apply(console, arguments);
594
+ },
595
+ performance: {
596
+ log: function(message) {
597
+ var
598
+ currentTime,
599
+ executionTime,
600
+ previousTime
601
+ ;
602
+ if(settings.performance) {
603
+ currentTime = new Date().getTime();
604
+ previousTime = time || currentTime;
605
+ executionTime = currentTime - previousTime;
606
+ time = currentTime;
607
+ performance.push({
608
+ 'Element' : element,
609
+ 'Name' : message[0],
610
+ 'Arguments' : [].slice.call(message, 1) || '',
611
+ 'Execution Time' : executionTime
612
+ });
613
+ }
614
+ clearTimeout(module.performance.timer);
615
+ module.performance.timer = setTimeout(module.performance.display, 100);
616
+ },
617
+ display: function() {
618
+ var
619
+ title = settings.name + ':',
620
+ totalTime = 0
621
+ ;
622
+ time = false;
623
+ clearTimeout(module.performance.timer);
624
+ $.each(performance, function(index, data) {
625
+ totalTime += data['Execution Time'];
626
+ });
627
+ title += ' ' + totalTime + 'ms';
628
+ if(moduleSelector) {
629
+ title += ' \'' + moduleSelector + '\'';
630
+ }
631
+ if($allModules.size() > 1) {
632
+ title += ' ' + '(' + $allModules.size() + ')';
633
+ }
634
+ if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
635
+ console.groupCollapsed(title);
636
+ if(console.table) {
637
+ console.table(performance);
638
+ }
639
+ else {
640
+ $.each(performance, function(index, data) {
641
+ console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
642
+ });
643
+ }
644
+ console.groupEnd();
645
+ }
646
+ performance = [];
647
+ }
648
+ },
649
+ invoke: function(query, passedArguments, context) {
650
+ var
651
+ maxDepth,
652
+ found,
653
+ response
654
+ ;
655
+ passedArguments = passedArguments || queryArguments;
656
+ context = element || context;
657
+ if(typeof query == 'string' && instance !== undefined) {
658
+ query = query.split(/[\. ]/);
659
+ maxDepth = query.length - 1;
660
+ $.each(query, function(depth, value) {
661
+ var camelCaseValue = (depth != maxDepth)
662
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
663
+ : query
664
+ ;
665
+ if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) {
666
+ instance = instance[value];
667
+ }
668
+ else if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) {
669
+ instance = instance[camelCaseValue];
670
+ }
671
+ else if( instance[value] !== undefined ) {
672
+ found = instance[value];
673
+ return false;
674
+ }
675
+ else if( instance[camelCaseValue] !== undefined ) {
676
+ found = instance[camelCaseValue];
677
+ return false;
678
+ }
679
+ else {
680
+ module.error(error.method);
681
+ return false;
682
+ }
683
+ });
684
+ }
685
+ if ( $.isFunction( found ) ) {
686
+ response = found.apply(context, passedArguments);
687
+ }
688
+ else if(found !== undefined) {
689
+ response = found;
690
+ }
691
+ if($.isArray(invokedResponse)) {
692
+ invokedResponse.push(response);
693
+ }
694
+ else if(typeof invokedResponse == 'string') {
695
+ invokedResponse = [invokedResponse, response];
696
+ }
697
+ else if(response !== undefined) {
698
+ invokedResponse = response;
699
+ }
700
+ return found;
701
+ }
702
+ };
703
+
704
+ if(methodInvoked) {
705
+ if(instance === undefined) {
706
+ module.initialize();
707
+ }
708
+ module.invoke(query);
709
+ }
710
+ else {
711
+ if(instance !== undefined) {
712
+ module.destroy();
713
+ }
714
+ module.initialize();
715
+ }
716
+ })
717
+ ;
718
+
719
+ return (invokedResponse !== undefined)
720
+ ? invokedResponse
721
+ : this
722
+ ;
723
+ };
724
+
725
+ $.fn.shape.settings = {
726
+
727
+ // module info
728
+ moduleName : 'Shape Module',
729
+
730
+ // debug content outputted to console
731
+ debug : true,
732
+
733
+ // verbose debug output
734
+ verbose : true,
735
+
736
+ // performance data output
737
+ performance: true,
738
+
739
+ // event namespace
740
+ namespace : 'shape',
741
+
742
+ // callback occurs on side change
743
+ beforeChange : function() {},
744
+ onChange : function() {},
745
+
746
+ // use css animation (currently only true is supported)
747
+ useCSS : true,
748
+
749
+ // animation duration (useful only with future js animations)
750
+ duration : 1000,
751
+ easing : 'easeInOutQuad',
752
+
753
+ // possible errors
754
+ error: {
755
+ side : 'You tried to switch to a side that does not exist.',
756
+ method : 'The method you called is not defined'
757
+ },
758
+
759
+ // classnames used
760
+ className : {
761
+ css : 'css',
762
+ animating : 'animating',
763
+ hidden : 'hidden',
764
+ active : 'active'
765
+ },
766
+
767
+ // selectors used
768
+ selector : {
769
+ sides : '.sides',
770
+ side : '.side'
771
+ }
772
+
773
+ };
774
+
775
+
776
+ })( jQuery, window , document );