semantic_ui_rails 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE +20 -0
  5. data/README.md +4 -0
  6. data/Rakefile +1 -0
  7. data/app/assets/fonts/semantic/icons.eot +0 -0
  8. data/app/assets/fonts/semantic/icons.svg +450 -0
  9. data/app/assets/fonts/semantic/icons.ttf +0 -0
  10. data/app/assets/fonts/semantic/icons.woff +0 -0
  11. data/app/assets/images/semantic/loader-large-inverted.gif +0 -0
  12. data/app/assets/images/semantic/loader-large.gif +0 -0
  13. data/app/assets/images/semantic/loader-medium-inverted.gif +0 -0
  14. data/app/assets/images/semantic/loader-medium.gif +0 -0
  15. data/app/assets/images/semantic/loader-mini-inverted.gif +0 -0
  16. data/app/assets/images/semantic/loader-mini.gif +0 -0
  17. data/app/assets/images/semantic/loader-small-inverted.gif +0 -0
  18. data/app/assets/images/semantic/loader-small.gif +0 -0
  19. data/app/assets/javascript/semantic/accordion.js +411 -0
  20. data/app/assets/javascript/semantic/behavior/api.js +666 -0
  21. data/app/assets/javascript/semantic/behavior/colorize.js +271 -0
  22. data/app/assets/javascript/semantic/behavior/form.js +703 -0
  23. data/app/assets/javascript/semantic/behavior/state.js +752 -0
  24. data/app/assets/javascript/semantic/chatroom.js +766 -0
  25. data/app/assets/javascript/semantic/checkbox.js +348 -0
  26. data/app/assets/javascript/semantic/dimmer.js +524 -0
  27. data/app/assets/javascript/semantic/dropdown.js +707 -0
  28. data/app/assets/javascript/semantic/modal.js +478 -0
  29. data/app/assets/javascript/semantic/nag.js +542 -0
  30. data/app/assets/javascript/semantic/popup.js +721 -0
  31. data/app/assets/javascript/semantic/rating.js +358 -0
  32. data/app/assets/javascript/semantic/search.js +769 -0
  33. data/app/assets/javascript/semantic/shape.js +776 -0
  34. data/app/assets/javascript/semantic/sidebar.js +489 -0
  35. data/app/assets/javascript/semantic/tab.js +674 -0
  36. data/app/assets/javascript/semantic/transition.js +650 -0
  37. data/app/assets/javascript/semantic/video.js +459 -0
  38. data/app/assets/stylesheets/semantic/accordion.css +97 -0
  39. data/app/assets/stylesheets/semantic/breadcrumb.css +66 -0
  40. data/app/assets/stylesheets/semantic/button.css +993 -0
  41. data/app/assets/stylesheets/semantic/chatroom.css +242 -0
  42. data/app/assets/stylesheets/semantic/checkbox.css +300 -0
  43. data/app/assets/stylesheets/semantic/comment.css +178 -0
  44. data/app/assets/stylesheets/semantic/dimmer.css +185 -0
  45. data/app/assets/stylesheets/semantic/divider.css +155 -0
  46. data/app/assets/stylesheets/semantic/dropdown.css +415 -0
  47. data/app/assets/stylesheets/semantic/feed.css +126 -0
  48. data/app/assets/stylesheets/semantic/form.css +427 -0
  49. data/app/assets/stylesheets/semantic/grid.css +561 -0
  50. data/app/assets/stylesheets/semantic/header.css +277 -0
  51. data/app/assets/stylesheets/semantic/icon.css +811 -0
  52. data/app/assets/stylesheets/semantic/image.css +143 -0
  53. data/app/assets/stylesheets/semantic/input.css +225 -0
  54. data/app/assets/stylesheets/semantic/item.css +564 -0
  55. data/app/assets/stylesheets/semantic/label.css +687 -0
  56. data/app/assets/stylesheets/semantic/list.css +418 -0
  57. data/app/assets/stylesheets/semantic/loader.css +148 -0
  58. data/app/assets/stylesheets/semantic/menu.css +1409 -0
  59. data/app/assets/stylesheets/semantic/message.css +242 -0
  60. data/app/assets/stylesheets/semantic/modal.css +123 -0
  61. data/app/assets/stylesheets/semantic/nag.css +130 -0
  62. data/app/assets/stylesheets/semantic/popup.css +209 -0
  63. data/app/assets/stylesheets/semantic/progress.css +257 -0
  64. data/app/assets/stylesheets/semantic/rating.css +120 -0
  65. data/app/assets/stylesheets/semantic/reveal.css +283 -0
  66. data/app/assets/stylesheets/semantic/search.css +222 -0
  67. data/app/assets/stylesheets/semantic/segment.css +362 -0
  68. data/app/assets/stylesheets/semantic/shape.css +87 -0
  69. data/app/assets/stylesheets/semantic/sidebar.css +100 -0
  70. data/app/assets/stylesheets/semantic/step.css +240 -0
  71. data/app/assets/stylesheets/semantic/tab.css +52 -0
  72. data/app/assets/stylesheets/semantic/table.css +468 -0
  73. data/app/assets/stylesheets/semantic/transition.css +867 -0
  74. data/app/assets/stylesheets/semantic/video.css +81 -0
  75. data/lib/semantic_ui_rails/version.rb +3 -0
  76. data/lib/semantic_ui_rails.rb +7 -0
  77. data/semantic_ui_rails.gemspec +23 -0
  78. metadata +149 -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 );