jquery-ui-rails-dox-fork 7.0.2

Sign up to get free protection for your applications and to get access to all the features.
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/CONTRIBUTING.txt +30 -0
  6. data/Gemfile +3 -0
  7. data/History.md +172 -0
  8. data/License.txt +2 -0
  9. data/README.md +311 -0
  10. data/Rakefile +263 -0
  11. data/VERSIONS.md +41 -0
  12. data/app/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  13. data/app/assets/images/jquery-ui/ui-icons_444444_256x240.png +0 -0
  14. data/app/assets/images/jquery-ui/ui-icons_555555_256x240.png +0 -0
  15. data/app/assets/images/jquery-ui/ui-icons_777620_256x240.png +0 -0
  16. data/app/assets/images/jquery-ui/ui-icons_777777_256x240.png +0 -0
  17. data/app/assets/images/jquery-ui/ui-icons_cc0000_256x240.png +0 -0
  18. data/app/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  19. data/app/assets/javascripts/jquery-ui/core.js +15 -0
  20. data/app/assets/javascripts/jquery-ui/data.js +45 -0
  21. data/app/assets/javascripts/jquery-ui/disable-selection.js +51 -0
  22. data/app/assets/javascripts/jquery-ui/effect.all.js +15 -0
  23. data/app/assets/javascripts/jquery-ui/effect.js +975 -0
  24. data/app/assets/javascripts/jquery-ui/effects/effect-blind.js +76 -0
  25. data/app/assets/javascripts/jquery-ui/effects/effect-bounce.js +116 -0
  26. data/app/assets/javascripts/jquery-ui/effects/effect-clip.js +71 -0
  27. data/app/assets/javascripts/jquery-ui/effects/effect-drop.js +75 -0
  28. data/app/assets/javascripts/jquery-ui/effects/effect-explode.js +117 -0
  29. data/app/assets/javascripts/jquery-ui/effects/effect-fade.js +53 -0
  30. data/app/assets/javascripts/jquery-ui/effects/effect-fold.js +95 -0
  31. data/app/assets/javascripts/jquery-ui/effects/effect-highlight.js +63 -0
  32. data/app/assets/javascripts/jquery-ui/effects/effect-puff.js +49 -0
  33. data/app/assets/javascripts/jquery-ui/effects/effect-pulsate.js +70 -0
  34. data/app/assets/javascripts/jquery-ui/effects/effect-scale.js +63 -0
  35. data/app/assets/javascripts/jquery-ui/effects/effect-shake.js +80 -0
  36. data/app/assets/javascripts/jquery-ui/effects/effect-size.js +199 -0
  37. data/app/assets/javascripts/jquery-ui/effects/effect-slide.js +82 -0
  38. data/app/assets/javascripts/jquery-ui/effects/effect-transfer.js +46 -0
  39. data/app/assets/javascripts/jquery-ui/focusable.js +89 -0
  40. data/app/assets/javascripts/jquery-ui/form-reset-mixin.js +83 -0
  41. data/app/assets/javascripts/jquery-ui/form.js +25 -0
  42. data/app/assets/javascripts/jquery-ui/i18n/datepicker-af.js +40 -0
  43. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ar-DZ.js +42 -0
  44. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ar.js +42 -0
  45. data/app/assets/javascripts/jquery-ui/i18n/datepicker-az.js +40 -0
  46. data/app/assets/javascripts/jquery-ui/i18n/datepicker-be.js +40 -0
  47. data/app/assets/javascripts/jquery-ui/i18n/datepicker-bg.js +41 -0
  48. data/app/assets/javascripts/jquery-ui/i18n/datepicker-bs.js +40 -0
  49. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ca.js +40 -0
  50. data/app/assets/javascripts/jquery-ui/i18n/datepicker-cs.js +40 -0
  51. data/app/assets/javascripts/jquery-ui/i18n/datepicker-cy-GB.js +48 -0
  52. data/app/assets/javascripts/jquery-ui/i18n/datepicker-da.js +40 -0
  53. data/app/assets/javascripts/jquery-ui/i18n/datepicker-de-AT.js +41 -0
  54. data/app/assets/javascripts/jquery-ui/i18n/datepicker-de.js +40 -0
  55. data/app/assets/javascripts/jquery-ui/i18n/datepicker-el.js +40 -0
  56. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-AU.js +40 -0
  57. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-GB.js +40 -0
  58. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-NZ.js +40 -0
  59. data/app/assets/javascripts/jquery-ui/i18n/datepicker-eo.js +40 -0
  60. data/app/assets/javascripts/jquery-ui/i18n/datepicker-es.js +40 -0
  61. data/app/assets/javascripts/jquery-ui/i18n/datepicker-et.js +48 -0
  62. data/app/assets/javascripts/jquery-ui/i18n/datepicker-eu.js +39 -0
  63. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fa.js +76 -0
  64. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fi.js +40 -0
  65. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fo.js +48 -0
  66. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr-CA.js +40 -0
  67. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr-CH.js +40 -0
  68. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr.js +42 -0
  69. data/app/assets/javascripts/jquery-ui/i18n/datepicker-gl.js +40 -0
  70. data/app/assets/javascripts/jquery-ui/i18n/datepicker-he.js +40 -0
  71. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hi.js +40 -0
  72. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hr.js +40 -0
  73. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hu.js +39 -0
  74. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hy.js +40 -0
  75. data/app/assets/javascripts/jquery-ui/i18n/datepicker-id.js +41 -0
  76. data/app/assets/javascripts/jquery-ui/i18n/datepicker-is.js +48 -0
  77. data/app/assets/javascripts/jquery-ui/i18n/datepicker-it-CH.js +40 -0
  78. data/app/assets/javascripts/jquery-ui/i18n/datepicker-it.js +40 -0
  79. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ja.js +40 -0
  80. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ka.js +51 -0
  81. data/app/assets/javascripts/jquery-ui/i18n/datepicker-kk.js +40 -0
  82. data/app/assets/javascripts/jquery-ui/i18n/datepicker-km.js +40 -0
  83. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ko.js +40 -0
  84. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ky.js +41 -0
  85. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lb.js +48 -0
  86. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lt.js +48 -0
  87. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lv.js +48 -0
  88. data/app/assets/javascripts/jquery-ui/i18n/datepicker-mk.js +40 -0
  89. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ml.js +40 -0
  90. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ms.js +40 -0
  91. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nb.js +52 -0
  92. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nl-BE.js +40 -0
  93. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nl.js +40 -0
  94. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nn.js +52 -0
  95. data/app/assets/javascripts/jquery-ui/i18n/datepicker-no.js +53 -0
  96. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pl.js +40 -0
  97. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pt-BR.js +48 -0
  98. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pt.js +47 -0
  99. data/app/assets/javascripts/jquery-ui/i18n/datepicker-rm.js +64 -0
  100. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ro.js +43 -0
  101. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ru.js +40 -0
  102. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sk.js +40 -0
  103. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sl.js +41 -0
  104. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sq.js +40 -0
  105. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sr-SR.js +40 -0
  106. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sr.js +40 -0
  107. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sv.js +40 -0
  108. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ta.js +56 -0
  109. data/app/assets/javascripts/jquery-ui/i18n/datepicker-th.js +40 -0
  110. data/app/assets/javascripts/jquery-ui/i18n/datepicker-tj.js +40 -0
  111. data/app/assets/javascripts/jquery-ui/i18n/datepicker-tr.js +40 -0
  112. data/app/assets/javascripts/jquery-ui/i18n/datepicker-uk.js +41 -0
  113. data/app/assets/javascripts/jquery-ui/i18n/datepicker-vi.js +40 -0
  114. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-CN.js +40 -0
  115. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-HK.js +40 -0
  116. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-TW.js +40 -0
  117. data/app/assets/javascripts/jquery-ui/ie.js +20 -0
  118. data/app/assets/javascripts/jquery-ui/jquery-patch.js +91 -0
  119. data/app/assets/javascripts/jquery-ui/jquery-var-for-color.js +24 -0
  120. data/app/assets/javascripts/jquery-ui/keycode.js +51 -0
  121. data/app/assets/javascripts/jquery-ui/labels.js +71 -0
  122. data/app/assets/javascripts/jquery-ui/plugin.js +49 -0
  123. data/app/assets/javascripts/jquery-ui/position.js +513 -0
  124. data/app/assets/javascripts/jquery-ui/safe-active-element.js +46 -0
  125. data/app/assets/javascripts/jquery-ui/safe-blur.js +27 -0
  126. data/app/assets/javascripts/jquery-ui/scroll-parent.js +50 -0
  127. data/app/assets/javascripts/jquery-ui/tabbable.js +41 -0
  128. data/app/assets/javascripts/jquery-ui/unique-id.js +54 -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 +294 -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 +57 -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.2
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.2",
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
+ } );