fomantic-ui-sass 2.9.0 → 2.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/fonts/semantic-ui/Lato-Bold.woff +0 -0
  3. data/app/assets/fonts/semantic-ui/Lato-Bold.woff2 +0 -0
  4. data/app/assets/fonts/semantic-ui/Lato-BoldItalic.woff +0 -0
  5. data/app/assets/fonts/semantic-ui/Lato-BoldItalic.woff2 +0 -0
  6. data/app/assets/fonts/semantic-ui/Lato-Italic.woff +0 -0
  7. data/app/assets/fonts/semantic-ui/Lato-Italic.woff2 +0 -0
  8. data/app/assets/fonts/semantic-ui/Lato-Regular.woff +0 -0
  9. data/app/assets/fonts/semantic-ui/Lato-Regular.woff2 +0 -0
  10. data/app/assets/fonts/semantic-ui/LatoLatin-Bold.woff +0 -0
  11. data/app/assets/fonts/semantic-ui/LatoLatin-Bold.woff2 +0 -0
  12. data/app/assets/fonts/semantic-ui/LatoLatin-BoldItalic.woff +0 -0
  13. data/app/assets/fonts/semantic-ui/LatoLatin-BoldItalic.woff2 +0 -0
  14. data/app/assets/fonts/semantic-ui/LatoLatin-Italic.woff +0 -0
  15. data/app/assets/fonts/semantic-ui/LatoLatin-Italic.woff2 +0 -0
  16. data/app/assets/fonts/semantic-ui/LatoLatin-Regular.woff +0 -0
  17. data/app/assets/fonts/semantic-ui/LatoLatin-Regular.woff2 +0 -0
  18. data/app/assets/fonts/semantic-ui/brand-icons.woff +0 -0
  19. data/app/assets/fonts/semantic-ui/brand-icons.woff2 +0 -0
  20. data/app/assets/fonts/semantic-ui/icons.woff +0 -0
  21. data/app/assets/fonts/semantic-ui/icons.woff2 +0 -0
  22. data/app/assets/fonts/semantic-ui/outline-icons.woff +0 -0
  23. data/app/assets/fonts/semantic-ui/outline-icons.woff2 +0 -0
  24. data/app/assets/javascripts/semantic-ui/accordion.js +569 -596
  25. data/app/assets/javascripts/semantic-ui/api.js +1158 -1180
  26. data/app/assets/javascripts/semantic-ui/calendar.js +1935 -1810
  27. data/app/assets/javascripts/semantic-ui/checkbox.js +843 -842
  28. data/app/assets/javascripts/semantic-ui/dimmer.js +707 -738
  29. data/app/assets/javascripts/semantic-ui/dropdown.js +4196 -4237
  30. data/app/assets/javascripts/semantic-ui/embed.js +646 -676
  31. data/app/assets/javascripts/semantic-ui/flyout.js +1515 -1466
  32. data/app/assets/javascripts/semantic-ui/form.js +2023 -2005
  33. data/app/assets/javascripts/semantic-ui/modal.js +1545 -1487
  34. data/app/assets/javascripts/semantic-ui/nag.js +521 -527
  35. data/app/assets/javascripts/semantic-ui/popup.js +1457 -1457
  36. data/app/assets/javascripts/semantic-ui/progress.js +970 -998
  37. data/app/assets/javascripts/semantic-ui/rating.js +508 -524
  38. data/app/assets/javascripts/semantic-ui/search.js +1521 -1535
  39. data/app/assets/javascripts/semantic-ui/shape.js +784 -811
  40. data/app/assets/javascripts/semantic-ui/sidebar.js +1062 -1100
  41. data/app/assets/javascripts/semantic-ui/site.js +437 -477
  42. data/app/assets/javascripts/semantic-ui/slider.js +1311 -1312
  43. data/app/assets/javascripts/semantic-ui/state.js +639 -658
  44. data/app/assets/javascripts/semantic-ui/sticky.js +848 -902
  45. data/app/assets/javascripts/semantic-ui/tab.js +903 -967
  46. data/app/assets/javascripts/semantic-ui/toast.js +911 -885
  47. data/app/assets/javascripts/semantic-ui/transition.js +1049 -1078
  48. data/app/assets/javascripts/semantic-ui/visibility.js +1214 -1246
  49. data/app/assets/stylesheets/semantic-ui/collections/_breadcrumb.scss +7 -7
  50. data/app/assets/stylesheets/semantic-ui/collections/_form.scss +246 -341
  51. data/app/assets/stylesheets/semantic-ui/collections/_grid.scss +185 -331
  52. data/app/assets/stylesheets/semantic-ui/collections/_menu.scss +272 -433
  53. data/app/assets/stylesheets/semantic-ui/collections/_message.scss +127 -199
  54. data/app/assets/stylesheets/semantic-ui/collections/_table.scss +549 -776
  55. data/app/assets/stylesheets/semantic-ui/elements/_button.scss +711 -1123
  56. data/app/assets/stylesheets/semantic-ui/elements/_container.scss +9 -8
  57. data/app/assets/stylesheets/semantic-ui/elements/_divider.scss +45 -63
  58. data/app/assets/stylesheets/semantic-ui/elements/_emoji.scss +3556 -3556
  59. data/app/assets/stylesheets/semantic-ui/elements/_flag.scss +272 -270
  60. data/app/assets/stylesheets/semantic-ui/elements/_header.scss +120 -144
  61. data/app/assets/stylesheets/semantic-ui/elements/_icon.scss +667 -747
  62. data/app/assets/stylesheets/semantic-ui/elements/_image.scss +41 -65
  63. data/app/assets/stylesheets/semantic-ui/elements/_input.scss +358 -276
  64. data/app/assets/stylesheets/semantic-ui/elements/_label.scss +361 -412
  65. data/app/assets/stylesheets/semantic-ui/elements/_list.scss +51 -72
  66. data/app/assets/stylesheets/semantic-ui/elements/_loader.scss +69 -157
  67. data/app/assets/stylesheets/semantic-ui/elements/_placeholder.scss +24 -44
  68. data/app/assets/stylesheets/semantic-ui/elements/_rail.scss +17 -22
  69. data/app/assets/stylesheets/semantic-ui/elements/_reveal.scss +46 -85
  70. data/app/assets/stylesheets/semantic-ui/elements/_segment.scss +150 -226
  71. data/app/assets/stylesheets/semantic-ui/elements/_step.scss +79 -152
  72. data/app/assets/stylesheets/semantic-ui/elements/_text.scss +33 -33
  73. data/app/assets/stylesheets/semantic-ui/globals/_reset.scss +10 -15
  74. data/app/assets/stylesheets/semantic-ui/globals/_site.scss +30 -43
  75. data/app/assets/stylesheets/semantic-ui/modules/_accordion.scss +37 -55
  76. data/app/assets/stylesheets/semantic-ui/modules/_calendar.scss +26 -29
  77. data/app/assets/stylesheets/semantic-ui/modules/_checkbox.scss +122 -193
  78. data/app/assets/stylesheets/semantic-ui/modules/_dimmer.scss +55 -174
  79. data/app/assets/stylesheets/semantic-ui/modules/_dropdown.scss +254 -388
  80. data/app/assets/stylesheets/semantic-ui/modules/_embed.scss +20 -31
  81. data/app/assets/stylesheets/semantic-ui/modules/_flyout.scss +97 -143
  82. data/app/assets/stylesheets/semantic-ui/modules/_modal.scss +122 -156
  83. data/app/assets/stylesheets/semantic-ui/modules/_nag.scss +55 -65
  84. data/app/assets/stylesheets/semantic-ui/modules/_popup.scss +426 -204
  85. data/app/assets/stylesheets/semantic-ui/modules/_progress.scss +108 -213
  86. data/app/assets/stylesheets/semantic-ui/modules/_rating.scss +83 -124
  87. data/app/assets/stylesheets/semantic-ui/modules/_search.scss +71 -100
  88. data/app/assets/stylesheets/semantic-ui/modules/_shape.scss +16 -32
  89. data/app/assets/stylesheets/semantic-ui/modules/_sidebar.scss +105 -208
  90. data/app/assets/stylesheets/semantic-ui/modules/_slider.scss +93 -121
  91. data/app/assets/stylesheets/semantic-ui/modules/_sticky.scss +3 -7
  92. data/app/assets/stylesheets/semantic-ui/modules/_tab.scss +12 -16
  93. data/app/assets/stylesheets/semantic-ui/modules/_toast.scss +71 -149
  94. data/app/assets/stylesheets/semantic-ui/modules/_transition.scss +371 -1282
  95. data/app/assets/stylesheets/semantic-ui/views/_ad.scss +36 -47
  96. data/app/assets/stylesheets/semantic-ui/views/_card.scss +221 -367
  97. data/app/assets/stylesheets/semantic-ui/views/_comment.scss +43 -61
  98. data/app/assets/stylesheets/semantic-ui/views/_feed.scss +37 -59
  99. data/app/assets/stylesheets/semantic-ui/views/_item.scss +86 -133
  100. data/app/assets/stylesheets/semantic-ui/views/_statistic.scss +77 -118
  101. data/lib/fomantic/ui/sass/version.rb +2 -2
  102. data/tasks/converter.rb +1 -1
  103. metadata +17 -1
@@ -1,848 +1,821 @@
1
1
  /*!
2
2
  * # Fomantic-UI - Shape
3
- * http://github.com/fomantic/Fomantic-UI/
3
+ * https://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
6
6
  * Released under the MIT license
7
- * http://opensource.org/licenses/MIT
7
+ * https://opensource.org/licenses/MIT
8
8
  *
9
9
  */
10
10
 
11
- ;(function ($, window, document, undefined) {
12
-
13
- 'use strict';
14
-
15
- $.isFunction = $.isFunction || function(obj) {
16
- return typeof obj === "function" && typeof obj.nodeType !== "number";
17
- };
18
-
19
- window = (typeof window != 'undefined' && window.Math == Math)
20
- ? window
21
- : (typeof self != 'undefined' && self.Math == Math)
22
- ? self
23
- : Function('return this')()
24
- ;
25
-
26
- $.fn.shape = function(parameters) {
27
- var
28
- $allModules = $(this),
29
-
30
- time = new Date().getTime(),
31
- performance = [],
32
-
33
- query = arguments[0],
34
- methodInvoked = (typeof query == 'string'),
35
- queryArguments = [].slice.call(arguments, 1),
36
-
37
- requestAnimationFrame = window.requestAnimationFrame
38
- || window.mozRequestAnimationFrame
39
- || window.webkitRequestAnimationFrame
40
- || window.msRequestAnimationFrame
41
- || function(callback) { setTimeout(callback, 0); },
42
-
43
- returnedValue
44
- ;
45
-
46
- $allModules
47
- .each(function() {
48
- var
49
- moduleSelector = $allModules.selector || '',
50
- settings = ( $.isPlainObject(parameters) )
51
- ? $.extend(true, {}, $.fn.shape.settings, parameters)
52
- : $.extend({}, $.fn.shape.settings),
53
-
54
- // internal aliases
55
- namespace = settings.namespace,
56
- selector = settings.selector,
57
- error = settings.error,
58
- className = settings.className,
59
-
60
- // define namespaces for modules
61
- eventNamespace = '.' + namespace,
62
- moduleNamespace = 'module-' + namespace,
63
-
64
- // selector cache
65
- $module = $(this),
66
- $sides = $module.find('>' + selector.sides),
67
- $side = $sides.find('>' + selector.side),
68
-
69
- // private variables
70
- nextIndex = false,
71
- $activeSide,
72
- $nextSide,
73
-
74
- // standard module
75
- element = this,
76
- instance = $module.data(moduleNamespace),
77
- module
78
- ;
79
-
80
- module = {
81
-
82
- initialize: function() {
83
- module.verbose('Initializing module for', element);
84
- module.set.defaultSide();
85
- module.instantiate();
86
- },
11
+ (function ($, window, document) {
12
+ 'use strict';
87
13
 
88
- instantiate: function() {
89
- module.verbose('Storing instance of module', module);
90
- instance = module;
91
- $module
92
- .data(moduleNamespace, instance)
93
- ;
94
- },
14
+ function isFunction(obj) {
15
+ return typeof obj === 'function' && typeof obj.nodeType !== 'number';
16
+ }
95
17
 
96
- destroy: function() {
97
- module.verbose('Destroying previous module for', element);
98
- $module
99
- .removeData(moduleNamespace)
100
- .off(eventNamespace)
101
- ;
102
- },
18
+ window = window !== undefined && window.Math === Math
19
+ ? window
20
+ : globalThis;
103
21
 
104
- refresh: function() {
105
- module.verbose('Refreshing selector cache for', element);
106
- $module = $(element);
107
- $sides = $(this).find(selector.sides);
108
- $side = $(this).find(selector.side);
109
- },
22
+ $.fn.shape = function (parameters) {
23
+ var
24
+ $allModules = $(this),
110
25
 
111
- repaint: function() {
112
- module.verbose('Forcing repaint event');
113
- var
114
- shape = $sides[0] || document.createElement('div'),
115
- fakeAssignment = shape.offsetWidth
116
- ;
117
- },
26
+ time = Date.now(),
27
+ performance = [],
118
28
 
119
- animate: function(propertyObject, callback) {
120
- module.verbose('Animating box with properties', propertyObject);
121
- callback = callback || function(event) {
122
- module.verbose('Executing animation callback');
123
- if(event !== undefined) {
124
- event.stopPropagation();
125
- }
126
- module.reset();
127
- module.set.active();
128
- };
129
- settings.onBeforeChange.call($nextSide[0]);
130
- if(module.get.transitionEvent()) {
131
- module.verbose('Starting CSS animation');
132
- $module
133
- .addClass(className.animating)
134
- ;
135
- $sides
136
- .css(propertyObject)
137
- .one(module.get.transitionEvent(), callback)
138
- ;
139
- module.set.duration(settings.duration);
140
- requestAnimationFrame(function() {
141
- $module
142
- .addClass(className.animating)
143
- ;
144
- $activeSide
145
- .addClass(className.hidden)
146
- ;
147
- });
148
- }
149
- else {
150
- callback();
151
- }
152
- },
153
-
154
- queue: function(method) {
155
- module.debug('Queueing animation of', method);
156
- $sides
157
- .one(module.get.transitionEvent(), function() {
158
- module.debug('Executing queued animation');
159
- setTimeout(function(){
160
- $module.shape(method);
161
- }, 0);
162
- })
163
- ;
164
- },
29
+ query = arguments[0],
30
+ methodInvoked = typeof query === 'string',
31
+ queryArguments = [].slice.call(arguments, 1),
165
32
 
166
- reset: function() {
167
- module.verbose('Animating states reset');
168
- $module
169
- .removeClass(className.animating)
170
- .attr('style', '')
171
- .removeAttr('style')
172
- ;
173
- // removeAttr style does not consistently work in safari
174
- $sides
175
- .attr('style', '')
176
- .removeAttr('style')
177
- ;
178
- $side
179
- .attr('style', '')
180
- .removeAttr('style')
181
- .removeClass(className.hidden)
182
- ;
183
- $nextSide
184
- .removeClass(className.animating)
185
- .attr('style', '')
186
- .removeAttr('style')
187
- ;
188
- },
33
+ returnedValue
34
+ ;
189
35
 
190
- is: {
191
- complete: function() {
192
- return ($side.filter('.' + className.active)[0] == $nextSide[0]);
193
- },
194
- animating: function() {
195
- return $module.hasClass(className.animating);
196
- },
197
- hidden: function() {
198
- return $module.closest(':hidden').length > 0;
199
- }
200
- },
201
-
202
- set: {
203
-
204
- defaultSide: function() {
205
- $activeSide = $side.filter('.' + settings.className.active);
206
- $nextSide = ( $activeSide.next(selector.side).length > 0 )
207
- ? $activeSide.next(selector.side)
208
- : $side.first()
209
- ;
210
- nextIndex = false;
211
- module.verbose('Active side set to', $activeSide);
212
- module.verbose('Next side set to', $nextSide);
213
- },
214
-
215
- duration: function(duration) {
216
- duration = duration || settings.duration;
217
- duration = (typeof duration == 'number')
218
- ? duration + 'ms'
219
- : duration
220
- ;
221
- module.verbose('Setting animation duration', duration);
222
- if(settings.duration || settings.duration === 0) {
223
- $sides.add($side)
224
- .css({
225
- '-webkit-transition-duration': duration,
226
- '-moz-transition-duration': duration,
227
- '-ms-transition-duration': duration,
228
- '-o-transition-duration': duration,
229
- 'transition-duration': duration
230
- })
231
- ;
232
- }
233
- },
234
-
235
- currentStageSize: function() {
36
+ $allModules.each(function () {
236
37
  var
237
- $activeSide = $side.filter('.' + settings.className.active),
238
- width = $activeSide.outerWidth(true),
239
- height = $activeSide.outerHeight(true)
38
+ moduleSelector = $allModules.selector || '',
39
+ settings = $.isPlainObject(parameters)
40
+ ? $.extend(true, {}, $.fn.shape.settings, parameters)
41
+ : $.extend({}, $.fn.shape.settings),
42
+
43
+ // internal aliases
44
+ namespace = settings.namespace,
45
+ selector = settings.selector,
46
+ error = settings.error,
47
+ className = settings.className,
48
+
49
+ // define namespaces for modules
50
+ eventNamespace = '.' + namespace,
51
+ moduleNamespace = 'module-' + namespace,
52
+
53
+ // selector cache
54
+ $module = $(this),
55
+ $sides = $module.find('>' + selector.sides),
56
+ $side = $sides.find('>' + selector.side),
57
+
58
+ // private variables
59
+ nextIndex = false,
60
+ $activeSide,
61
+ $nextSide,
62
+
63
+ // standard module
64
+ element = this,
65
+ instance = $module.data(moduleNamespace),
66
+ module
240
67
  ;
241
- $module
242
- .css({
243
- width: width,
244
- height: height
245
- })
246
- ;
247
- },
248
68
 
249
- stageSize: function() {
250
- var
251
- $clone = $module.clone().addClass(className.loading),
252
- $side = $clone.find('>' + selector.sides + '>' + selector.side),
253
- $activeSide = $side.filter('.' + settings.className.active),
254
- $nextSide = (nextIndex)
255
- ? $side.eq(nextIndex)
256
- : ( $activeSide.next(selector.side).length > 0 )
257
- ? $activeSide.next(selector.side)
258
- : $side.first(),
259
- newWidth = (settings.width === 'next')
260
- ? $nextSide.outerWidth(true)
261
- : (settings.width === 'initial')
262
- ? $module.width()
263
- : settings.width,
264
- newHeight = (settings.height === 'next')
265
- ? $nextSide.outerHeight(true)
266
- : (settings.height === 'initial')
267
- ? $module.height()
268
- : settings.height
269
- ;
270
- $activeSide.removeClass(className.active);
271
- $nextSide.addClass(className.active);
272
- $clone.insertAfter($module);
273
- $clone.remove();
274
- if(settings.width !== 'auto') {
275
- $module.css('width', newWidth + settings.jitter);
276
- module.verbose('Specifying width during animation', newWidth);
277
- }
278
- if(settings.height !== 'auto') {
279
- $module.css('height', newHeight + settings.jitter);
280
- module.verbose('Specifying height during animation', newHeight);
281
- }
282
- },
283
-
284
- nextSide: function(selector) {
285
- nextIndex = selector;
286
- $nextSide = $side.filter(selector);
287
- nextIndex = $side.index($nextSide);
288
- if($nextSide.length === 0) {
289
- module.set.defaultSide();
290
- module.error(error.side);
69
+ module = {
70
+
71
+ initialize: function () {
72
+ module.verbose('Initializing module for', element);
73
+ module.set.defaultSide();
74
+ module.instantiate();
75
+ },
76
+
77
+ instantiate: function () {
78
+ module.verbose('Storing instance of module', module);
79
+ instance = module;
80
+ $module
81
+ .data(moduleNamespace, instance)
82
+ ;
83
+ },
84
+
85
+ destroy: function () {
86
+ module.verbose('Destroying previous module for', element);
87
+ $module
88
+ .removeData(moduleNamespace)
89
+ .off(eventNamespace)
90
+ ;
91
+ },
92
+
93
+ refresh: function () {
94
+ module.verbose('Refreshing selector cache for', element);
95
+ $module = $(element);
96
+ $sides = $(this).find(selector.sides);
97
+ $side = $(this).find(selector.side);
98
+ },
99
+
100
+ repaint: function () {
101
+ module.verbose('Forcing repaint event');
102
+ var
103
+ shape = $sides[0] || document.createElement('div'),
104
+ fakeAssignment = shape.offsetWidth
105
+ ;
106
+ },
107
+
108
+ animate: function (propertyObject, callback) {
109
+ module.verbose('Animating box with properties', propertyObject);
110
+ callback = callback || function (event) {
111
+ module.verbose('Executing animation callback');
112
+ if (event !== undefined) {
113
+ event.stopPropagation();
114
+ }
115
+ module.reset();
116
+ module.set.active();
117
+ };
118
+ settings.onBeforeChange.call($nextSide[0]);
119
+ if (module.get.transitionEvent()) {
120
+ module.verbose('Starting CSS animation');
121
+ $module
122
+ .addClass(className.animating)
123
+ ;
124
+ $sides
125
+ .css(propertyObject)
126
+ .one(module.get.transitionEvent(), callback)
127
+ ;
128
+ module.set.duration(settings.duration);
129
+ requestAnimationFrame(function () {
130
+ $module
131
+ .addClass(className.animating)
132
+ ;
133
+ $activeSide
134
+ .addClass(className.hidden)
135
+ ;
136
+ });
137
+ } else {
138
+ callback();
139
+ }
140
+ },
141
+
142
+ queue: function (method) {
143
+ module.debug('Queueing animation of', method);
144
+ $sides
145
+ .one(module.get.transitionEvent(), function () {
146
+ module.debug('Executing queued animation');
147
+ setTimeout(function () {
148
+ $module.shape(method);
149
+ }, 0);
150
+ })
151
+ ;
152
+ },
153
+
154
+ reset: function () {
155
+ module.verbose('Animating states reset');
156
+ $module
157
+ .removeClass(className.animating)
158
+ .attr('style', '')
159
+ .removeAttr('style')
160
+ ;
161
+ // removeAttr style does not consistently work in safari
162
+ $sides
163
+ .attr('style', '')
164
+ .removeAttr('style')
165
+ ;
166
+ $side
167
+ .attr('style', '')
168
+ .removeAttr('style')
169
+ .removeClass(className.hidden)
170
+ ;
171
+ $nextSide
172
+ .removeClass(className.animating)
173
+ .attr('style', '')
174
+ .removeAttr('style')
175
+ ;
176
+ },
177
+
178
+ is: {
179
+ complete: function () {
180
+ return $side.filter('.' + className.active)[0] === $nextSide[0];
181
+ },
182
+ animating: function () {
183
+ return $module.hasClass(className.animating);
184
+ },
185
+ hidden: function () {
186
+ return $module.closest(':hidden').length > 0;
187
+ },
188
+ },
189
+
190
+ set: {
191
+
192
+ defaultSide: function () {
193
+ $activeSide = $side.filter('.' + settings.className.active);
194
+ $nextSide = $activeSide.next(selector.side).length > 0
195
+ ? $activeSide.next(selector.side)
196
+ : $side.first();
197
+ nextIndex = false;
198
+ module.verbose('Active side set to', $activeSide);
199
+ module.verbose('Next side set to', $nextSide);
200
+ },
201
+
202
+ duration: function (duration) {
203
+ duration = duration || settings.duration;
204
+ duration = typeof duration === 'number'
205
+ ? duration + 'ms'
206
+ : duration;
207
+ module.verbose('Setting animation duration', duration);
208
+ if (settings.duration || settings.duration === 0) {
209
+ $sides.add($side)
210
+ .css({
211
+ 'transition-duration': duration,
212
+ })
213
+ ;
214
+ }
215
+ },
216
+
217
+ currentStageSize: function () {
218
+ var
219
+ $activeSide = $side.filter('.' + settings.className.active),
220
+ width = $activeSide.outerWidth(true),
221
+ height = $activeSide.outerHeight(true)
222
+ ;
223
+ $module
224
+ .css({
225
+ width: width,
226
+ height: height,
227
+ })
228
+ ;
229
+ },
230
+
231
+ stageSize: function () {
232
+ var
233
+ $clone = $module.clone().addClass(className.loading),
234
+ $side = $clone.find('>' + selector.sides + '>' + selector.side),
235
+ $activeSide = $side.filter('.' + settings.className.active),
236
+ $nextSide = nextIndex
237
+ ? $side.eq(nextIndex)
238
+ : ($activeSide.next(selector.side).length > 0
239
+ ? $activeSide.next(selector.side)
240
+ : $side.first()),
241
+ newWidth = settings.width === 'next'
242
+ ? $nextSide.outerWidth(true)
243
+ : (settings.width === 'initial'
244
+ ? $module.width()
245
+ : settings.width),
246
+ newHeight = settings.height === 'next'
247
+ ? $nextSide.outerHeight(true)
248
+ : (settings.height === 'initial'
249
+ ? $module.height()
250
+ : settings.height)
251
+ ;
252
+ $activeSide.removeClass(className.active);
253
+ $nextSide.addClass(className.active);
254
+ $clone.insertAfter($module);
255
+ $clone.remove();
256
+ if (settings.width !== 'auto') {
257
+ $module.css('width', newWidth + settings.jitter);
258
+ module.verbose('Specifying width during animation', newWidth);
259
+ }
260
+ if (settings.height !== 'auto') {
261
+ $module.css('height', newHeight + settings.jitter);
262
+ module.verbose('Specifying height during animation', newHeight);
263
+ }
264
+ },
265
+
266
+ nextSide: function (selector) {
267
+ nextIndex = selector;
268
+ $nextSide = $side.filter(selector);
269
+ nextIndex = $side.index($nextSide);
270
+ if ($nextSide.length === 0) {
271
+ module.set.defaultSide();
272
+ module.error(error.side);
273
+ }
274
+ module.verbose('Next side manually set to', $nextSide);
275
+ },
276
+
277
+ active: function () {
278
+ module.verbose('Setting new side to active', $nextSide);
279
+ $side
280
+ .removeClass(className.active)
281
+ ;
282
+ $nextSide
283
+ .addClass(className.active)
284
+ ;
285
+ settings.onChange.call($nextSide[0]);
286
+ module.set.defaultSide();
287
+ },
288
+ },
289
+
290
+ flip: {
291
+ to: function (type, stage) {
292
+ if (module.is.hidden()) {
293
+ module.debug('Module not visible', $nextSide);
294
+
295
+ return;
296
+ }
297
+ if (module.is.complete() && !module.is.animating() && !settings.allowRepeats) {
298
+ module.debug('Side already visible', $nextSide);
299
+
300
+ return;
301
+ }
302
+ var
303
+ transform = module.get.transform[type]()
304
+ ;
305
+ if (!module.is.animating()) {
306
+ module.debug('Flipping ' + type, $nextSide);
307
+ module.set.stageSize();
308
+ module.stage[stage]();
309
+ module.animate(transform);
310
+ } else {
311
+ module.queue('flip ' + type);
312
+ }
313
+ },
314
+
315
+ up: function () {
316
+ module.flip.to('up', 'above');
317
+ },
318
+
319
+ down: function () {
320
+ module.flip.to('down', 'below');
321
+ },
322
+
323
+ left: function () {
324
+ module.flip.to('left', 'left');
325
+ },
326
+
327
+ right: function () {
328
+ module.flip.to('right', 'right');
329
+ },
330
+
331
+ over: function () {
332
+ module.flip.to('over', 'behind');
333
+ },
334
+
335
+ back: function () {
336
+ module.flip.to('back', 'behind');
337
+ },
338
+
339
+ },
340
+
341
+ get: {
342
+
343
+ transform: {
344
+ up: function () {
345
+ var
346
+ translateZ = $activeSide.outerHeight(true) / 2,
347
+ translateY = $nextSide.outerHeight(true) - translateZ
348
+ ;
349
+
350
+ return {
351
+ transform: 'translateY(' + translateY + 'px) translateZ(-' + translateZ + 'px) rotateX(-90deg)',
352
+ };
353
+ },
354
+
355
+ down: function () {
356
+ var
357
+ translate = {
358
+ z: $activeSide.outerHeight(true) / 2,
359
+ }
360
+ ;
361
+
362
+ return {
363
+ transform: 'translateY(-' + translate.z + 'px) translateZ(-' + translate.z + 'px) rotateX(90deg)',
364
+ };
365
+ },
366
+
367
+ left: function () {
368
+ var
369
+ translateZ = $activeSide.outerWidth(true) / 2,
370
+ translateX = $nextSide.outerWidth(true) - translateZ
371
+ ;
372
+
373
+ return {
374
+ transform: 'translateX(' + translateX + 'px) translateZ(-' + translateZ + 'px) rotateY(90deg)',
375
+ };
376
+ },
377
+
378
+ right: function () {
379
+ var
380
+ translate = {
381
+ z: $activeSide.outerWidth(true) / 2,
382
+ }
383
+ ;
384
+
385
+ return {
386
+ transform: 'translateX(-' + translate.z + 'px) translateZ(-' + translate.z + 'px) rotateY(-90deg)',
387
+ };
388
+ },
389
+
390
+ over: function () {
391
+ var
392
+ translate = {
393
+ x: -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2),
394
+ }
395
+ ;
396
+
397
+ return {
398
+ transform: 'translateX(' + translate.x + 'px) rotateY(180deg)',
399
+ };
400
+ },
401
+
402
+ back: function () {
403
+ var
404
+ translate = {
405
+ x: -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2),
406
+ }
407
+ ;
408
+
409
+ return {
410
+ transform: 'translateX(' + translate.x + 'px) rotateY(-180deg)',
411
+ };
412
+ },
413
+ },
414
+
415
+ transitionEvent: function () {
416
+ var
417
+ element = document.createElement('element'),
418
+ transitions = {
419
+ transition: 'transitionend',
420
+ OTransition: 'oTransitionEnd',
421
+ MozTransition: 'transitionend',
422
+ WebkitTransition: 'webkitTransitionEnd',
423
+ },
424
+ transition
425
+ ;
426
+ for (transition in transitions) {
427
+ if (element.style[transition] !== undefined) {
428
+ return transitions[transition];
429
+ }
430
+ }
431
+ },
432
+
433
+ nextSide: function () {
434
+ return $activeSide.next(selector.side).length > 0
435
+ ? $activeSide.next(selector.side)
436
+ : $side.first();
437
+ },
438
+
439
+ },
440
+
441
+ stage: {
442
+
443
+ above: function () {
444
+ var
445
+ box = {
446
+ origin: ($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2,
447
+ depth: {
448
+ active: $nextSide.outerHeight(true) / 2,
449
+ next: $activeSide.outerHeight(true) / 2,
450
+ },
451
+ }
452
+ ;
453
+ module.verbose('Setting the initial animation position as above', $nextSide, box);
454
+ $activeSide
455
+ .css({
456
+ transform: 'rotateX(0deg)',
457
+ })
458
+ ;
459
+ $nextSide
460
+ .addClass(className.animating)
461
+ .css({
462
+ top: box.origin + 'px',
463
+ transform: 'rotateX(90deg) translateZ(' + box.depth.next + 'px) translateY(-' + box.depth.active + 'px)',
464
+ })
465
+ ;
466
+ },
467
+
468
+ below: function () {
469
+ var
470
+ box = {
471
+ origin: ($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2,
472
+ depth: {
473
+ active: $nextSide.outerHeight(true) / 2,
474
+ next: $activeSide.outerHeight(true) / 2,
475
+ },
476
+ }
477
+ ;
478
+ module.verbose('Setting the initial animation position as below', $nextSide, box);
479
+ $activeSide
480
+ .css({
481
+ transform: 'rotateX(0deg)',
482
+ })
483
+ ;
484
+ $nextSide
485
+ .addClass(className.animating)
486
+ .css({
487
+ top: box.origin + 'px',
488
+ transform: 'rotateX(-90deg) translateZ(' + box.depth.next + 'px) translateY(' + box.depth.active + 'px)',
489
+ })
490
+ ;
491
+ },
492
+
493
+ left: function () {
494
+ var
495
+ height = {
496
+ active: $activeSide.outerWidth(true),
497
+ next: $nextSide.outerWidth(true),
498
+ },
499
+ box = {
500
+ origin: (height.active - height.next) / 2,
501
+ depth: {
502
+ active: height.next / 2,
503
+ next: height.active / 2,
504
+ },
505
+ }
506
+ ;
507
+ module.verbose('Setting the initial animation position as left', $nextSide, box);
508
+ $activeSide
509
+ .css({
510
+ transform: 'rotateY(0deg)',
511
+ })
512
+ ;
513
+ $nextSide
514
+ .addClass(className.animating)
515
+ .css({
516
+ left: box.origin + 'px',
517
+ transform: 'rotateY(-90deg) translateZ(' + box.depth.next + 'px) translateX(-' + box.depth.active + 'px)',
518
+ })
519
+ ;
520
+ },
521
+
522
+ right: function () {
523
+ var
524
+ height = {
525
+ active: $activeSide.outerWidth(true),
526
+ next: $nextSide.outerWidth(true),
527
+ },
528
+ box = {
529
+ origin: (height.active - height.next) / 2,
530
+ depth: {
531
+ active: height.next / 2,
532
+ next: height.active / 2,
533
+ },
534
+ }
535
+ ;
536
+ module.verbose('Setting the initial animation position as right', $nextSide, box);
537
+ $activeSide
538
+ .css({
539
+ transform: 'rotateY(0deg)',
540
+ })
541
+ ;
542
+ $nextSide
543
+ .addClass(className.animating)
544
+ .css({
545
+ left: box.origin + 'px',
546
+ transform: 'rotateY(90deg) translateZ(' + box.depth.next + 'px) translateX(' + box.depth.active + 'px)',
547
+ })
548
+ ;
549
+ },
550
+
551
+ behind: function () {
552
+ var
553
+ height = {
554
+ active: $activeSide.outerWidth(true),
555
+ next: $nextSide.outerWidth(true),
556
+ },
557
+ box = {
558
+ origin: (height.active - height.next) / 2,
559
+ depth: {
560
+ active: height.next / 2,
561
+ next: height.active / 2,
562
+ },
563
+ }
564
+ ;
565
+ module.verbose('Setting the initial animation position as behind', $nextSide, box);
566
+ $activeSide
567
+ .css({
568
+ transform: 'rotateY(0deg)',
569
+ })
570
+ ;
571
+ $nextSide
572
+ .addClass(className.animating)
573
+ .css({
574
+ left: box.origin + 'px',
575
+ transform: 'rotateY(-180deg)',
576
+ })
577
+ ;
578
+ },
579
+ },
580
+ setting: function (name, value) {
581
+ module.debug('Changing setting', name, value);
582
+ if ($.isPlainObject(name)) {
583
+ $.extend(true, settings, name);
584
+ } else if (value !== undefined) {
585
+ if ($.isPlainObject(settings[name])) {
586
+ $.extend(true, settings[name], value);
587
+ } else {
588
+ settings[name] = value;
589
+ }
590
+ } else {
591
+ return settings[name];
592
+ }
593
+ },
594
+ internal: function (name, value) {
595
+ if ($.isPlainObject(name)) {
596
+ $.extend(true, module, name);
597
+ } else if (value !== undefined) {
598
+ module[name] = value;
599
+ } else {
600
+ return module[name];
601
+ }
602
+ },
603
+ debug: function () {
604
+ if (!settings.silent && settings.debug) {
605
+ if (settings.performance) {
606
+ module.performance.log(arguments);
607
+ } else {
608
+ module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
609
+ module.debug.apply(console, arguments);
610
+ }
611
+ }
612
+ },
613
+ verbose: function () {
614
+ if (!settings.silent && settings.verbose && settings.debug) {
615
+ if (settings.performance) {
616
+ module.performance.log(arguments);
617
+ } else {
618
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
619
+ module.verbose.apply(console, arguments);
620
+ }
621
+ }
622
+ },
623
+ error: function () {
624
+ if (!settings.silent) {
625
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
626
+ module.error.apply(console, arguments);
627
+ }
628
+ },
629
+ performance: {
630
+ log: function (message) {
631
+ var
632
+ currentTime,
633
+ executionTime,
634
+ previousTime
635
+ ;
636
+ if (settings.performance) {
637
+ currentTime = Date.now();
638
+ previousTime = time || currentTime;
639
+ executionTime = currentTime - previousTime;
640
+ time = currentTime;
641
+ performance.push({
642
+ Name: message[0],
643
+ Arguments: [].slice.call(message, 1) || '',
644
+ Element: element,
645
+ 'Execution Time': executionTime,
646
+ });
647
+ }
648
+ clearTimeout(module.performance.timer);
649
+ module.performance.timer = setTimeout(module.performance.display, 500);
650
+ },
651
+ display: function () {
652
+ var
653
+ title = settings.name + ':',
654
+ totalTime = 0
655
+ ;
656
+ time = false;
657
+ clearTimeout(module.performance.timer);
658
+ $.each(performance, function (index, data) {
659
+ totalTime += data['Execution Time'];
660
+ });
661
+ title += ' ' + totalTime + 'ms';
662
+ if (moduleSelector) {
663
+ title += ' \'' + moduleSelector + '\'';
664
+ }
665
+ if ($allModules.length > 1) {
666
+ title += ' (' + $allModules.length + ')';
667
+ }
668
+ if (performance.length > 0) {
669
+ console.groupCollapsed(title);
670
+ if (console.table) {
671
+ console.table(performance);
672
+ } else {
673
+ $.each(performance, function (index, data) {
674
+ console.log(data.Name + ': ' + data['Execution Time'] + 'ms');
675
+ });
676
+ }
677
+ console.groupEnd();
678
+ }
679
+ performance = [];
680
+ },
681
+ },
682
+ invoke: function (query, passedArguments, context) {
683
+ var
684
+ object = instance,
685
+ maxDepth,
686
+ found,
687
+ response
688
+ ;
689
+ passedArguments = passedArguments || queryArguments;
690
+ context = context || element;
691
+ if (typeof query === 'string' && object !== undefined) {
692
+ query = query.split(/[ .]/);
693
+ maxDepth = query.length - 1;
694
+ $.each(query, function (depth, value) {
695
+ var camelCaseValue = depth !== maxDepth
696
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
697
+ : query
698
+ ;
699
+ if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) {
700
+ object = object[camelCaseValue];
701
+ } else if (object[camelCaseValue] !== undefined) {
702
+ found = object[camelCaseValue];
703
+
704
+ return false;
705
+ } else if ($.isPlainObject(object[value]) && (depth !== maxDepth)) {
706
+ object = object[value];
707
+ } else if (object[value] !== undefined) {
708
+ found = object[value];
709
+
710
+ return false;
711
+ } else {
712
+ module.error(error.method, query);
713
+
714
+ return false;
715
+ }
716
+ });
717
+ }
718
+ if (isFunction(found)) {
719
+ response = found.apply(context, passedArguments);
720
+ } else if (found !== undefined) {
721
+ response = found;
722
+ }
723
+ if (Array.isArray(returnedValue)) {
724
+ returnedValue.push(response);
725
+ } else if (returnedValue !== undefined) {
726
+ returnedValue = [returnedValue, response];
727
+ } else if (response !== undefined) {
728
+ returnedValue = response;
729
+ }
730
+
731
+ return found;
732
+ },
733
+ };
734
+
735
+ if (methodInvoked) {
736
+ if (instance === undefined) {
737
+ module.initialize();
738
+ }
739
+ var $inputs = $module.find('input');
740
+ if ($inputs.length > 0) {
741
+ $inputs.trigger('blur');
742
+ setTimeout(function () {
743
+ module.invoke(query);
744
+ }, 150);
745
+ } else {
746
+ module.invoke(query);
747
+ }
748
+ } else {
749
+ if (instance !== undefined) {
750
+ instance.invoke('destroy');
751
+ }
752
+ module.initialize();
291
753
  }
292
- module.verbose('Next side manually set to', $nextSide);
293
- },
754
+ });
294
755
 
295
- active: function() {
296
- module.verbose('Setting new side to active', $nextSide);
297
- $side
298
- .removeClass(className.active)
299
- ;
300
- $nextSide
301
- .addClass(className.active)
302
- ;
303
- settings.onChange.call($nextSide[0]);
304
- module.set.defaultSide();
305
- }
306
- },
756
+ return returnedValue !== undefined
757
+ ? returnedValue
758
+ : this;
759
+ };
307
760
 
308
- flip: {
309
- to: function(type,stage){
310
- if(module.is.hidden()) {
311
- module.debug('Module not visible', $nextSide);
312
- return;
313
- }
314
- if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) {
315
- module.debug('Side already visible', $nextSide);
316
- return;
317
- }
318
- var
319
- transform = module.get.transform[type]()
320
- ;
321
- if( !module.is.animating()) {
322
- module.debug('Flipping '+type, $nextSide);
323
- module.set.stageSize();
324
- module.stage[stage]();
325
- module.animate(transform);
326
- }
327
- else {
328
- module.queue('flip '+type);
329
- }
330
- },
761
+ $.fn.shape.settings = {
331
762
 
332
- up: function() {
333
- module.flip.to('up','above');
334
- },
763
+ // module info
764
+ name: 'Shape',
335
765
 
336
- down: function() {
337
- module.flip.to('down','below');
338
- },
766
+ // hide all debug content
767
+ silent: false,
339
768
 
340
- left: function() {
341
- module.flip.to('left','left');
342
- },
769
+ // debug content outputted to console
770
+ debug: false,
343
771
 
344
- right: function() {
345
- module.flip.to('right','right');
346
- },
772
+ // verbose debug output
773
+ verbose: false,
347
774
 
348
- over: function() {
349
- module.flip.to('over','behind');
350
- },
775
+ // fudge factor in pixels when swapping from 2d to 3d (can be useful to correct rounding errors)
776
+ jitter: 0,
351
777
 
352
- back: function() {
353
- module.flip.to('back','behind');
354
- }
778
+ // performance data output
779
+ performance: true,
355
780
 
356
- },
781
+ // event namespace
782
+ namespace: 'shape',
357
783
 
358
- get: {
359
-
360
- transform: {
361
- up: function() {
362
- var
363
- translateZ = $activeSide.outerHeight(true) / 2,
364
- translateY = $nextSide.outerHeight(true) - translateZ
365
- ;
366
- return {
367
- transform: 'translateY(' + translateY + 'px) translateZ(-'+ translateZ + 'px) rotateX(-90deg)'
368
- };
369
- },
370
-
371
- down: function() {
372
- var
373
- translate = {
374
- z: $activeSide.outerHeight(true) / 2
375
- }
376
- ;
377
- return {
378
- transform: 'translateY(-' + translate.z + 'px) translateZ(-'+ translate.z + 'px) rotateX(90deg)'
379
- };
380
- },
381
-
382
- left: function() {
383
- var
384
- translateZ = $activeSide.outerWidth(true) / 2,
385
- translateX = $nextSide.outerWidth(true) - translateZ
386
- ;
387
- return {
388
- transform: 'translateX(' + translateX + 'px) translateZ(-' + translateZ + 'px) rotateY(90deg)'
389
- };
390
- },
391
-
392
- right: function() {
393
- var
394
- translate = {
395
- z : $activeSide.outerWidth(true) / 2
396
- }
397
- ;
398
- return {
399
- transform: 'translateX(-' + translate.z + 'px) translateZ(-' + translate.z + 'px) rotateY(-90deg)'
400
- };
401
- },
402
-
403
- over: function() {
404
- var
405
- translate = {
406
- x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2)
407
- }
408
- ;
409
- return {
410
- transform: 'translateX(' + translate.x + 'px) rotateY(180deg)'
411
- };
412
- },
413
-
414
- back: function() {
415
- var
416
- translate = {
417
- x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2)
418
- }
419
- ;
420
- return {
421
- transform: 'translateX(' + translate.x + 'px) rotateY(-180deg)'
422
- };
423
- }
424
- },
784
+ // width during animation, can be set to 'auto', initial', 'next' or pixel amount
785
+ width: 'initial',
425
786
 
426
- transitionEvent: function() {
427
- var
428
- element = document.createElement('element'),
429
- transitions = {
430
- 'transition' :'transitionend',
431
- 'OTransition' :'oTransitionEnd',
432
- 'MozTransition' :'transitionend',
433
- 'WebkitTransition' :'webkitTransitionEnd'
434
- },
435
- transition
436
- ;
437
- for(transition in transitions){
438
- if( element.style[transition] !== undefined ){
439
- return transitions[transition];
440
- }
441
- }
442
- },
787
+ // height during animation, can be set to 'auto', 'initial', 'next' or pixel amount
788
+ height: 'initial',
443
789
 
444
- nextSide: function() {
445
- return ( $activeSide.next(selector.side).length > 0 )
446
- ? $activeSide.next(selector.side)
447
- : $side.first()
448
- ;
449
- }
790
+ // callback occurs on side change
791
+ onBeforeChange: function () {},
792
+ onChange: function () {},
450
793
 
451
- },
794
+ // allow animation to same side
795
+ allowRepeats: false,
452
796
 
453
- stage: {
797
+ // animation duration
798
+ duration: false,
454
799
 
455
- above: function() {
456
- var
457
- box = {
458
- origin : (($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2),
459
- depth : {
460
- active : ($nextSide.outerHeight(true) / 2),
461
- next : ($activeSide.outerHeight(true) / 2)
462
- }
463
- }
464
- ;
465
- module.verbose('Setting the initial animation position as above', $nextSide, box);
466
- $activeSide
467
- .css({
468
- 'transform' : 'rotateX(0deg)'
469
- })
470
- ;
471
- $nextSide
472
- .addClass(className.animating)
473
- .css({
474
- 'top' : box.origin + 'px',
475
- 'transform' : 'rotateX(90deg) translateZ(' + box.depth.next + 'px) translateY(-' + box.depth.active + 'px)'
476
- })
477
- ;
478
- },
479
-
480
- below: function() {
481
- var
482
- box = {
483
- origin : (($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2),
484
- depth : {
485
- active : ($nextSide.outerHeight(true) / 2),
486
- next : ($activeSide.outerHeight(true) / 2)
487
- }
488
- }
489
- ;
490
- module.verbose('Setting the initial animation position as below', $nextSide, box);
491
- $activeSide
492
- .css({
493
- 'transform' : 'rotateX(0deg)'
494
- })
495
- ;
496
- $nextSide
497
- .addClass(className.animating)
498
- .css({
499
- 'top' : box.origin + 'px',
500
- 'transform' : 'rotateX(-90deg) translateZ(' + box.depth.next + 'px) translateY(' + box.depth.active + 'px)'
501
- })
502
- ;
503
- },
504
-
505
- left: function() {
506
- var
507
- height = {
508
- active : $activeSide.outerWidth(true),
509
- next : $nextSide.outerWidth(true)
510
- },
511
- box = {
512
- origin : ( ( height.active - height.next ) / 2),
513
- depth : {
514
- active : (height.next / 2),
515
- next : (height.active / 2)
516
- }
517
- }
518
- ;
519
- module.verbose('Setting the initial animation position as left', $nextSide, box);
520
- $activeSide
521
- .css({
522
- 'transform' : 'rotateY(0deg)'
523
- })
524
- ;
525
- $nextSide
526
- .addClass(className.animating)
527
- .css({
528
- 'left' : box.origin + 'px',
529
- 'transform' : 'rotateY(-90deg) translateZ(' + box.depth.next + 'px) translateX(-' + box.depth.active + 'px)'
530
- })
531
- ;
532
- },
533
-
534
- right: function() {
535
- var
536
- height = {
537
- active : $activeSide.outerWidth(true),
538
- next : $nextSide.outerWidth(true)
539
- },
540
- box = {
541
- origin : ( ( height.active - height.next ) / 2),
542
- depth : {
543
- active : (height.next / 2),
544
- next : (height.active / 2)
545
- }
546
- }
547
- ;
548
- module.verbose('Setting the initial animation position as right', $nextSide, box);
549
- $activeSide
550
- .css({
551
- 'transform' : 'rotateY(0deg)'
552
- })
553
- ;
554
- $nextSide
555
- .addClass(className.animating)
556
- .css({
557
- 'left' : box.origin + 'px',
558
- 'transform' : 'rotateY(90deg) translateZ(' + box.depth.next + 'px) translateX(' + box.depth.active + 'px)'
559
- })
560
- ;
561
- },
562
-
563
- behind: function() {
564
- var
565
- height = {
566
- active : $activeSide.outerWidth(true),
567
- next : $nextSide.outerWidth(true)
568
- },
569
- box = {
570
- origin : ( ( height.active - height.next ) / 2),
571
- depth : {
572
- active : (height.next / 2),
573
- next : (height.active / 2)
574
- }
575
- }
576
- ;
577
- module.verbose('Setting the initial animation position as behind', $nextSide, box);
578
- $activeSide
579
- .css({
580
- 'transform' : 'rotateY(0deg)'
581
- })
582
- ;
583
- $nextSide
584
- .addClass(className.animating)
585
- .css({
586
- 'left' : box.origin + 'px',
587
- 'transform' : 'rotateY(-180deg)'
588
- })
589
- ;
590
- }
591
- },
592
- setting: function(name, value) {
593
- module.debug('Changing setting', name, value);
594
- if( $.isPlainObject(name) ) {
595
- $.extend(true, settings, name);
596
- }
597
- else if(value !== undefined) {
598
- if($.isPlainObject(settings[name])) {
599
- $.extend(true, settings[name], value);
600
- }
601
- else {
602
- settings[name] = value;
603
- }
604
- }
605
- else {
606
- return settings[name];
607
- }
608
- },
609
- internal: function(name, value) {
610
- if( $.isPlainObject(name) ) {
611
- $.extend(true, module, name);
612
- }
613
- else if(value !== undefined) {
614
- module[name] = value;
615
- }
616
- else {
617
- return module[name];
618
- }
619
- },
620
- debug: function() {
621
- if(!settings.silent && settings.debug) {
622
- if(settings.performance) {
623
- module.performance.log(arguments);
624
- }
625
- else {
626
- module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
627
- module.debug.apply(console, arguments);
628
- }
629
- }
630
- },
631
- verbose: function() {
632
- if(!settings.silent && settings.verbose && settings.debug) {
633
- if(settings.performance) {
634
- module.performance.log(arguments);
635
- }
636
- else {
637
- module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
638
- module.verbose.apply(console, arguments);
639
- }
640
- }
800
+ // possible errors
801
+ error: {
802
+ side: 'You tried to switch to a side that does not exist.',
803
+ method: 'The method you called is not defined',
641
804
  },
642
- error: function() {
643
- if(!settings.silent) {
644
- module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
645
- module.error.apply(console, arguments);
646
- }
805
+
806
+ // classnames used
807
+ className: {
808
+ animating: 'animating',
809
+ hidden: 'hidden',
810
+ loading: 'loading',
811
+ active: 'active',
647
812
  },
648
- performance: {
649
- log: function(message) {
650
- var
651
- currentTime,
652
- executionTime,
653
- previousTime
654
- ;
655
- if(settings.performance) {
656
- currentTime = new Date().getTime();
657
- previousTime = time || currentTime;
658
- executionTime = currentTime - previousTime;
659
- time = currentTime;
660
- performance.push({
661
- 'Name' : message[0],
662
- 'Arguments' : [].slice.call(message, 1) || '',
663
- 'Element' : element,
664
- 'Execution Time' : executionTime
665
- });
666
- }
667
- clearTimeout(module.performance.timer);
668
- module.performance.timer = setTimeout(module.performance.display, 500);
669
- },
670
- display: function() {
671
- var
672
- title = settings.name + ':',
673
- totalTime = 0
674
- ;
675
- time = false;
676
- clearTimeout(module.performance.timer);
677
- $.each(performance, function(index, data) {
678
- totalTime += data['Execution Time'];
679
- });
680
- title += ' ' + totalTime + 'ms';
681
- if(moduleSelector) {
682
- title += ' \'' + moduleSelector + '\'';
683
- }
684
- if($allModules.length > 1) {
685
- title += ' ' + '(' + $allModules.length + ')';
686
- }
687
- if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
688
- console.groupCollapsed(title);
689
- if(console.table) {
690
- console.table(performance);
691
- }
692
- else {
693
- $.each(performance, function(index, data) {
694
- console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
695
- });
696
- }
697
- console.groupEnd();
698
- }
699
- performance = [];
700
- }
813
+
814
+ // selectors used
815
+ selector: {
816
+ sides: '.sides',
817
+ side: '.side',
701
818
  },
702
- invoke: function(query, passedArguments, context) {
703
- var
704
- object = instance,
705
- maxDepth,
706
- found,
707
- response
708
- ;
709
- passedArguments = passedArguments || queryArguments;
710
- context = context || element;
711
- if(typeof query == 'string' && object !== undefined) {
712
- query = query.split(/[\. ]/);
713
- maxDepth = query.length - 1;
714
- $.each(query, function(depth, value) {
715
- var camelCaseValue = (depth != maxDepth)
716
- ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
717
- : query
718
- ;
719
- if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
720
- object = object[camelCaseValue];
721
- }
722
- else if( object[camelCaseValue] !== undefined ) {
723
- found = object[camelCaseValue];
724
- return false;
725
- }
726
- else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
727
- object = object[value];
728
- }
729
- else if( object[value] !== undefined ) {
730
- found = object[value];
731
- return false;
732
- }
733
- else {
734
- return false;
735
- }
736
- });
737
- }
738
- if ( $.isFunction( found ) ) {
739
- response = found.apply(context, passedArguments);
740
- }
741
- else if(found !== undefined) {
742
- response = found;
743
- }
744
- if(Array.isArray(returnedValue)) {
745
- returnedValue.push(response);
746
- }
747
- else if(returnedValue !== undefined) {
748
- returnedValue = [returnedValue, response];
749
- }
750
- else if(response !== undefined) {
751
- returnedValue = response;
752
- }
753
- return found;
754
- }
755
- };
756
-
757
- if(methodInvoked) {
758
- if(instance === undefined) {
759
- module.initialize();
760
- }
761
- var $inputs = $module.find('input');
762
- if( $inputs.length > 0) {
763
- $inputs.blur();
764
- setTimeout(function(){
765
- module.invoke(query);
766
- }, 150);
767
- } else {
768
- module.invoke(query);
769
- }
770
- }
771
- else {
772
- if(instance !== undefined) {
773
- instance.invoke('destroy');
774
- }
775
- module.initialize();
776
- }
777
- })
778
- ;
779
-
780
- return (returnedValue !== undefined)
781
- ? returnedValue
782
- : this
783
- ;
784
- };
785
-
786
- $.fn.shape.settings = {
787
-
788
- // module info
789
- name : 'Shape',
790
-
791
- // hide all debug content
792
- silent : false,
793
-
794
- // debug content outputted to console
795
- debug : false,
796
-
797
- // verbose debug output
798
- verbose : false,
799
-
800
- // fudge factor in pixels when swapping from 2d to 3d (can be useful to correct rounding errors)
801
- jitter : 0,
802
-
803
- // performance data output
804
- performance: true,
805
-
806
- // event namespace
807
- namespace : 'shape',
808
-
809
- // width during animation, can be set to 'auto', initial', 'next' or pixel amount
810
- width: 'initial',
811
-
812
- // height during animation, can be set to 'auto', 'initial', 'next' or pixel amount
813
- height: 'initial',
814
-
815
- // callback occurs on side change
816
- onBeforeChange : function() {},
817
- onChange : function() {},
818
-
819
- // allow animation to same side
820
- allowRepeats: false,
821
-
822
- // animation duration
823
- duration : false,
824
-
825
- // possible errors
826
- error: {
827
- side : 'You tried to switch to a side that does not exist.',
828
- method : 'The method you called is not defined'
829
- },
830
-
831
- // classnames used
832
- className : {
833
- animating : 'animating',
834
- hidden : 'hidden',
835
- loading : 'loading',
836
- active : 'active'
837
- },
838
-
839
- // selectors used
840
- selector : {
841
- sides : '.sides',
842
- side : '.side'
843
- }
844
-
845
- };
846
-
847
-
848
- })( jQuery, window, document );
819
+
820
+ };
821
+ })(jQuery, window, document);