jquery-ui-rails-test 6.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 (180) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +2 -0
  5. data/Gemfile +3 -0
  6. data/History.md +172 -0
  7. data/License.txt +2 -0
  8. data/README.md +311 -0
  9. data/Rakefile +261 -0
  10. data/VERSIONS.md +40 -0
  11. data/app/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  12. data/app/assets/images/jquery-ui/ui-icons_444444_256x240.png +0 -0
  13. data/app/assets/images/jquery-ui/ui-icons_555555_256x240.png +0 -0
  14. data/app/assets/images/jquery-ui/ui-icons_777620_256x240.png +0 -0
  15. data/app/assets/images/jquery-ui/ui-icons_777777_256x240.png +0 -0
  16. data/app/assets/images/jquery-ui/ui-icons_cc0000_256x240.png +0 -0
  17. data/app/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  18. data/app/assets/javascripts/jquery-ui/core.js +15 -0
  19. data/app/assets/javascripts/jquery-ui/data.js +45 -0
  20. data/app/assets/javascripts/jquery-ui/disable-selection.js +51 -0
  21. data/app/assets/javascripts/jquery-ui/effect.all.js +15 -0
  22. data/app/assets/javascripts/jquery-ui/effect.js +975 -0
  23. data/app/assets/javascripts/jquery-ui/effects/effect-blind.js +76 -0
  24. data/app/assets/javascripts/jquery-ui/effects/effect-bounce.js +116 -0
  25. data/app/assets/javascripts/jquery-ui/effects/effect-clip.js +71 -0
  26. data/app/assets/javascripts/jquery-ui/effects/effect-drop.js +75 -0
  27. data/app/assets/javascripts/jquery-ui/effects/effect-explode.js +117 -0
  28. data/app/assets/javascripts/jquery-ui/effects/effect-fade.js +53 -0
  29. data/app/assets/javascripts/jquery-ui/effects/effect-fold.js +95 -0
  30. data/app/assets/javascripts/jquery-ui/effects/effect-highlight.js +63 -0
  31. data/app/assets/javascripts/jquery-ui/effects/effect-puff.js +49 -0
  32. data/app/assets/javascripts/jquery-ui/effects/effect-pulsate.js +70 -0
  33. data/app/assets/javascripts/jquery-ui/effects/effect-scale.js +63 -0
  34. data/app/assets/javascripts/jquery-ui/effects/effect-shake.js +80 -0
  35. data/app/assets/javascripts/jquery-ui/effects/effect-size.js +199 -0
  36. data/app/assets/javascripts/jquery-ui/effects/effect-slide.js +82 -0
  37. data/app/assets/javascripts/jquery-ui/effects/effect-transfer.js +46 -0
  38. data/app/assets/javascripts/jquery-ui/focusable.js +89 -0
  39. data/app/assets/javascripts/jquery-ui/form-reset-mixin.js +83 -0
  40. data/app/assets/javascripts/jquery-ui/form.js +25 -0
  41. data/app/assets/javascripts/jquery-ui/i18n/datepicker-af.js +40 -0
  42. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ar-DZ.js +42 -0
  43. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ar.js +42 -0
  44. data/app/assets/javascripts/jquery-ui/i18n/datepicker-az.js +40 -0
  45. data/app/assets/javascripts/jquery-ui/i18n/datepicker-be.js +40 -0
  46. data/app/assets/javascripts/jquery-ui/i18n/datepicker-bg.js +41 -0
  47. data/app/assets/javascripts/jquery-ui/i18n/datepicker-bs.js +40 -0
  48. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ca.js +40 -0
  49. data/app/assets/javascripts/jquery-ui/i18n/datepicker-cs.js +40 -0
  50. data/app/assets/javascripts/jquery-ui/i18n/datepicker-cy-GB.js +48 -0
  51. data/app/assets/javascripts/jquery-ui/i18n/datepicker-da.js +40 -0
  52. data/app/assets/javascripts/jquery-ui/i18n/datepicker-de-AT.js +41 -0
  53. data/app/assets/javascripts/jquery-ui/i18n/datepicker-de.js +40 -0
  54. data/app/assets/javascripts/jquery-ui/i18n/datepicker-el.js +40 -0
  55. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-AU.js +40 -0
  56. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-GB.js +40 -0
  57. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-NZ.js +40 -0
  58. data/app/assets/javascripts/jquery-ui/i18n/datepicker-eo.js +40 -0
  59. data/app/assets/javascripts/jquery-ui/i18n/datepicker-es.js +40 -0
  60. data/app/assets/javascripts/jquery-ui/i18n/datepicker-et.js +48 -0
  61. data/app/assets/javascripts/jquery-ui/i18n/datepicker-eu.js +39 -0
  62. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fa.js +76 -0
  63. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fi.js +40 -0
  64. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fo.js +48 -0
  65. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr-CA.js +40 -0
  66. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr-CH.js +40 -0
  67. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr.js +42 -0
  68. data/app/assets/javascripts/jquery-ui/i18n/datepicker-gl.js +40 -0
  69. data/app/assets/javascripts/jquery-ui/i18n/datepicker-he.js +40 -0
  70. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hi.js +40 -0
  71. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hr.js +40 -0
  72. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hu.js +39 -0
  73. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hy.js +40 -0
  74. data/app/assets/javascripts/jquery-ui/i18n/datepicker-id.js +40 -0
  75. data/app/assets/javascripts/jquery-ui/i18n/datepicker-is.js +48 -0
  76. data/app/assets/javascripts/jquery-ui/i18n/datepicker-it-CH.js +40 -0
  77. data/app/assets/javascripts/jquery-ui/i18n/datepicker-it.js +40 -0
  78. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ja.js +40 -0
  79. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ka.js +51 -0
  80. data/app/assets/javascripts/jquery-ui/i18n/datepicker-kk.js +40 -0
  81. data/app/assets/javascripts/jquery-ui/i18n/datepicker-km.js +40 -0
  82. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ko.js +40 -0
  83. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ky.js +41 -0
  84. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lb.js +48 -0
  85. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lt.js +48 -0
  86. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lv.js +48 -0
  87. data/app/assets/javascripts/jquery-ui/i18n/datepicker-mk.js +40 -0
  88. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ml.js +40 -0
  89. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ms.js +40 -0
  90. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nb.js +52 -0
  91. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nl-BE.js +40 -0
  92. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nl.js +40 -0
  93. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nn.js +52 -0
  94. data/app/assets/javascripts/jquery-ui/i18n/datepicker-no.js +53 -0
  95. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pl.js +40 -0
  96. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pt-BR.js +48 -0
  97. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pt.js +47 -0
  98. data/app/assets/javascripts/jquery-ui/i18n/datepicker-rm.js +64 -0
  99. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ro.js +43 -0
  100. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ru.js +40 -0
  101. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sk.js +40 -0
  102. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sl.js +41 -0
  103. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sq.js +40 -0
  104. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sr-SR.js +40 -0
  105. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sr.js +40 -0
  106. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sv.js +40 -0
  107. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ta.js +56 -0
  108. data/app/assets/javascripts/jquery-ui/i18n/datepicker-th.js +40 -0
  109. data/app/assets/javascripts/jquery-ui/i18n/datepicker-tj.js +40 -0
  110. data/app/assets/javascripts/jquery-ui/i18n/datepicker-tr.js +40 -0
  111. data/app/assets/javascripts/jquery-ui/i18n/datepicker-uk.js +41 -0
  112. data/app/assets/javascripts/jquery-ui/i18n/datepicker-vi.js +40 -0
  113. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-CN.js +40 -0
  114. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-HK.js +40 -0
  115. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-TW.js +40 -0
  116. data/app/assets/javascripts/jquery-ui/ie.js +20 -0
  117. data/app/assets/javascripts/jquery-ui/jquery-patch.js +91 -0
  118. data/app/assets/javascripts/jquery-ui/jquery-var-for-color.js +24 -0
  119. data/app/assets/javascripts/jquery-ui/keycode.js +51 -0
  120. data/app/assets/javascripts/jquery-ui/labels.js +71 -0
  121. data/app/assets/javascripts/jquery-ui/plugin.js +49 -0
  122. data/app/assets/javascripts/jquery-ui/position.js +513 -0
  123. data/app/assets/javascripts/jquery-ui/safe-active-element.js +46 -0
  124. data/app/assets/javascripts/jquery-ui/safe-blur.js +27 -0
  125. data/app/assets/javascripts/jquery-ui/scroll-parent.js +50 -0
  126. data/app/assets/javascripts/jquery-ui/tabbable.js +41 -0
  127. data/app/assets/javascripts/jquery-ui/unique-id.js +54 -0
  128. data/app/assets/javascripts/jquery-ui/vendor/jquery-color/LICENSE.txt +43 -0
  129. data/app/assets/javascripts/jquery-ui/vendor/jquery-color/jquery.color.js +722 -0
  130. data/app/assets/javascripts/jquery-ui/version.js +20 -0
  131. data/app/assets/javascripts/jquery-ui/widget.js +758 -0
  132. data/app/assets/javascripts/jquery-ui/widgets/accordion.js +627 -0
  133. data/app/assets/javascripts/jquery-ui/widgets/autocomplete.js +685 -0
  134. data/app/assets/javascripts/jquery-ui/widgets/button.js +454 -0
  135. data/app/assets/javascripts/jquery-ui/widgets/checkboxradio.js +289 -0
  136. data/app/assets/javascripts/jquery-ui/widgets/controlgroup.js +304 -0
  137. data/app/assets/javascripts/jquery-ui/widgets/datepicker.js +2243 -0
  138. data/app/assets/javascripts/jquery-ui/widgets/dialog.js +968 -0
  139. data/app/assets/javascripts/jquery-ui/widgets/draggable.js +1268 -0
  140. data/app/assets/javascripts/jquery-ui/widgets/droppable.js +508 -0
  141. data/app/assets/javascripts/jquery-ui/widgets/menu.js +720 -0
  142. data/app/assets/javascripts/jquery-ui/widgets/mouse.js +241 -0
  143. data/app/assets/javascripts/jquery-ui/widgets/progressbar.js +184 -0
  144. data/app/assets/javascripts/jquery-ui/widgets/resizable.js +1225 -0
  145. data/app/assets/javascripts/jquery-ui/widgets/selectable.js +321 -0
  146. data/app/assets/javascripts/jquery-ui/widgets/selectmenu.js +702 -0
  147. data/app/assets/javascripts/jquery-ui/widgets/slider.js +760 -0
  148. data/app/assets/javascripts/jquery-ui/widgets/sortable.js +1622 -0
  149. data/app/assets/javascripts/jquery-ui/widgets/spinner.js +588 -0
  150. data/app/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
  151. data/app/assets/javascripts/jquery-ui/widgets/tooltip.js +533 -0
  152. data/app/assets/javascripts/jquery-ui.js +56 -0
  153. data/app/assets/stylesheets/jquery-ui/accordion.css +26 -0
  154. data/app/assets/stylesheets/jquery-ui/all.css +14 -0
  155. data/app/assets/stylesheets/jquery-ui/autocomplete.css +19 -0
  156. data/app/assets/stylesheets/jquery-ui/base.css +32 -0
  157. data/app/assets/stylesheets/jquery-ui/button.css +85 -0
  158. data/app/assets/stylesheets/jquery-ui/checkboxradio.css +37 -0
  159. data/app/assets/stylesheets/jquery-ui/controlgroup.css +68 -0
  160. data/app/assets/stylesheets/jquery-ui/core.css +100 -0
  161. data/app/assets/stylesheets/jquery-ui/datepicker.css +188 -0
  162. data/app/assets/stylesheets/jquery-ui/dialog.css +104 -0
  163. data/app/assets/stylesheets/jquery-ui/draggable.css +15 -0
  164. data/app/assets/stylesheets/jquery-ui/menu.css +67 -0
  165. data/app/assets/stylesheets/jquery-ui/progressbar.css +31 -0
  166. data/app/assets/stylesheets/jquery-ui/resizable.css +81 -0
  167. data/app/assets/stylesheets/jquery-ui/selectable.css +20 -0
  168. data/app/assets/stylesheets/jquery-ui/selectmenu.css +53 -0
  169. data/app/assets/stylesheets/jquery-ui/slider.css +78 -0
  170. data/app/assets/stylesheets/jquery-ui/sortable.css +15 -0
  171. data/app/assets/stylesheets/jquery-ui/spinner.css +55 -0
  172. data/app/assets/stylesheets/jquery-ui/tabs.css +54 -0
  173. data/app/assets/stylesheets/jquery-ui/theme.css.erb +456 -0
  174. data/app/assets/stylesheets/jquery-ui/tooltip.css +22 -0
  175. data/app/assets/stylesheets/jquery-ui.css +1 -0
  176. data/lib/jquery/ui/rails/engine.rb +8 -0
  177. data/lib/jquery/ui/rails/version.rb +8 -0
  178. data/lib/jquery/ui/rails.rb +2 -0
  179. data/lib/jquery-ui-rails.rb +1 -0
  180. metadata +250 -0
@@ -0,0 +1,975 @@
1
+ //= require jquery-ui/jquery-var-for-color
2
+ //= require jquery-ui/vendor/jquery-color/jquery.color
3
+ //= require jquery-ui/version
4
+
5
+ /*!
6
+ * jQuery UI Effects 1.13.1
7
+ * http://jqueryui.com
8
+ *
9
+ * Copyright jQuery Foundation and other contributors
10
+ * Released under the MIT license.
11
+ * http://jquery.org/license
12
+ */
13
+
14
+ //>>label: Effects Core
15
+ //>>group: Effects
16
+ /* eslint-disable max-len */
17
+ //>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
18
+ /* eslint-enable max-len */
19
+ //>>docs: http://api.jqueryui.com/category/effects-core/
20
+ //>>demos: http://jqueryui.com/effect/
21
+
22
+ ( function( factory ) {
23
+ "use strict";
24
+
25
+ if ( typeof define === "function" && define.amd ) {
26
+
27
+ // AMD. Register as an anonymous module.
28
+ define( [
29
+ "jquery",
30
+ "./jquery-var-for-color",
31
+ "./vendor/jquery-color/jquery.color",
32
+ "./version"
33
+ ], factory );
34
+ } else {
35
+
36
+ // Browser globals
37
+ factory( jQuery );
38
+ }
39
+ } )( function( $ ) {
40
+ "use strict";
41
+
42
+ var dataSpace = "ui-effects-",
43
+ dataSpaceStyle = "ui-effects-style",
44
+ dataSpaceAnimated = "ui-effects-animated";
45
+
46
+ $.effects = {
47
+ effect: {}
48
+ };
49
+
50
+ /******************************************************************************/
51
+ /****************************** CLASS ANIMATIONS ******************************/
52
+ /******************************************************************************/
53
+ ( function() {
54
+
55
+ var classAnimationActions = [ "add", "remove", "toggle" ],
56
+ shorthandStyles = {
57
+ border: 1,
58
+ borderBottom: 1,
59
+ borderColor: 1,
60
+ borderLeft: 1,
61
+ borderRight: 1,
62
+ borderTop: 1,
63
+ borderWidth: 1,
64
+ margin: 1,
65
+ padding: 1
66
+ };
67
+
68
+ $.each(
69
+ [ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ],
70
+ function( _, prop ) {
71
+ $.fx.step[ prop ] = function( fx ) {
72
+ if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {
73
+ jQuery.style( fx.elem, prop, fx.end );
74
+ fx.setAttr = true;
75
+ }
76
+ };
77
+ }
78
+ );
79
+
80
+ function camelCase( string ) {
81
+ return string.replace( /-([\da-z])/gi, function( all, letter ) {
82
+ return letter.toUpperCase();
83
+ } );
84
+ }
85
+
86
+ function getElementStyles( elem ) {
87
+ var key, len,
88
+ style = elem.ownerDocument.defaultView ?
89
+ elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
90
+ elem.currentStyle,
91
+ styles = {};
92
+
93
+ if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
94
+ len = style.length;
95
+ while ( len-- ) {
96
+ key = style[ len ];
97
+ if ( typeof style[ key ] === "string" ) {
98
+ styles[ camelCase( key ) ] = style[ key ];
99
+ }
100
+ }
101
+
102
+ // Support: Opera, IE <9
103
+ } else {
104
+ for ( key in style ) {
105
+ if ( typeof style[ key ] === "string" ) {
106
+ styles[ key ] = style[ key ];
107
+ }
108
+ }
109
+ }
110
+
111
+ return styles;
112
+ }
113
+
114
+ function styleDifference( oldStyle, newStyle ) {
115
+ var diff = {},
116
+ name, value;
117
+
118
+ for ( name in newStyle ) {
119
+ value = newStyle[ name ];
120
+ if ( oldStyle[ name ] !== value ) {
121
+ if ( !shorthandStyles[ name ] ) {
122
+ if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {
123
+ diff[ name ] = value;
124
+ }
125
+ }
126
+ }
127
+ }
128
+
129
+ return diff;
130
+ }
131
+
132
+ // Support: jQuery <1.8
133
+ if ( !$.fn.addBack ) {
134
+ $.fn.addBack = function( selector ) {
135
+ return this.add( selector == null ?
136
+ this.prevObject : this.prevObject.filter( selector )
137
+ );
138
+ };
139
+ }
140
+
141
+ $.effects.animateClass = function( value, duration, easing, callback ) {
142
+ var o = $.speed( duration, easing, callback );
143
+
144
+ return this.queue( function() {
145
+ var animated = $( this ),
146
+ baseClass = animated.attr( "class" ) || "",
147
+ applyClassChange,
148
+ allAnimations = o.children ? animated.find( "*" ).addBack() : animated;
149
+
150
+ // Map the animated objects to store the original styles.
151
+ allAnimations = allAnimations.map( function() {
152
+ var el = $( this );
153
+ return {
154
+ el: el,
155
+ start: getElementStyles( this )
156
+ };
157
+ } );
158
+
159
+ // Apply class change
160
+ applyClassChange = function() {
161
+ $.each( classAnimationActions, function( i, action ) {
162
+ if ( value[ action ] ) {
163
+ animated[ action + "Class" ]( value[ action ] );
164
+ }
165
+ } );
166
+ };
167
+ applyClassChange();
168
+
169
+ // Map all animated objects again - calculate new styles and diff
170
+ allAnimations = allAnimations.map( function() {
171
+ this.end = getElementStyles( this.el[ 0 ] );
172
+ this.diff = styleDifference( this.start, this.end );
173
+ return this;
174
+ } );
175
+
176
+ // Apply original class
177
+ animated.attr( "class", baseClass );
178
+
179
+ // Map all animated objects again - this time collecting a promise
180
+ allAnimations = allAnimations.map( function() {
181
+ var styleInfo = this,
182
+ dfd = $.Deferred(),
183
+ opts = $.extend( {}, o, {
184
+ queue: false,
185
+ complete: function() {
186
+ dfd.resolve( styleInfo );
187
+ }
188
+ } );
189
+
190
+ this.el.animate( this.diff, opts );
191
+ return dfd.promise();
192
+ } );
193
+
194
+ // Once all animations have completed:
195
+ $.when.apply( $, allAnimations.get() ).done( function() {
196
+
197
+ // Set the final class
198
+ applyClassChange();
199
+
200
+ // For each animated element,
201
+ // clear all css properties that were animated
202
+ $.each( arguments, function() {
203
+ var el = this.el;
204
+ $.each( this.diff, function( key ) {
205
+ el.css( key, "" );
206
+ } );
207
+ } );
208
+
209
+ // This is guarnteed to be there if you use jQuery.speed()
210
+ // it also handles dequeuing the next anim...
211
+ o.complete.call( animated[ 0 ] );
212
+ } );
213
+ } );
214
+ };
215
+
216
+ $.fn.extend( {
217
+ addClass: ( function( orig ) {
218
+ return function( classNames, speed, easing, callback ) {
219
+ return speed ?
220
+ $.effects.animateClass.call( this,
221
+ { add: classNames }, speed, easing, callback ) :
222
+ orig.apply( this, arguments );
223
+ };
224
+ } )( $.fn.addClass ),
225
+
226
+ removeClass: ( function( orig ) {
227
+ return function( classNames, speed, easing, callback ) {
228
+ return arguments.length > 1 ?
229
+ $.effects.animateClass.call( this,
230
+ { remove: classNames }, speed, easing, callback ) :
231
+ orig.apply( this, arguments );
232
+ };
233
+ } )( $.fn.removeClass ),
234
+
235
+ toggleClass: ( function( orig ) {
236
+ return function( classNames, force, speed, easing, callback ) {
237
+ if ( typeof force === "boolean" || force === undefined ) {
238
+ if ( !speed ) {
239
+
240
+ // Without speed parameter
241
+ return orig.apply( this, arguments );
242
+ } else {
243
+ return $.effects.animateClass.call( this,
244
+ ( force ? { add: classNames } : { remove: classNames } ),
245
+ speed, easing, callback );
246
+ }
247
+ } else {
248
+
249
+ // Without force parameter
250
+ return $.effects.animateClass.call( this,
251
+ { toggle: classNames }, force, speed, easing );
252
+ }
253
+ };
254
+ } )( $.fn.toggleClass ),
255
+
256
+ switchClass: function( remove, add, speed, easing, callback ) {
257
+ return $.effects.animateClass.call( this, {
258
+ add: add,
259
+ remove: remove
260
+ }, speed, easing, callback );
261
+ }
262
+ } );
263
+
264
+ } )();
265
+
266
+ /******************************************************************************/
267
+ /*********************************** EFFECTS **********************************/
268
+ /******************************************************************************/
269
+
270
+ ( function() {
271
+
272
+ if ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) {
273
+ $.expr.pseudos.animated = ( function( orig ) {
274
+ return function( elem ) {
275
+ return !!$( elem ).data( dataSpaceAnimated ) || orig( elem );
276
+ };
277
+ } )( $.expr.pseudos.animated );
278
+ }
279
+
280
+ if ( $.uiBackCompat !== false ) {
281
+ $.extend( $.effects, {
282
+
283
+ // Saves a set of properties in a data storage
284
+ save: function( element, set ) {
285
+ var i = 0, length = set.length;
286
+ for ( ; i < length; i++ ) {
287
+ if ( set[ i ] !== null ) {
288
+ element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );
289
+ }
290
+ }
291
+ },
292
+
293
+ // Restores a set of previously saved properties from a data storage
294
+ restore: function( element, set ) {
295
+ var val, i = 0, length = set.length;
296
+ for ( ; i < length; i++ ) {
297
+ if ( set[ i ] !== null ) {
298
+ val = element.data( dataSpace + set[ i ] );
299
+ element.css( set[ i ], val );
300
+ }
301
+ }
302
+ },
303
+
304
+ setMode: function( el, mode ) {
305
+ if ( mode === "toggle" ) {
306
+ mode = el.is( ":hidden" ) ? "show" : "hide";
307
+ }
308
+ return mode;
309
+ },
310
+
311
+ // Wraps the element around a wrapper that copies position properties
312
+ createWrapper: function( element ) {
313
+
314
+ // If the element is already wrapped, return it
315
+ if ( element.parent().is( ".ui-effects-wrapper" ) ) {
316
+ return element.parent();
317
+ }
318
+
319
+ // Wrap the element
320
+ var props = {
321
+ width: element.outerWidth( true ),
322
+ height: element.outerHeight( true ),
323
+ "float": element.css( "float" )
324
+ },
325
+ wrapper = $( "<div></div>" )
326
+ .addClass( "ui-effects-wrapper" )
327
+ .css( {
328
+ fontSize: "100%",
329
+ background: "transparent",
330
+ border: "none",
331
+ margin: 0,
332
+ padding: 0
333
+ } ),
334
+
335
+ // Store the size in case width/height are defined in % - Fixes #5245
336
+ size = {
337
+ width: element.width(),
338
+ height: element.height()
339
+ },
340
+ active = document.activeElement;
341
+
342
+ // Support: Firefox
343
+ // Firefox incorrectly exposes anonymous content
344
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=561664
345
+ try {
346
+ // eslint-disable-next-line no-unused-expressions
347
+ active.id;
348
+ } catch ( e ) {
349
+ active = document.body;
350
+ }
351
+
352
+ element.wrap( wrapper );
353
+
354
+ // Fixes #7595 - Elements lose focus when wrapped.
355
+ if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
356
+ $( active ).trigger( "focus" );
357
+ }
358
+
359
+ // Hotfix for jQuery 1.4 since some change in wrap() seems to actually
360
+ // lose the reference to the wrapped element
361
+ wrapper = element.parent();
362
+
363
+ // Transfer positioning properties to the wrapper
364
+ if ( element.css( "position" ) === "static" ) {
365
+ wrapper.css( { position: "relative" } );
366
+ element.css( { position: "relative" } );
367
+ } else {
368
+ $.extend( props, {
369
+ position: element.css( "position" ),
370
+ zIndex: element.css( "z-index" )
371
+ } );
372
+ $.each( [ "top", "left", "bottom", "right" ], function( i, pos ) {
373
+ props[ pos ] = element.css( pos );
374
+ if ( isNaN( parseInt( props[ pos ], 10 ) ) ) {
375
+ props[ pos ] = "auto";
376
+ }
377
+ } );
378
+ element.css( {
379
+ position: "relative",
380
+ top: 0,
381
+ left: 0,
382
+ right: "auto",
383
+ bottom: "auto"
384
+ } );
385
+ }
386
+ element.css( size );
387
+
388
+ return wrapper.css( props ).show();
389
+ },
390
+
391
+ removeWrapper: function( element ) {
392
+ var active = document.activeElement;
393
+
394
+ if ( element.parent().is( ".ui-effects-wrapper" ) ) {
395
+ element.parent().replaceWith( element );
396
+
397
+ // Fixes #7595 - Elements lose focus when wrapped.
398
+ if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
399
+ $( active ).trigger( "focus" );
400
+ }
401
+ }
402
+
403
+ return element;
404
+ }
405
+ } );
406
+ }
407
+
408
+ $.extend( $.effects, {
409
+ version: "1.13.1",
410
+
411
+ define: function( name, mode, effect ) {
412
+ if ( !effect ) {
413
+ effect = mode;
414
+ mode = "effect";
415
+ }
416
+
417
+ $.effects.effect[ name ] = effect;
418
+ $.effects.effect[ name ].mode = mode;
419
+
420
+ return effect;
421
+ },
422
+
423
+ scaledDimensions: function( element, percent, direction ) {
424
+ if ( percent === 0 ) {
425
+ return {
426
+ height: 0,
427
+ width: 0,
428
+ outerHeight: 0,
429
+ outerWidth: 0
430
+ };
431
+ }
432
+
433
+ var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1,
434
+ y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1;
435
+
436
+ return {
437
+ height: element.height() * y,
438
+ width: element.width() * x,
439
+ outerHeight: element.outerHeight() * y,
440
+ outerWidth: element.outerWidth() * x
441
+ };
442
+
443
+ },
444
+
445
+ clipToBox: function( animation ) {
446
+ return {
447
+ width: animation.clip.right - animation.clip.left,
448
+ height: animation.clip.bottom - animation.clip.top,
449
+ left: animation.clip.left,
450
+ top: animation.clip.top
451
+ };
452
+ },
453
+
454
+ // Injects recently queued functions to be first in line (after "inprogress")
455
+ unshift: function( element, queueLength, count ) {
456
+ var queue = element.queue();
457
+
458
+ if ( queueLength > 1 ) {
459
+ queue.splice.apply( queue,
460
+ [ 1, 0 ].concat( queue.splice( queueLength, count ) ) );
461
+ }
462
+ element.dequeue();
463
+ },
464
+
465
+ saveStyle: function( element ) {
466
+ element.data( dataSpaceStyle, element[ 0 ].style.cssText );
467
+ },
468
+
469
+ restoreStyle: function( element ) {
470
+ element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || "";
471
+ element.removeData( dataSpaceStyle );
472
+ },
473
+
474
+ mode: function( element, mode ) {
475
+ var hidden = element.is( ":hidden" );
476
+
477
+ if ( mode === "toggle" ) {
478
+ mode = hidden ? "show" : "hide";
479
+ }
480
+ if ( hidden ? mode === "hide" : mode === "show" ) {
481
+ mode = "none";
482
+ }
483
+ return mode;
484
+ },
485
+
486
+ // Translates a [top,left] array into a baseline value
487
+ getBaseline: function( origin, original ) {
488
+ var y, x;
489
+
490
+ switch ( origin[ 0 ] ) {
491
+ case "top":
492
+ y = 0;
493
+ break;
494
+ case "middle":
495
+ y = 0.5;
496
+ break;
497
+ case "bottom":
498
+ y = 1;
499
+ break;
500
+ default:
501
+ y = origin[ 0 ] / original.height;
502
+ }
503
+
504
+ switch ( origin[ 1 ] ) {
505
+ case "left":
506
+ x = 0;
507
+ break;
508
+ case "center":
509
+ x = 0.5;
510
+ break;
511
+ case "right":
512
+ x = 1;
513
+ break;
514
+ default:
515
+ x = origin[ 1 ] / original.width;
516
+ }
517
+
518
+ return {
519
+ x: x,
520
+ y: y
521
+ };
522
+ },
523
+
524
+ // Creates a placeholder element so that the original element can be made absolute
525
+ createPlaceholder: function( element ) {
526
+ var placeholder,
527
+ cssPosition = element.css( "position" ),
528
+ position = element.position();
529
+
530
+ // Lock in margins first to account for form elements, which
531
+ // will change margin if you explicitly set height
532
+ // see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380
533
+ // Support: Safari
534
+ element.css( {
535
+ marginTop: element.css( "marginTop" ),
536
+ marginBottom: element.css( "marginBottom" ),
537
+ marginLeft: element.css( "marginLeft" ),
538
+ marginRight: element.css( "marginRight" )
539
+ } )
540
+ .outerWidth( element.outerWidth() )
541
+ .outerHeight( element.outerHeight() );
542
+
543
+ if ( /^(static|relative)/.test( cssPosition ) ) {
544
+ cssPosition = "absolute";
545
+
546
+ placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( {
547
+
548
+ // Convert inline to inline block to account for inline elements
549
+ // that turn to inline block based on content (like img)
550
+ display: /^(inline|ruby)/.test( element.css( "display" ) ) ?
551
+ "inline-block" :
552
+ "block",
553
+ visibility: "hidden",
554
+
555
+ // Margins need to be set to account for margin collapse
556
+ marginTop: element.css( "marginTop" ),
557
+ marginBottom: element.css( "marginBottom" ),
558
+ marginLeft: element.css( "marginLeft" ),
559
+ marginRight: element.css( "marginRight" ),
560
+ "float": element.css( "float" )
561
+ } )
562
+ .outerWidth( element.outerWidth() )
563
+ .outerHeight( element.outerHeight() )
564
+ .addClass( "ui-effects-placeholder" );
565
+
566
+ element.data( dataSpace + "placeholder", placeholder );
567
+ }
568
+
569
+ element.css( {
570
+ position: cssPosition,
571
+ left: position.left,
572
+ top: position.top
573
+ } );
574
+
575
+ return placeholder;
576
+ },
577
+
578
+ removePlaceholder: function( element ) {
579
+ var dataKey = dataSpace + "placeholder",
580
+ placeholder = element.data( dataKey );
581
+
582
+ if ( placeholder ) {
583
+ placeholder.remove();
584
+ element.removeData( dataKey );
585
+ }
586
+ },
587
+
588
+ // Removes a placeholder if it exists and restores
589
+ // properties that were modified during placeholder creation
590
+ cleanUp: function( element ) {
591
+ $.effects.restoreStyle( element );
592
+ $.effects.removePlaceholder( element );
593
+ },
594
+
595
+ setTransition: function( element, list, factor, value ) {
596
+ value = value || {};
597
+ $.each( list, function( i, x ) {
598
+ var unit = element.cssUnit( x );
599
+ if ( unit[ 0 ] > 0 ) {
600
+ value[ x ] = unit[ 0 ] * factor + unit[ 1 ];
601
+ }
602
+ } );
603
+ return value;
604
+ }
605
+ } );
606
+
607
+ // Return an effect options object for the given parameters:
608
+ function _normalizeArguments( effect, options, speed, callback ) {
609
+
610
+ // Allow passing all options as the first parameter
611
+ if ( $.isPlainObject( effect ) ) {
612
+ options = effect;
613
+ effect = effect.effect;
614
+ }
615
+
616
+ // Convert to an object
617
+ effect = { effect: effect };
618
+
619
+ // Catch (effect, null, ...)
620
+ if ( options == null ) {
621
+ options = {};
622
+ }
623
+
624
+ // Catch (effect, callback)
625
+ if ( typeof options === "function" ) {
626
+ callback = options;
627
+ speed = null;
628
+ options = {};
629
+ }
630
+
631
+ // Catch (effect, speed, ?)
632
+ if ( typeof options === "number" || $.fx.speeds[ options ] ) {
633
+ callback = speed;
634
+ speed = options;
635
+ options = {};
636
+ }
637
+
638
+ // Catch (effect, options, callback)
639
+ if ( typeof speed === "function" ) {
640
+ callback = speed;
641
+ speed = null;
642
+ }
643
+
644
+ // Add options to effect
645
+ if ( options ) {
646
+ $.extend( effect, options );
647
+ }
648
+
649
+ speed = speed || options.duration;
650
+ effect.duration = $.fx.off ? 0 :
651
+ typeof speed === "number" ? speed :
652
+ speed in $.fx.speeds ? $.fx.speeds[ speed ] :
653
+ $.fx.speeds._default;
654
+
655
+ effect.complete = callback || options.complete;
656
+
657
+ return effect;
658
+ }
659
+
660
+ function standardAnimationOption( option ) {
661
+
662
+ // Valid standard speeds (nothing, number, named speed)
663
+ if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) {
664
+ return true;
665
+ }
666
+
667
+ // Invalid strings - treat as "normal" speed
668
+ if ( typeof option === "string" && !$.effects.effect[ option ] ) {
669
+ return true;
670
+ }
671
+
672
+ // Complete callback
673
+ if ( typeof option === "function" ) {
674
+ return true;
675
+ }
676
+
677
+ // Options hash (but not naming an effect)
678
+ if ( typeof option === "object" && !option.effect ) {
679
+ return true;
680
+ }
681
+
682
+ // Didn't match any standard API
683
+ return false;
684
+ }
685
+
686
+ $.fn.extend( {
687
+ effect: function( /* effect, options, speed, callback */ ) {
688
+ var args = _normalizeArguments.apply( this, arguments ),
689
+ effectMethod = $.effects.effect[ args.effect ],
690
+ defaultMode = effectMethod.mode,
691
+ queue = args.queue,
692
+ queueName = queue || "fx",
693
+ complete = args.complete,
694
+ mode = args.mode,
695
+ modes = [],
696
+ prefilter = function( next ) {
697
+ var el = $( this ),
698
+ normalizedMode = $.effects.mode( el, mode ) || defaultMode;
699
+
700
+ // Sentinel for duck-punching the :animated pseudo-selector
701
+ el.data( dataSpaceAnimated, true );
702
+
703
+ // Save effect mode for later use,
704
+ // we can't just call $.effects.mode again later,
705
+ // as the .show() below destroys the initial state
706
+ modes.push( normalizedMode );
707
+
708
+ // See $.uiBackCompat inside of run() for removal of defaultMode in 1.14
709
+ if ( defaultMode && ( normalizedMode === "show" ||
710
+ ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) {
711
+ el.show();
712
+ }
713
+
714
+ if ( !defaultMode || normalizedMode !== "none" ) {
715
+ $.effects.saveStyle( el );
716
+ }
717
+
718
+ if ( typeof next === "function" ) {
719
+ next();
720
+ }
721
+ };
722
+
723
+ if ( $.fx.off || !effectMethod ) {
724
+
725
+ // Delegate to the original method (e.g., .show()) if possible
726
+ if ( mode ) {
727
+ return this[ mode ]( args.duration, complete );
728
+ } else {
729
+ return this.each( function() {
730
+ if ( complete ) {
731
+ complete.call( this );
732
+ }
733
+ } );
734
+ }
735
+ }
736
+
737
+ function run( next ) {
738
+ var elem = $( this );
739
+
740
+ function cleanup() {
741
+ elem.removeData( dataSpaceAnimated );
742
+
743
+ $.effects.cleanUp( elem );
744
+
745
+ if ( args.mode === "hide" ) {
746
+ elem.hide();
747
+ }
748
+
749
+ done();
750
+ }
751
+
752
+ function done() {
753
+ if ( typeof complete === "function" ) {
754
+ complete.call( elem[ 0 ] );
755
+ }
756
+
757
+ if ( typeof next === "function" ) {
758
+ next();
759
+ }
760
+ }
761
+
762
+ // Override mode option on a per element basis,
763
+ // as toggle can be either show or hide depending on element state
764
+ args.mode = modes.shift();
765
+
766
+ if ( $.uiBackCompat !== false && !defaultMode ) {
767
+ if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {
768
+
769
+ // Call the core method to track "olddisplay" properly
770
+ elem[ mode ]();
771
+ done();
772
+ } else {
773
+ effectMethod.call( elem[ 0 ], args, done );
774
+ }
775
+ } else {
776
+ if ( args.mode === "none" ) {
777
+
778
+ // Call the core method to track "olddisplay" properly
779
+ elem[ mode ]();
780
+ done();
781
+ } else {
782
+ effectMethod.call( elem[ 0 ], args, cleanup );
783
+ }
784
+ }
785
+ }
786
+
787
+ // Run prefilter on all elements first to ensure that
788
+ // any showing or hiding happens before placeholder creation,
789
+ // which ensures that any layout changes are correctly captured.
790
+ return queue === false ?
791
+ this.each( prefilter ).each( run ) :
792
+ this.queue( queueName, prefilter ).queue( queueName, run );
793
+ },
794
+
795
+ show: ( function( orig ) {
796
+ return function( option ) {
797
+ if ( standardAnimationOption( option ) ) {
798
+ return orig.apply( this, arguments );
799
+ } else {
800
+ var args = _normalizeArguments.apply( this, arguments );
801
+ args.mode = "show";
802
+ return this.effect.call( this, args );
803
+ }
804
+ };
805
+ } )( $.fn.show ),
806
+
807
+ hide: ( function( orig ) {
808
+ return function( option ) {
809
+ if ( standardAnimationOption( option ) ) {
810
+ return orig.apply( this, arguments );
811
+ } else {
812
+ var args = _normalizeArguments.apply( this, arguments );
813
+ args.mode = "hide";
814
+ return this.effect.call( this, args );
815
+ }
816
+ };
817
+ } )( $.fn.hide ),
818
+
819
+ toggle: ( function( orig ) {
820
+ return function( option ) {
821
+ if ( standardAnimationOption( option ) || typeof option === "boolean" ) {
822
+ return orig.apply( this, arguments );
823
+ } else {
824
+ var args = _normalizeArguments.apply( this, arguments );
825
+ args.mode = "toggle";
826
+ return this.effect.call( this, args );
827
+ }
828
+ };
829
+ } )( $.fn.toggle ),
830
+
831
+ cssUnit: function( key ) {
832
+ var style = this.css( key ),
833
+ val = [];
834
+
835
+ $.each( [ "em", "px", "%", "pt" ], function( i, unit ) {
836
+ if ( style.indexOf( unit ) > 0 ) {
837
+ val = [ parseFloat( style ), unit ];
838
+ }
839
+ } );
840
+ return val;
841
+ },
842
+
843
+ cssClip: function( clipObj ) {
844
+ if ( clipObj ) {
845
+ return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " +
846
+ clipObj.bottom + "px " + clipObj.left + "px)" );
847
+ }
848
+ return parseClip( this.css( "clip" ), this );
849
+ },
850
+
851
+ transfer: function( options, done ) {
852
+ var element = $( this ),
853
+ target = $( options.to ),
854
+ targetFixed = target.css( "position" ) === "fixed",
855
+ body = $( "body" ),
856
+ fixTop = targetFixed ? body.scrollTop() : 0,
857
+ fixLeft = targetFixed ? body.scrollLeft() : 0,
858
+ endPosition = target.offset(),
859
+ animation = {
860
+ top: endPosition.top - fixTop,
861
+ left: endPosition.left - fixLeft,
862
+ height: target.innerHeight(),
863
+ width: target.innerWidth()
864
+ },
865
+ startPosition = element.offset(),
866
+ transfer = $( "<div class='ui-effects-transfer'></div>" );
867
+
868
+ transfer
869
+ .appendTo( "body" )
870
+ .addClass( options.className )
871
+ .css( {
872
+ top: startPosition.top - fixTop,
873
+ left: startPosition.left - fixLeft,
874
+ height: element.innerHeight(),
875
+ width: element.innerWidth(),
876
+ position: targetFixed ? "fixed" : "absolute"
877
+ } )
878
+ .animate( animation, options.duration, options.easing, function() {
879
+ transfer.remove();
880
+ if ( typeof done === "function" ) {
881
+ done();
882
+ }
883
+ } );
884
+ }
885
+ } );
886
+
887
+ function parseClip( str, element ) {
888
+ var outerWidth = element.outerWidth(),
889
+ outerHeight = element.outerHeight(),
890
+ clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,
891
+ values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ];
892
+
893
+ return {
894
+ top: parseFloat( values[ 1 ] ) || 0,
895
+ right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ),
896
+ bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ),
897
+ left: parseFloat( values[ 4 ] ) || 0
898
+ };
899
+ }
900
+
901
+ $.fx.step.clip = function( fx ) {
902
+ if ( !fx.clipInit ) {
903
+ fx.start = $( fx.elem ).cssClip();
904
+ if ( typeof fx.end === "string" ) {
905
+ fx.end = parseClip( fx.end, fx.elem );
906
+ }
907
+ fx.clipInit = true;
908
+ }
909
+
910
+ $( fx.elem ).cssClip( {
911
+ top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,
912
+ right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,
913
+ bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,
914
+ left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left
915
+ } );
916
+ };
917
+
918
+ } )();
919
+
920
+ /******************************************************************************/
921
+ /*********************************** EASING ***********************************/
922
+ /******************************************************************************/
923
+
924
+ ( function() {
925
+
926
+ // Based on easing equations from Robert Penner (http://www.robertpenner.com/easing)
927
+
928
+ var baseEasings = {};
929
+
930
+ $.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
931
+ baseEasings[ name ] = function( p ) {
932
+ return Math.pow( p, i + 2 );
933
+ };
934
+ } );
935
+
936
+ $.extend( baseEasings, {
937
+ Sine: function( p ) {
938
+ return 1 - Math.cos( p * Math.PI / 2 );
939
+ },
940
+ Circ: function( p ) {
941
+ return 1 - Math.sqrt( 1 - p * p );
942
+ },
943
+ Elastic: function( p ) {
944
+ return p === 0 || p === 1 ? p :
945
+ -Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );
946
+ },
947
+ Back: function( p ) {
948
+ return p * p * ( 3 * p - 2 );
949
+ },
950
+ Bounce: function( p ) {
951
+ var pow2,
952
+ bounce = 4;
953
+
954
+ while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
955
+ return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
956
+ }
957
+ } );
958
+
959
+ $.each( baseEasings, function( name, easeIn ) {
960
+ $.easing[ "easeIn" + name ] = easeIn;
961
+ $.easing[ "easeOut" + name ] = function( p ) {
962
+ return 1 - easeIn( 1 - p );
963
+ };
964
+ $.easing[ "easeInOut" + name ] = function( p ) {
965
+ return p < 0.5 ?
966
+ easeIn( p * 2 ) / 2 :
967
+ 1 - easeIn( p * -2 + 2 ) / 2;
968
+ };
969
+ } );
970
+
971
+ } )();
972
+
973
+ return $.effects;
974
+
975
+ } );