postrest 0.0.3 → 0.0.5

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 (234) hide show
  1. checksums.yaml +4 -4
  2. data/lib/app.rb +1 -1
  3. data/public/index.htm +116 -0
  4. data/public/node_modules/pivottable/CONTRIBUTING.md +19 -0
  5. data/public/node_modules/pivottable/LICENSE.md +9 -0
  6. data/public/node_modules/pivottable/ReadMe.md +155 -0
  7. data/public/node_modules/pivottable/bower.json +31 -0
  8. data/public/node_modules/pivottable/c3_renderers.coffee +155 -0
  9. data/public/node_modules/pivottable/d3_renderers.coffee +73 -0
  10. data/public/node_modules/pivottable/dist/c3_renderers.js +256 -0
  11. data/public/node_modules/pivottable/dist/c3_renderers.js.map +1 -0
  12. data/public/node_modules/pivottable/dist/c3_renderers.min.js +2 -0
  13. data/public/node_modules/pivottable/dist/c3_renderers.min.js.map +1 -0
  14. data/public/node_modules/pivottable/dist/d3_renderers.js +105 -0
  15. data/public/node_modules/pivottable/dist/d3_renderers.js.map +1 -0
  16. data/public/node_modules/pivottable/dist/d3_renderers.min.js +2 -0
  17. data/public/node_modules/pivottable/dist/d3_renderers.min.js.map +1 -0
  18. data/public/node_modules/pivottable/dist/export_renderers.js +80 -0
  19. data/public/node_modules/pivottable/dist/export_renderers.js.map +1 -0
  20. data/public/node_modules/pivottable/dist/export_renderers.min.js +2 -0
  21. data/public/node_modules/pivottable/dist/export_renderers.min.js.map +1 -0
  22. data/public/node_modules/pivottable/dist/gchart_renderers.js +183 -0
  23. data/public/node_modules/pivottable/dist/gchart_renderers.js.map +1 -0
  24. data/public/node_modules/pivottable/dist/gchart_renderers.min.js +2 -0
  25. data/public/node_modules/pivottable/dist/gchart_renderers.min.js.map +1 -0
  26. data/public/node_modules/pivottable/dist/pivot.css +97 -0
  27. data/public/node_modules/pivottable/dist/pivot.es.js +78 -0
  28. data/public/node_modules/pivottable/dist/pivot.es.js.map +1 -0
  29. data/public/node_modules/pivottable/dist/pivot.es.min.js +2 -0
  30. data/public/node_modules/pivottable/dist/pivot.es.min.js.map +1 -0
  31. data/public/node_modules/pivottable/dist/pivot.fr.js +78 -0
  32. data/public/node_modules/pivottable/dist/pivot.fr.js.map +1 -0
  33. data/public/node_modules/pivottable/dist/pivot.fr.min.js +2 -0
  34. data/public/node_modules/pivottable/dist/pivot.fr.min.js.map +1 -0
  35. data/public/node_modules/pivottable/dist/pivot.js +1511 -0
  36. data/public/node_modules/pivottable/dist/pivot.js.map +1 -0
  37. data/public/node_modules/pivottable/dist/pivot.min.css +1 -0
  38. data/public/node_modules/pivottable/dist/pivot.min.js +2 -0
  39. data/public/node_modules/pivottable/dist/pivot.min.js.map +1 -0
  40. data/public/node_modules/pivottable/dist/pivot.nl.js +78 -0
  41. data/public/node_modules/pivottable/dist/pivot.nl.js.map +1 -0
  42. data/public/node_modules/pivottable/dist/pivot.nl.min.js +2 -0
  43. data/public/node_modules/pivottable/dist/pivot.nl.min.js.map +1 -0
  44. data/public/node_modules/pivottable/dist/pivot.pt.js +104 -0
  45. data/public/node_modules/pivottable/dist/pivot.pt.js.map +1 -0
  46. data/public/node_modules/pivottable/dist/pivot.pt.min.js +2 -0
  47. data/public/node_modules/pivottable/dist/pivot.pt.min.js.map +1 -0
  48. data/public/node_modules/pivottable/dist/pivot.ru.js +78 -0
  49. data/public/node_modules/pivottable/dist/pivot.ru.js.map +1 -0
  50. data/public/node_modules/pivottable/dist/pivot.ru.min.js +2 -0
  51. data/public/node_modules/pivottable/dist/pivot.ru.min.js.map +1 -0
  52. data/public/node_modules/pivottable/dist/pivot.tr.js +104 -0
  53. data/public/node_modules/pivottable/dist/pivot.tr.js.map +1 -0
  54. data/public/node_modules/pivottable/dist/pivot.tr.min.js +2 -0
  55. data/public/node_modules/pivottable/dist/pivot.tr.min.js.map +1 -0
  56. data/public/node_modules/pivottable/dist/tips_data.min.js +247 -0
  57. data/public/node_modules/pivottable/examples/c3.html +61 -0
  58. data/public/node_modules/pivottable/examples/d3.html +49 -0
  59. data/public/node_modules/pivottable/examples/fully_loaded.html +80 -0
  60. data/public/node_modules/pivottable/examples/gchart.html +53 -0
  61. data/public/node_modules/pivottable/examples/gh-fork-ribbon.css +140 -0
  62. data/public/node_modules/pivottable/examples/gh-fork-ribbon.ie.css +78 -0
  63. data/public/node_modules/pivottable/examples/index.html +85 -0
  64. data/public/node_modules/pivottable/examples/local.html +74 -0
  65. data/public/node_modules/pivottable/examples/montreal_2014.csv +366 -0
  66. data/public/node_modules/pivottable/examples/montreal_2014.html +106 -0
  67. data/public/node_modules/pivottable/examples/mps.csv +309 -0
  68. data/public/node_modules/pivottable/examples/mps.html +45 -0
  69. data/public/node_modules/pivottable/examples/mps.json +1 -0
  70. data/public/node_modules/pivottable/examples/mps_agg.html +44 -0
  71. data/public/node_modules/pivottable/examples/mps_csv.html +42 -0
  72. data/public/node_modules/pivottable/examples/mps_export.html +44 -0
  73. data/public/node_modules/pivottable/examples/mps_fr.html +40 -0
  74. data/public/node_modules/pivottable/examples/mps_prepop.html +42 -0
  75. data/public/node_modules/pivottable/examples/onrefresh.html +52 -0
  76. data/public/node_modules/pivottable/examples/rcsvs.html +87 -0
  77. data/public/node_modules/pivottable/examples/scatter.html +53 -0
  78. data/public/node_modules/pivottable/examples/show_code.js +17 -0
  79. data/public/node_modules/pivottable/examples/simple.html +41 -0
  80. data/public/node_modules/pivottable/examples/simple_agg.html +51 -0
  81. data/public/node_modules/pivottable/examples/simple_function.html +57 -0
  82. data/public/node_modules/pivottable/examples/simple_ui.html +42 -0
  83. data/public/node_modules/pivottable/examples/simple_ui_from_table.html +60 -0
  84. data/public/node_modules/pivottable/export_renderers.coffee +57 -0
  85. data/public/node_modules/pivottable/gchart_renderers.coffee +111 -0
  86. data/public/node_modules/pivottable/gulpFile.js +95 -0
  87. data/public/node_modules/pivottable/images/animation.gif +0 -0
  88. data/public/node_modules/pivottable/images/filters.png +0 -0
  89. data/public/node_modules/pivottable/images/gender_age_bins.png +0 -0
  90. data/public/node_modules/pivottable/images/gender_imbalance.png +0 -0
  91. data/public/node_modules/pivottable/images/gender_imbalance_instructions.png +0 -0
  92. data/public/node_modules/pivottable/images/initial_state.png +0 -0
  93. data/public/node_modules/pivottable/images/province_x_party_heatmap.png +0 -0
  94. data/public/node_modules/pivottable/images/province_x_party_heatmap_instructions.png +0 -0
  95. data/public/node_modules/pivottable/images/simple.png +0 -0
  96. data/public/node_modules/pivottable/images/simple_ui.png +0 -0
  97. data/public/node_modules/pivottable/images/whats_what.png +0 -0
  98. data/public/node_modules/pivottable/index.html +14 -0
  99. data/public/node_modules/pivottable/node_modules/jquery/AUTHORS.txt +278 -0
  100. data/public/node_modules/pivottable/node_modules/jquery/LICENSE.txt +36 -0
  101. data/public/node_modules/pivottable/node_modules/jquery/README.md +65 -0
  102. data/public/node_modules/pivottable/node_modules/jquery/bower.json +14 -0
  103. data/public/node_modules/pivottable/node_modules/jquery/dist/jquery.js +9842 -0
  104. data/public/node_modules/pivottable/node_modules/jquery/dist/jquery.min.js +4 -0
  105. data/public/node_modules/pivottable/node_modules/jquery/dist/jquery.min.map +1 -0
  106. data/public/node_modules/pivottable/node_modules/jquery/dist/jquery.slim.js +7877 -0
  107. data/public/node_modules/pivottable/node_modules/jquery/dist/jquery.slim.min.js +4 -0
  108. data/public/node_modules/pivottable/node_modules/jquery/dist/jquery.slim.min.map +1 -0
  109. data/public/node_modules/pivottable/node_modules/jquery/package.json +122 -0
  110. data/public/node_modules/pivottable/node_modules/jquery/sizzle/LICENSE.txt +36 -0
  111. data/public/node_modules/pivottable/node_modules/jquery/sizzle/dist/sizzle.js +2143 -0
  112. data/public/node_modules/pivottable/node_modules/jquery/sizzle/dist/sizzle.min.js +3 -0
  113. data/public/node_modules/pivottable/node_modules/jquery/sizzle/dist/sizzle.min.map +1 -0
  114. data/public/node_modules/pivottable/node_modules/jquery/src/ajax.js +845 -0
  115. data/public/node_modules/pivottable/node_modules/jquery/src/ajax/jsonp.js +100 -0
  116. data/public/node_modules/pivottable/node_modules/jquery/src/ajax/load.js +83 -0
  117. data/public/node_modules/pivottable/node_modules/jquery/src/ajax/parseJSON.js +13 -0
  118. data/public/node_modules/pivottable/node_modules/jquery/src/ajax/parseXML.js +27 -0
  119. data/public/node_modules/pivottable/node_modules/jquery/src/ajax/script.js +68 -0
  120. data/public/node_modules/pivottable/node_modules/jquery/src/ajax/var/location.js +3 -0
  121. data/public/node_modules/pivottable/node_modules/jquery/src/ajax/var/nonce.js +5 -0
  122. data/public/node_modules/pivottable/node_modules/jquery/src/ajax/var/rquery.js +3 -0
  123. data/public/node_modules/pivottable/node_modules/jquery/src/ajax/xhr.js +167 -0
  124. data/public/node_modules/pivottable/node_modules/jquery/src/attributes.js +11 -0
  125. data/public/node_modules/pivottable/node_modules/jquery/src/attributes/attr.js +142 -0
  126. data/public/node_modules/pivottable/node_modules/jquery/src/attributes/classes.js +177 -0
  127. data/public/node_modules/pivottable/node_modules/jquery/src/attributes/prop.js +125 -0
  128. data/public/node_modules/pivottable/node_modules/jquery/src/attributes/support.js +36 -0
  129. data/public/node_modules/pivottable/node_modules/jquery/src/attributes/val.js +177 -0
  130. data/public/node_modules/pivottable/node_modules/jquery/src/callbacks.js +232 -0
  131. data/public/node_modules/pivottable/node_modules/jquery/src/core.js +494 -0
  132. data/public/node_modules/pivottable/node_modules/jquery/src/core/DOMEval.js +14 -0
  133. data/public/node_modules/pivottable/node_modules/jquery/src/core/access.js +65 -0
  134. data/public/node_modules/pivottable/node_modules/jquery/src/core/init.js +134 -0
  135. data/public/node_modules/pivottable/node_modules/jquery/src/core/parseHTML.js +41 -0
  136. data/public/node_modules/pivottable/node_modules/jquery/src/core/ready.js +103 -0
  137. data/public/node_modules/pivottable/node_modules/jquery/src/core/support.js +18 -0
  138. data/public/node_modules/pivottable/node_modules/jquery/src/core/var/rsingleTag.js +5 -0
  139. data/public/node_modules/pivottable/node_modules/jquery/src/css.js +515 -0
  140. data/public/node_modules/pivottable/node_modules/jquery/src/css/addGetHookIf.js +24 -0
  141. data/public/node_modules/pivottable/node_modules/jquery/src/css/adjustCSS.js +65 -0
  142. data/public/node_modules/pivottable/node_modules/jquery/src/css/curCSS.js +60 -0
  143. data/public/node_modules/pivottable/node_modules/jquery/src/css/defaultDisplay.js +72 -0
  144. data/public/node_modules/pivottable/node_modules/jquery/src/css/hiddenVisibleSelectors.js +18 -0
  145. data/public/node_modules/pivottable/node_modules/jquery/src/css/showHide.js +48 -0
  146. data/public/node_modules/pivottable/node_modules/jquery/src/css/support.js +121 -0
  147. data/public/node_modules/pivottable/node_modules/jquery/src/css/var/cssExpand.js +3 -0
  148. data/public/node_modules/pivottable/node_modules/jquery/src/css/var/getStyles.js +15 -0
  149. data/public/node_modules/pivottable/node_modules/jquery/src/css/var/isHidden.js +16 -0
  150. data/public/node_modules/pivottable/node_modules/jquery/src/css/var/rmargin.js +3 -0
  151. data/public/node_modules/pivottable/node_modules/jquery/src/css/var/rnumnonpx.js +5 -0
  152. data/public/node_modules/pivottable/node_modules/jquery/src/css/var/swap.js +24 -0
  153. data/public/node_modules/pivottable/node_modules/jquery/src/data.js +187 -0
  154. data/public/node_modules/pivottable/node_modules/jquery/src/data/Data.js +200 -0
  155. data/public/node_modules/pivottable/node_modules/jquery/src/data/accepts.js +20 -0
  156. data/public/node_modules/pivottable/node_modules/jquery/src/data/support.js +23 -0
  157. data/public/node_modules/pivottable/node_modules/jquery/src/data/var/acceptData.js +18 -0
  158. data/public/node_modules/pivottable/node_modules/jquery/src/data/var/dataPriv.js +5 -0
  159. data/public/node_modules/pivottable/node_modules/jquery/src/data/var/dataUser.js +5 -0
  160. data/public/node_modules/pivottable/node_modules/jquery/src/deferred.js +158 -0
  161. data/public/node_modules/pivottable/node_modules/jquery/src/deferred/exceptionHook.js +19 -0
  162. data/public/node_modules/pivottable/node_modules/jquery/src/deprecated.js +32 -0
  163. data/public/node_modules/pivottable/node_modules/jquery/src/dimensions.js +54 -0
  164. data/public/node_modules/pivottable/node_modules/jquery/src/effects.js +629 -0
  165. data/public/node_modules/pivottable/node_modules/jquery/src/effects/Tween.js +121 -0
  166. data/public/node_modules/pivottable/node_modules/jquery/src/effects/animatedSelector.js +13 -0
  167. data/public/node_modules/pivottable/node_modules/jquery/src/effects/support.js +58 -0
  168. data/public/node_modules/pivottable/node_modules/jquery/src/event.js +710 -0
  169. data/public/node_modules/pivottable/node_modules/jquery/src/event/ajax.js +20 -0
  170. data/public/node_modules/pivottable/node_modules/jquery/src/event/alias.js +27 -0
  171. data/public/node_modules/pivottable/node_modules/jquery/src/event/focusin.js +53 -0
  172. data/public/node_modules/pivottable/node_modules/jquery/src/event/support.js +9 -0
  173. data/public/node_modules/pivottable/node_modules/jquery/src/event/trigger.js +199 -0
  174. data/public/node_modules/pivottable/node_modules/jquery/src/exports/amd.js +24 -0
  175. data/public/node_modules/pivottable/node_modules/jquery/src/exports/global.js +26 -0
  176. data/public/node_modules/pivottable/node_modules/jquery/src/intro.js +44 -0
  177. data/public/node_modules/pivottable/node_modules/jquery/src/jquery.js +37 -0
  178. data/public/node_modules/pivottable/node_modules/jquery/src/manipulation.js +481 -0
  179. data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/_evalUrl.js +20 -0
  180. data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/buildFragment.js +102 -0
  181. data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/createSafeFragment.js +20 -0
  182. data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/getAll.js +21 -0
  183. data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/setGlobalEval.js +20 -0
  184. data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/support.js +33 -0
  185. data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/var/nodeNames.js +5 -0
  186. data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/var/rcheckableType.js +3 -0
  187. data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/var/rleadingWhitespace.js +3 -0
  188. data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/var/rscriptType.js +3 -0
  189. data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/var/rtagName.js +3 -0
  190. data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/wrapMap.js +27 -0
  191. data/public/node_modules/pivottable/node_modules/jquery/src/offset.js +218 -0
  192. data/public/node_modules/pivottable/node_modules/jquery/src/outro.js +2 -0
  193. data/public/node_modules/pivottable/node_modules/jquery/src/queue.js +143 -0
  194. data/public/node_modules/pivottable/node_modules/jquery/src/queue/delay.js +22 -0
  195. data/public/node_modules/pivottable/node_modules/jquery/src/selector-native.js +211 -0
  196. data/public/node_modules/pivottable/node_modules/jquery/src/selector-sizzle.js +14 -0
  197. data/public/node_modules/pivottable/node_modules/jquery/src/selector.js +1 -0
  198. data/public/node_modules/pivottable/node_modules/jquery/src/serialize.js +125 -0
  199. data/public/node_modules/pivottable/node_modules/jquery/src/support.js +63 -0
  200. data/public/node_modules/pivottable/node_modules/jquery/src/traversing.js +175 -0
  201. data/public/node_modules/pivottable/node_modules/jquery/src/traversing/findFilter.js +100 -0
  202. data/public/node_modules/pivottable/node_modules/jquery/src/traversing/var/dir.js +20 -0
  203. data/public/node_modules/pivottable/node_modules/jquery/src/traversing/var/rneedsContext.js +6 -0
  204. data/public/node_modules/pivottable/node_modules/jquery/src/traversing/var/siblings.js +15 -0
  205. data/public/node_modules/pivottable/node_modules/jquery/src/var/arr.js +3 -0
  206. data/public/node_modules/pivottable/node_modules/jquery/src/var/class2type.js +5 -0
  207. data/public/node_modules/pivottable/node_modules/jquery/src/var/concat.js +5 -0
  208. data/public/node_modules/pivottable/node_modules/jquery/src/var/deletedIds.js +3 -0
  209. data/public/node_modules/pivottable/node_modules/jquery/src/var/document.js +3 -0
  210. data/public/node_modules/pivottable/node_modules/jquery/src/var/documentElement.js +5 -0
  211. data/public/node_modules/pivottable/node_modules/jquery/src/var/hasOwn.js +5 -0
  212. data/public/node_modules/pivottable/node_modules/jquery/src/var/indexOf.js +5 -0
  213. data/public/node_modules/pivottable/node_modules/jquery/src/var/pnum.js +3 -0
  214. data/public/node_modules/pivottable/node_modules/jquery/src/var/push.js +5 -0
  215. data/public/node_modules/pivottable/node_modules/jquery/src/var/rcssNum.js +7 -0
  216. data/public/node_modules/pivottable/node_modules/jquery/src/var/rnotwhite.js +3 -0
  217. data/public/node_modules/pivottable/node_modules/jquery/src/var/slice.js +5 -0
  218. data/public/node_modules/pivottable/node_modules/jquery/src/var/support.js +5 -0
  219. data/public/node_modules/pivottable/node_modules/jquery/src/var/toString.js +5 -0
  220. data/public/node_modules/pivottable/node_modules/jquery/src/wrap.js +79 -0
  221. data/public/node_modules/pivottable/package.json +70 -0
  222. data/public/node_modules/pivottable/pivot.coffee +957 -0
  223. data/public/node_modules/pivottable/pivot.es.coffee +57 -0
  224. data/public/node_modules/pivottable/pivot.fr.coffee +57 -0
  225. data/public/node_modules/pivottable/pivot.nl.coffee +55 -0
  226. data/public/node_modules/pivottable/pivot.pt.coffee +80 -0
  227. data/public/node_modules/pivottable/pivot.ru.coffee +56 -0
  228. data/public/node_modules/pivottable/pivot.tr.coffee +80 -0
  229. data/public/node_modules/pivottable/pivottable.jquery.json +33 -0
  230. data/public/node_modules/pivottable/tests/boot.js +152 -0
  231. data/public/node_modules/pivottable/tests/index.html +35 -0
  232. data/public/node_modules/pivottable/tests/pivot_spec.coffee +458 -0
  233. data/public/vendor.js +5 -0
  234. metadata +232 -1
@@ -0,0 +1,18 @@
1
+ define( function() {
2
+
3
+ /**
4
+ * Determines whether an object can have data
5
+ */
6
+ return function( owner ) {
7
+
8
+ // Accepts only:
9
+ // - Node
10
+ // - Node.ELEMENT_NODE
11
+ // - Node.DOCUMENT_NODE
12
+ // - Object
13
+ // - Any
14
+ /* jshint -W018 */
15
+ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
16
+ };
17
+
18
+ } );
@@ -0,0 +1,5 @@
1
+ define( [
2
+ "../Data"
3
+ ], function( Data ) {
4
+ return new Data();
5
+ } );
@@ -0,0 +1,5 @@
1
+ define( [
2
+ "../Data"
3
+ ], function( Data ) {
4
+ return new Data();
5
+ } );
@@ -0,0 +1,158 @@
1
+ define( [
2
+ "./core",
3
+ "./var/slice",
4
+ "./callbacks"
5
+ ], function( jQuery, slice ) {
6
+
7
+ jQuery.extend( {
8
+
9
+ Deferred: function( func ) {
10
+ var tuples = [
11
+
12
+ // action, add listener, listener list, final state
13
+ [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ],
14
+ [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ],
15
+ [ "notify", "progress", jQuery.Callbacks( "memory" ) ]
16
+ ],
17
+ state = "pending",
18
+ promise = {
19
+ state: function() {
20
+ return state;
21
+ },
22
+ always: function() {
23
+ deferred.done( arguments ).fail( arguments );
24
+ return this;
25
+ },
26
+ then: function( /* fnDone, fnFail, fnProgress */ ) {
27
+ var fns = arguments;
28
+ return jQuery.Deferred( function( newDefer ) {
29
+ jQuery.each( tuples, function( i, tuple ) {
30
+ var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
31
+
32
+ // deferred[ done | fail | progress ] for forwarding actions to newDefer
33
+ deferred[ tuple[ 1 ] ]( function() {
34
+ var returned = fn && fn.apply( this, arguments );
35
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
36
+ returned.promise()
37
+ .progress( newDefer.notify )
38
+ .done( newDefer.resolve )
39
+ .fail( newDefer.reject );
40
+ } else {
41
+ newDefer[ tuple[ 0 ] + "With" ](
42
+ this === promise ? newDefer.promise() : this,
43
+ fn ? [ returned ] : arguments
44
+ );
45
+ }
46
+ } );
47
+ } );
48
+ fns = null;
49
+ } ).promise();
50
+ },
51
+
52
+ // Get a promise for this deferred
53
+ // If obj is provided, the promise aspect is added to the object
54
+ promise: function( obj ) {
55
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
56
+ }
57
+ },
58
+ deferred = {};
59
+
60
+ // Keep pipe for back-compat
61
+ promise.pipe = promise.then;
62
+
63
+ // Add list-specific methods
64
+ jQuery.each( tuples, function( i, tuple ) {
65
+ var list = tuple[ 2 ],
66
+ stateString = tuple[ 3 ];
67
+
68
+ // promise[ done | fail | progress ] = list.add
69
+ promise[ tuple[ 1 ] ] = list.add;
70
+
71
+ // Handle state
72
+ if ( stateString ) {
73
+ list.add( function() {
74
+
75
+ // state = [ resolved | rejected ]
76
+ state = stateString;
77
+
78
+ // [ reject_list | resolve_list ].disable; progress_list.lock
79
+ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
80
+ }
81
+
82
+ // deferred[ resolve | reject | notify ]
83
+ deferred[ tuple[ 0 ] ] = function() {
84
+ deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments );
85
+ return this;
86
+ };
87
+ deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
88
+ } );
89
+
90
+ // Make the deferred a promise
91
+ promise.promise( deferred );
92
+
93
+ // Call given func if any
94
+ if ( func ) {
95
+ func.call( deferred, deferred );
96
+ }
97
+
98
+ // All done!
99
+ return deferred;
100
+ },
101
+
102
+ // Deferred helper
103
+ when: function( subordinate /* , ..., subordinateN */ ) {
104
+ var i = 0,
105
+ resolveValues = slice.call( arguments ),
106
+ length = resolveValues.length,
107
+
108
+ // the count of uncompleted subordinates
109
+ remaining = length !== 1 ||
110
+ ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
111
+
112
+ // the master Deferred.
113
+ // If resolveValues consist of only a single Deferred, just use that.
114
+ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
115
+
116
+ // Update function for both resolve and progress values
117
+ updateFunc = function( i, contexts, values ) {
118
+ return function( value ) {
119
+ contexts[ i ] = this;
120
+ values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
121
+ if ( values === progressValues ) {
122
+ deferred.notifyWith( contexts, values );
123
+ } else if ( !( --remaining ) ) {
124
+ deferred.resolveWith( contexts, values );
125
+ }
126
+ };
127
+ },
128
+
129
+ progressValues, progressContexts, resolveContexts;
130
+
131
+ // Add listeners to Deferred subordinates; treat others as resolved
132
+ if ( length > 1 ) {
133
+ progressValues = new Array( length );
134
+ progressContexts = new Array( length );
135
+ resolveContexts = new Array( length );
136
+ for ( ; i < length; i++ ) {
137
+ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
138
+ resolveValues[ i ].promise()
139
+ .progress( updateFunc( i, progressContexts, progressValues ) )
140
+ .done( updateFunc( i, resolveContexts, resolveValues ) )
141
+ .fail( deferred.reject );
142
+ } else {
143
+ --remaining;
144
+ }
145
+ }
146
+ }
147
+
148
+ // If we're not waiting on anything, resolve the master
149
+ if ( !remaining ) {
150
+ deferred.resolveWith( resolveContexts, resolveValues );
151
+ }
152
+
153
+ return deferred.promise();
154
+ }
155
+ } );
156
+
157
+ return jQuery;
158
+ } );
@@ -0,0 +1,19 @@
1
+ define( [
2
+ "../core",
3
+ "../deferred"
4
+ ], function( jQuery ) {
5
+
6
+ // These usually indicate a programmer mistake during development,
7
+ // warn about them ASAP rather than swallowing them by default.
8
+ var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
9
+
10
+ jQuery.Deferred.exceptionHook = function( error, stack ) {
11
+
12
+ // Support: IE9
13
+ // Console exists when dev tools are open, which can happen at any time
14
+ if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
15
+ window.console.warn( "jQuery.Deferred exception: " + error.message, stack );
16
+ }
17
+ };
18
+
19
+ } );
@@ -0,0 +1,32 @@
1
+ define( [
2
+ "./core"
3
+ ], function( jQuery ) {
4
+
5
+ jQuery.fn.extend( {
6
+
7
+ bind: function( types, data, fn ) {
8
+ return this.on( types, null, data, fn );
9
+ },
10
+ unbind: function( types, fn ) {
11
+ return this.off( types, null, fn );
12
+ },
13
+
14
+ delegate: function( selector, types, data, fn ) {
15
+ return this.on( types, selector, data, fn );
16
+ },
17
+ undelegate: function( selector, types, fn ) {
18
+
19
+ // ( namespace ) or ( selector, types [, fn] )
20
+ return arguments.length === 1 ?
21
+ this.off( selector, "**" ) :
22
+ this.off( types, selector || "**", fn );
23
+ },
24
+ size: function() {
25
+ return this.length;
26
+ }
27
+ } );
28
+
29
+ jQuery.fn.andSelf = jQuery.fn.addBack;
30
+
31
+ } );
32
+
@@ -0,0 +1,54 @@
1
+ define( [
2
+ "./core",
3
+ "./core/access",
4
+ "./css"
5
+ ], function( jQuery, access ) {
6
+
7
+ // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
8
+ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
9
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
10
+ function( defaultExtra, funcName ) {
11
+
12
+ // Margin is only for outerHeight, outerWidth
13
+ jQuery.fn[ funcName ] = function( margin, value ) {
14
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
15
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
16
+
17
+ return access( this, function( elem, type, value ) {
18
+ var doc;
19
+
20
+ if ( jQuery.isWindow( elem ) ) {
21
+
22
+ // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
23
+ // isn't a whole lot we can do. See pull request at this URL for discussion:
24
+ // https://github.com/jquery/jquery/pull/764
25
+ return elem.document.documentElement[ "client" + name ];
26
+ }
27
+
28
+ // Get document width or height
29
+ if ( elem.nodeType === 9 ) {
30
+ doc = elem.documentElement;
31
+
32
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
33
+ // whichever is greatest
34
+ return Math.max(
35
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
36
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
37
+ doc[ "client" + name ]
38
+ );
39
+ }
40
+
41
+ return value === undefined ?
42
+
43
+ // Get width or height on the element, requesting but not forcing parseFloat
44
+ jQuery.css( elem, type, extra ) :
45
+
46
+ // Set width or height on the element
47
+ jQuery.style( elem, type, value, extra );
48
+ }, type, chainable ? margin : undefined, chainable, null );
49
+ };
50
+ } );
51
+ } );
52
+
53
+ return jQuery;
54
+ } );
@@ -0,0 +1,629 @@
1
+ define( [
2
+ "./core",
3
+ "./var/document",
4
+ "./var/rcssNum",
5
+ "./css/var/cssExpand",
6
+ "./var/rnotwhite",
7
+ "./css/var/isHidden",
8
+ "./css/adjustCSS",
9
+ "./css/defaultDisplay",
10
+ "./data/var/dataPriv",
11
+
12
+ "./core/init",
13
+ "./effects/Tween",
14
+ "./queue",
15
+ "./css",
16
+ "./deferred",
17
+ "./traversing"
18
+ ], function( jQuery, document, rcssNum, cssExpand, rnotwhite,
19
+ isHidden, adjustCSS, defaultDisplay, dataPriv ) {
20
+
21
+ var
22
+ fxNow, timerId,
23
+ rfxtypes = /^(?:toggle|show|hide)$/,
24
+ rrun = /queueHooks$/;
25
+
26
+ // Animations created synchronously will run synchronously
27
+ function createFxNow() {
28
+ window.setTimeout( function() {
29
+ fxNow = undefined;
30
+ } );
31
+ return ( fxNow = jQuery.now() );
32
+ }
33
+
34
+ // Generate parameters to create a standard animation
35
+ function genFx( type, includeWidth ) {
36
+ var which,
37
+ i = 0,
38
+ attrs = { height: type };
39
+
40
+ // If we include width, step value is 1 to do all cssExpand values,
41
+ // otherwise step value is 2 to skip over Left and Right
42
+ includeWidth = includeWidth ? 1 : 0;
43
+ for ( ; i < 4 ; i += 2 - includeWidth ) {
44
+ which = cssExpand[ i ];
45
+ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
46
+ }
47
+
48
+ if ( includeWidth ) {
49
+ attrs.opacity = attrs.width = type;
50
+ }
51
+
52
+ return attrs;
53
+ }
54
+
55
+ function createTween( value, prop, animation ) {
56
+ var tween,
57
+ collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
58
+ index = 0,
59
+ length = collection.length;
60
+ for ( ; index < length; index++ ) {
61
+ if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
62
+
63
+ // We're done with this property
64
+ return tween;
65
+ }
66
+ }
67
+ }
68
+
69
+ function defaultPrefilter( elem, props, opts ) {
70
+ /* jshint validthis: true */
71
+ var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
72
+ anim = this,
73
+ orig = {},
74
+ style = elem.style,
75
+ hidden = elem.nodeType && isHidden( elem ),
76
+ dataShow = dataPriv.get( elem, "fxshow" );
77
+
78
+ // Handle queue: false promises
79
+ if ( !opts.queue ) {
80
+ hooks = jQuery._queueHooks( elem, "fx" );
81
+ if ( hooks.unqueued == null ) {
82
+ hooks.unqueued = 0;
83
+ oldfire = hooks.empty.fire;
84
+ hooks.empty.fire = function() {
85
+ if ( !hooks.unqueued ) {
86
+ oldfire();
87
+ }
88
+ };
89
+ }
90
+ hooks.unqueued++;
91
+
92
+ anim.always( function() {
93
+
94
+ // Ensure the complete handler is called before this completes
95
+ anim.always( function() {
96
+ hooks.unqueued--;
97
+ if ( !jQuery.queue( elem, "fx" ).length ) {
98
+ hooks.empty.fire();
99
+ }
100
+ } );
101
+ } );
102
+ }
103
+
104
+ // Height/width overflow pass
105
+ if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
106
+
107
+ // Make sure that nothing sneaks out
108
+ // Record all 3 overflow attributes because IE9-10 do not
109
+ // change the overflow attribute when overflowX and
110
+ // overflowY are set to the same value
111
+ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
112
+
113
+ // Set display property to inline-block for height/width
114
+ // animations on inline elements that are having width/height animated
115
+ display = jQuery.css( elem, "display" );
116
+
117
+ // Test default display if display is currently "none"
118
+ checkDisplay = display === "none" ?
119
+ dataPriv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
120
+
121
+ if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
122
+ style.display = "inline-block";
123
+ }
124
+ }
125
+
126
+ if ( opts.overflow ) {
127
+ style.overflow = "hidden";
128
+ anim.always( function() {
129
+ style.overflow = opts.overflow[ 0 ];
130
+ style.overflowX = opts.overflow[ 1 ];
131
+ style.overflowY = opts.overflow[ 2 ];
132
+ } );
133
+ }
134
+
135
+ // show/hide pass
136
+ for ( prop in props ) {
137
+ value = props[ prop ];
138
+ if ( rfxtypes.exec( value ) ) {
139
+ delete props[ prop ];
140
+ toggle = toggle || value === "toggle";
141
+ if ( value === ( hidden ? "hide" : "show" ) ) {
142
+
143
+ // If there is dataShow left over from a stopped hide or show
144
+ // and we are going to proceed with show, we should pretend to be hidden
145
+ if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
146
+ hidden = true;
147
+ } else {
148
+ continue;
149
+ }
150
+ }
151
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
152
+
153
+ // Any non-fx value stops us from restoring the original display value
154
+ } else {
155
+ display = undefined;
156
+ }
157
+ }
158
+
159
+ if ( !jQuery.isEmptyObject( orig ) ) {
160
+ if ( dataShow ) {
161
+ if ( "hidden" in dataShow ) {
162
+ hidden = dataShow.hidden;
163
+ }
164
+ } else {
165
+ dataShow = dataPriv.access( elem, "fxshow", {} );
166
+ }
167
+
168
+ // Store state if its toggle - enables .stop().toggle() to "reverse"
169
+ if ( toggle ) {
170
+ dataShow.hidden = !hidden;
171
+ }
172
+ if ( hidden ) {
173
+ jQuery( elem ).show();
174
+ } else {
175
+ anim.done( function() {
176
+ jQuery( elem ).hide();
177
+ } );
178
+ }
179
+ anim.done( function() {
180
+ var prop;
181
+
182
+ dataPriv.remove( elem, "fxshow" );
183
+ for ( prop in orig ) {
184
+ jQuery.style( elem, prop, orig[ prop ] );
185
+ }
186
+ } );
187
+ for ( prop in orig ) {
188
+ tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
189
+
190
+ if ( !( prop in dataShow ) ) {
191
+ dataShow[ prop ] = tween.start;
192
+ if ( hidden ) {
193
+ tween.end = tween.start;
194
+ tween.start = prop === "width" || prop === "height" ? 1 : 0;
195
+ }
196
+ }
197
+ }
198
+
199
+ // If this is a noop like .hide().hide(), restore an overwritten display value
200
+ } else if ( ( display === "none" ? defaultDisplay( elem.nodeName ) : display ) === "inline" ) {
201
+ style.display = display;
202
+ }
203
+ }
204
+
205
+ function propFilter( props, specialEasing ) {
206
+ var index, name, easing, value, hooks;
207
+
208
+ // camelCase, specialEasing and expand cssHook pass
209
+ for ( index in props ) {
210
+ name = jQuery.camelCase( index );
211
+ easing = specialEasing[ name ];
212
+ value = props[ index ];
213
+ if ( jQuery.isArray( value ) ) {
214
+ easing = value[ 1 ];
215
+ value = props[ index ] = value[ 0 ];
216
+ }
217
+
218
+ if ( index !== name ) {
219
+ props[ name ] = value;
220
+ delete props[ index ];
221
+ }
222
+
223
+ hooks = jQuery.cssHooks[ name ];
224
+ if ( hooks && "expand" in hooks ) {
225
+ value = hooks.expand( value );
226
+ delete props[ name ];
227
+
228
+ // Not quite $.extend, this won't overwrite existing keys.
229
+ // Reusing 'index' because we have the correct "name"
230
+ for ( index in value ) {
231
+ if ( !( index in props ) ) {
232
+ props[ index ] = value[ index ];
233
+ specialEasing[ index ] = easing;
234
+ }
235
+ }
236
+ } else {
237
+ specialEasing[ name ] = easing;
238
+ }
239
+ }
240
+ }
241
+
242
+ function Animation( elem, properties, options ) {
243
+ var result,
244
+ stopped,
245
+ index = 0,
246
+ length = Animation.prefilters.length,
247
+ deferred = jQuery.Deferred().always( function() {
248
+
249
+ // Don't match elem in the :animated selector
250
+ delete tick.elem;
251
+ } ),
252
+ tick = function() {
253
+ if ( stopped ) {
254
+ return false;
255
+ }
256
+ var currentTime = fxNow || createFxNow(),
257
+ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
258
+
259
+ // Support: Android 2.3
260
+ // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
261
+ temp = remaining / animation.duration || 0,
262
+ percent = 1 - temp,
263
+ index = 0,
264
+ length = animation.tweens.length;
265
+
266
+ for ( ; index < length ; index++ ) {
267
+ animation.tweens[ index ].run( percent );
268
+ }
269
+
270
+ deferred.notifyWith( elem, [ animation, percent, remaining ] );
271
+
272
+ if ( percent < 1 && length ) {
273
+ return remaining;
274
+ } else {
275
+ deferred.resolveWith( elem, [ animation ] );
276
+ return false;
277
+ }
278
+ },
279
+ animation = deferred.promise( {
280
+ elem: elem,
281
+ props: jQuery.extend( {}, properties ),
282
+ opts: jQuery.extend( true, {
283
+ specialEasing: {},
284
+ easing: jQuery.easing._default
285
+ }, options ),
286
+ originalProperties: properties,
287
+ originalOptions: options,
288
+ startTime: fxNow || createFxNow(),
289
+ duration: options.duration,
290
+ tweens: [],
291
+ createTween: function( prop, end ) {
292
+ var tween = jQuery.Tween( elem, animation.opts, prop, end,
293
+ animation.opts.specialEasing[ prop ] || animation.opts.easing );
294
+ animation.tweens.push( tween );
295
+ return tween;
296
+ },
297
+ stop: function( gotoEnd ) {
298
+ var index = 0,
299
+
300
+ // If we are going to the end, we want to run all the tweens
301
+ // otherwise we skip this part
302
+ length = gotoEnd ? animation.tweens.length : 0;
303
+ if ( stopped ) {
304
+ return this;
305
+ }
306
+ stopped = true;
307
+ for ( ; index < length ; index++ ) {
308
+ animation.tweens[ index ].run( 1 );
309
+ }
310
+
311
+ // Resolve when we played the last frame; otherwise, reject
312
+ if ( gotoEnd ) {
313
+ deferred.notifyWith( elem, [ animation, 1, 0 ] );
314
+ deferred.resolveWith( elem, [ animation, gotoEnd ] );
315
+ } else {
316
+ deferred.rejectWith( elem, [ animation, gotoEnd ] );
317
+ }
318
+ return this;
319
+ }
320
+ } ),
321
+ props = animation.props;
322
+
323
+ propFilter( props, animation.opts.specialEasing );
324
+
325
+ for ( ; index < length ; index++ ) {
326
+ result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
327
+ if ( result ) {
328
+ if ( jQuery.isFunction( result.stop ) ) {
329
+ jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
330
+ jQuery.proxy( result.stop, result );
331
+ }
332
+ return result;
333
+ }
334
+ }
335
+
336
+ jQuery.map( props, createTween, animation );
337
+
338
+ if ( jQuery.isFunction( animation.opts.start ) ) {
339
+ animation.opts.start.call( elem, animation );
340
+ }
341
+
342
+ jQuery.fx.timer(
343
+ jQuery.extend( tick, {
344
+ elem: elem,
345
+ anim: animation,
346
+ queue: animation.opts.queue
347
+ } )
348
+ );
349
+
350
+ // attach callbacks from options
351
+ return animation.progress( animation.opts.progress )
352
+ .done( animation.opts.done, animation.opts.complete )
353
+ .fail( animation.opts.fail )
354
+ .always( animation.opts.always );
355
+ }
356
+
357
+ jQuery.Animation = jQuery.extend( Animation, {
358
+ tweeners: {
359
+ "*": [ function( prop, value ) {
360
+ var tween = this.createTween( prop, value );
361
+ adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
362
+ return tween;
363
+ } ]
364
+ },
365
+
366
+ tweener: function( props, callback ) {
367
+ if ( jQuery.isFunction( props ) ) {
368
+ callback = props;
369
+ props = [ "*" ];
370
+ } else {
371
+ props = props.match( rnotwhite );
372
+ }
373
+
374
+ var prop,
375
+ index = 0,
376
+ length = props.length;
377
+
378
+ for ( ; index < length ; index++ ) {
379
+ prop = props[ index ];
380
+ Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
381
+ Animation.tweeners[ prop ].unshift( callback );
382
+ }
383
+ },
384
+
385
+ prefilters: [ defaultPrefilter ],
386
+
387
+ prefilter: function( callback, prepend ) {
388
+ if ( prepend ) {
389
+ Animation.prefilters.unshift( callback );
390
+ } else {
391
+ Animation.prefilters.push( callback );
392
+ }
393
+ }
394
+ } );
395
+
396
+ jQuery.speed = function( speed, easing, fn ) {
397
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
398
+ complete: fn || !fn && easing ||
399
+ jQuery.isFunction( speed ) && speed,
400
+ duration: speed,
401
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
402
+ };
403
+
404
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ?
405
+ opt.duration : opt.duration in jQuery.fx.speeds ?
406
+ jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
407
+
408
+ // Normalize opt.queue - true/undefined/null -> "fx"
409
+ if ( opt.queue == null || opt.queue === true ) {
410
+ opt.queue = "fx";
411
+ }
412
+
413
+ // Queueing
414
+ opt.old = opt.complete;
415
+
416
+ opt.complete = function() {
417
+ if ( jQuery.isFunction( opt.old ) ) {
418
+ opt.old.call( this );
419
+ }
420
+
421
+ if ( opt.queue ) {
422
+ jQuery.dequeue( this, opt.queue );
423
+ }
424
+ };
425
+
426
+ return opt;
427
+ };
428
+
429
+ jQuery.fn.extend( {
430
+ fadeTo: function( speed, to, easing, callback ) {
431
+
432
+ // Show any hidden elements after setting opacity to 0
433
+ return this.filter( isHidden ).css( "opacity", 0 ).show()
434
+
435
+ // Animate to the value specified
436
+ .end().animate( { opacity: to }, speed, easing, callback );
437
+ },
438
+ animate: function( prop, speed, easing, callback ) {
439
+ var empty = jQuery.isEmptyObject( prop ),
440
+ optall = jQuery.speed( speed, easing, callback ),
441
+ doAnimation = function() {
442
+
443
+ // Operate on a copy of prop so per-property easing won't be lost
444
+ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
445
+
446
+ // Empty animations, or finishing resolves immediately
447
+ if ( empty || dataPriv.get( this, "finish" ) ) {
448
+ anim.stop( true );
449
+ }
450
+ };
451
+ doAnimation.finish = doAnimation;
452
+
453
+ return empty || optall.queue === false ?
454
+ this.each( doAnimation ) :
455
+ this.queue( optall.queue, doAnimation );
456
+ },
457
+ stop: function( type, clearQueue, gotoEnd ) {
458
+ var stopQueue = function( hooks ) {
459
+ var stop = hooks.stop;
460
+ delete hooks.stop;
461
+ stop( gotoEnd );
462
+ };
463
+
464
+ if ( typeof type !== "string" ) {
465
+ gotoEnd = clearQueue;
466
+ clearQueue = type;
467
+ type = undefined;
468
+ }
469
+ if ( clearQueue && type !== false ) {
470
+ this.queue( type || "fx", [] );
471
+ }
472
+
473
+ return this.each( function() {
474
+ var dequeue = true,
475
+ index = type != null && type + "queueHooks",
476
+ timers = jQuery.timers,
477
+ data = dataPriv.get( this );
478
+
479
+ if ( index ) {
480
+ if ( data[ index ] && data[ index ].stop ) {
481
+ stopQueue( data[ index ] );
482
+ }
483
+ } else {
484
+ for ( index in data ) {
485
+ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
486
+ stopQueue( data[ index ] );
487
+ }
488
+ }
489
+ }
490
+
491
+ for ( index = timers.length; index--; ) {
492
+ if ( timers[ index ].elem === this &&
493
+ ( type == null || timers[ index ].queue === type ) ) {
494
+
495
+ timers[ index ].anim.stop( gotoEnd );
496
+ dequeue = false;
497
+ timers.splice( index, 1 );
498
+ }
499
+ }
500
+
501
+ // Start the next in the queue if the last step wasn't forced.
502
+ // Timers currently will call their complete callbacks, which
503
+ // will dequeue but only if they were gotoEnd.
504
+ if ( dequeue || !gotoEnd ) {
505
+ jQuery.dequeue( this, type );
506
+ }
507
+ } );
508
+ },
509
+ finish: function( type ) {
510
+ if ( type !== false ) {
511
+ type = type || "fx";
512
+ }
513
+ return this.each( function() {
514
+ var index,
515
+ data = dataPriv.get( this ),
516
+ queue = data[ type + "queue" ],
517
+ hooks = data[ type + "queueHooks" ],
518
+ timers = jQuery.timers,
519
+ length = queue ? queue.length : 0;
520
+
521
+ // Enable finishing flag on private data
522
+ data.finish = true;
523
+
524
+ // Empty the queue first
525
+ jQuery.queue( this, type, [] );
526
+
527
+ if ( hooks && hooks.stop ) {
528
+ hooks.stop.call( this, true );
529
+ }
530
+
531
+ // Look for any active animations, and finish them
532
+ for ( index = timers.length; index--; ) {
533
+ if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
534
+ timers[ index ].anim.stop( true );
535
+ timers.splice( index, 1 );
536
+ }
537
+ }
538
+
539
+ // Look for any animations in the old queue and finish them
540
+ for ( index = 0; index < length; index++ ) {
541
+ if ( queue[ index ] && queue[ index ].finish ) {
542
+ queue[ index ].finish.call( this );
543
+ }
544
+ }
545
+
546
+ // Turn off finishing flag
547
+ delete data.finish;
548
+ } );
549
+ }
550
+ } );
551
+
552
+ jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
553
+ var cssFn = jQuery.fn[ name ];
554
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
555
+ return speed == null || typeof speed === "boolean" ?
556
+ cssFn.apply( this, arguments ) :
557
+ this.animate( genFx( name, true ), speed, easing, callback );
558
+ };
559
+ } );
560
+
561
+ // Generate shortcuts for custom animations
562
+ jQuery.each( {
563
+ slideDown: genFx( "show" ),
564
+ slideUp: genFx( "hide" ),
565
+ slideToggle: genFx( "toggle" ),
566
+ fadeIn: { opacity: "show" },
567
+ fadeOut: { opacity: "hide" },
568
+ fadeToggle: { opacity: "toggle" }
569
+ }, function( name, props ) {
570
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
571
+ return this.animate( props, speed, easing, callback );
572
+ };
573
+ } );
574
+
575
+ jQuery.timers = [];
576
+ jQuery.fx.tick = function() {
577
+ var timer,
578
+ i = 0,
579
+ timers = jQuery.timers;
580
+
581
+ fxNow = jQuery.now();
582
+
583
+ for ( ; i < timers.length; i++ ) {
584
+ timer = timers[ i ];
585
+
586
+ // Checks the timer has not already been removed
587
+ if ( !timer() && timers[ i ] === timer ) {
588
+ timers.splice( i--, 1 );
589
+ }
590
+ }
591
+
592
+ if ( !timers.length ) {
593
+ jQuery.fx.stop();
594
+ }
595
+ fxNow = undefined;
596
+ };
597
+
598
+ jQuery.fx.timer = function( timer ) {
599
+ jQuery.timers.push( timer );
600
+ if ( timer() ) {
601
+ jQuery.fx.start();
602
+ } else {
603
+ jQuery.timers.pop();
604
+ }
605
+ };
606
+
607
+ jQuery.fx.interval = 13;
608
+ jQuery.fx.start = function() {
609
+ if ( !timerId ) {
610
+ timerId = window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
611
+ }
612
+ };
613
+
614
+ jQuery.fx.stop = function() {
615
+ window.clearInterval( timerId );
616
+
617
+ timerId = null;
618
+ };
619
+
620
+ jQuery.fx.speeds = {
621
+ slow: 600,
622
+ fast: 200,
623
+
624
+ // Default speed
625
+ _default: 400
626
+ };
627
+
628
+ return jQuery;
629
+ } );