jekyll-chalk 0.1.0 → 0.1.1

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 (275) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +21 -0
  3. data/README.md +89 -0
  4. data/_includes/footer.html +7 -0
  5. data/_includes/head.html +33 -0
  6. data/_includes/image.html +3 -0
  7. data/_includes/javascripts.html +21 -0
  8. data/_includes/navigation.html +75 -0
  9. data/_layouts/articles_by_tag.html +38 -0
  10. data/_layouts/default.html +16 -0
  11. data/_layouts/page.html +5 -0
  12. data/_layouts/post.html +71 -0
  13. data/assets/bower/fluidbox/.bower.json +44 -0
  14. data/assets/bower/fluidbox/Gruntfile.js +8 -0
  15. data/assets/bower/fluidbox/LICENSE.md +23 -0
  16. data/assets/bower/fluidbox/README.md +396 -0
  17. data/assets/bower/fluidbox/bower.json +35 -0
  18. data/assets/bower/fluidbox/demo/css/styles.min.css +2 -0
  19. data/assets/bower/fluidbox/demo/css/styles.min.css.map +1 -0
  20. data/assets/bower/fluidbox/demo/fonts/BLOKKRegular.eot +0 -0
  21. data/assets/bower/fluidbox/demo/fonts/BLOKKRegular.svg +233 -0
  22. data/assets/bower/fluidbox/demo/fonts/BLOKKRegular.ttf +0 -0
  23. data/assets/bower/fluidbox/demo/fonts/BLOKKRegular.woff +0 -0
  24. data/assets/bower/fluidbox/demo/fonts/fontello.eot +0 -0
  25. data/assets/bower/fluidbox/demo/fonts/fontello.svg +13 -0
  26. data/assets/bower/fluidbox/demo/fonts/fontello.ttf +0 -0
  27. data/assets/bower/fluidbox/demo/fonts/fontello.woff +0 -0
  28. data/assets/bower/fluidbox/demo/index.html +758 -0
  29. data/assets/bower/fluidbox/demo/src/css/styles.scss +1131 -0
  30. data/assets/bower/fluidbox/dist/css/fluidbox.min.css +2 -0
  31. data/assets/bower/fluidbox/dist/css/fluidbox.min.css.map +1 -0
  32. data/assets/bower/fluidbox/dist/js/jquery.fluidbox.min.js +1 -0
  33. data/assets/bower/fluidbox/grunt/aliases.yaml +20 -0
  34. data/assets/bower/fluidbox/grunt/clean.js +5 -0
  35. data/assets/bower/fluidbox/grunt/concurrent.js +33 -0
  36. data/assets/bower/fluidbox/grunt/jshint.js +10 -0
  37. data/assets/bower/fluidbox/grunt/postcss.js +47 -0
  38. data/assets/bower/fluidbox/grunt/sass.js +42 -0
  39. data/assets/bower/fluidbox/grunt/uglify.js +7 -0
  40. data/assets/bower/fluidbox/grunt/watch.js +28 -0
  41. data/assets/bower/fluidbox/index.html +8 -0
  42. data/assets/bower/fluidbox/license.txt +21 -0
  43. data/assets/bower/fluidbox/src/css/_fluidbox.scss +95 -0
  44. data/assets/bower/fluidbox/src/css/fluidbox.scss +2 -0
  45. data/assets/bower/fluidbox/src/js/jquery.fluidbox.js +722 -0
  46. data/assets/bower/jquery/.bower.json +25 -0
  47. data/assets/bower/jquery/AUTHORS.txt +295 -0
  48. data/assets/bower/jquery/LICENSE.txt +36 -0
  49. data/assets/bower/jquery/README.md +65 -0
  50. data/assets/bower/jquery/bower.json +14 -0
  51. data/assets/bower/jquery/dist/core.js +482 -0
  52. data/assets/bower/jquery/dist/jquery.js +10220 -0
  53. data/assets/bower/jquery/dist/jquery.min.js +4 -0
  54. data/assets/bower/jquery/dist/jquery.min.map +1 -0
  55. data/assets/bower/jquery/dist/jquery.slim.js +8107 -0
  56. data/assets/bower/jquery/dist/jquery.slim.min.js +4 -0
  57. data/assets/bower/jquery/dist/jquery.slim.min.map +1 -0
  58. data/assets/bower/jquery/external/sizzle/LICENSE.txt +36 -0
  59. data/assets/bower/jquery/external/sizzle/dist/sizzle.js +2272 -0
  60. data/assets/bower/jquery/external/sizzle/dist/sizzle.min.js +3 -0
  61. data/assets/bower/jquery/external/sizzle/dist/sizzle.min.map +1 -0
  62. data/assets/bower/jquery/src/.eslintrc.json +18 -0
  63. data/assets/bower/jquery/src/ajax.js +855 -0
  64. data/assets/bower/jquery/src/ajax/jsonp.js +102 -0
  65. data/assets/bower/jquery/src/ajax/load.js +76 -0
  66. data/assets/bower/jquery/src/ajax/parseXML.js +30 -0
  67. data/assets/bower/jquery/src/ajax/script.js +77 -0
  68. data/assets/bower/jquery/src/ajax/var/location.js +5 -0
  69. data/assets/bower/jquery/src/ajax/var/nonce.js +7 -0
  70. data/assets/bower/jquery/src/ajax/var/rquery.js +5 -0
  71. data/assets/bower/jquery/src/ajax/xhr.js +169 -0
  72. data/assets/bower/jquery/src/attributes.js +13 -0
  73. data/assets/bower/jquery/src/attributes/attr.js +140 -0
  74. data/assets/bower/jquery/src/attributes/classes.js +174 -0
  75. data/assets/bower/jquery/src/attributes/prop.js +143 -0
  76. data/assets/bower/jquery/src/attributes/support.js +33 -0
  77. data/assets/bower/jquery/src/attributes/val.js +188 -0
  78. data/assets/bower/jquery/src/callbacks.js +234 -0
  79. data/assets/bower/jquery/src/core.js +482 -0
  80. data/assets/bower/jquery/src/core/DOMEval.js +16 -0
  81. data/assets/bower/jquery/src/core/access.js +70 -0
  82. data/assets/bower/jquery/src/core/init.js +127 -0
  83. data/assets/bower/jquery/src/core/parseHTML.js +65 -0
  84. data/assets/bower/jquery/src/core/ready-no-deferred.js +105 -0
  85. data/assets/bower/jquery/src/core/ready.js +95 -0
  86. data/assets/bower/jquery/src/core/readyException.js +13 -0
  87. data/assets/bower/jquery/src/core/stripAndCollapse.js +14 -0
  88. data/assets/bower/jquery/src/core/support.js +20 -0
  89. data/assets/bower/jquery/src/core/var/rsingleTag.js +6 -0
  90. data/assets/bower/jquery/src/css.js +426 -0
  91. data/assets/bower/jquery/src/css/addGetHookIf.js +26 -0
  92. data/assets/bower/jquery/src/css/adjustCSS.js +71 -0
  93. data/assets/bower/jquery/src/css/curCSS.js +59 -0
  94. data/assets/bower/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  95. data/assets/bower/jquery/src/css/showHide.js +105 -0
  96. data/assets/bower/jquery/src/css/support.js +89 -0
  97. data/assets/bower/jquery/src/css/var/cssExpand.js +5 -0
  98. data/assets/bower/jquery/src/css/var/getStyles.js +17 -0
  99. data/assets/bower/jquery/src/css/var/isHiddenWithinTree.js +34 -0
  100. data/assets/bower/jquery/src/css/var/rmargin.js +5 -0
  101. data/assets/bower/jquery/src/css/var/rnumnonpx.js +7 -0
  102. data/assets/bower/jquery/src/css/var/swap.js +26 -0
  103. data/assets/bower/jquery/src/data.js +179 -0
  104. data/assets/bower/jquery/src/data/Data.js +161 -0
  105. data/assets/bower/jquery/src/data/var/acceptData.js +19 -0
  106. data/assets/bower/jquery/src/data/var/dataPriv.js +7 -0
  107. data/assets/bower/jquery/src/data/var/dataUser.js +7 -0
  108. data/assets/bower/jquery/src/deferred.js +389 -0
  109. data/assets/bower/jquery/src/deferred/exceptionHook.js +21 -0
  110. data/assets/bower/jquery/src/deprecated.js +30 -0
  111. data/assets/bower/jquery/src/dimensions.js +56 -0
  112. data/assets/bower/jquery/src/effects.js +693 -0
  113. data/assets/bower/jquery/src/effects/Tween.js +123 -0
  114. data/assets/bower/jquery/src/effects/animatedSelector.js +15 -0
  115. data/assets/bower/jquery/src/event.js +745 -0
  116. data/assets/bower/jquery/src/event/ajax.js +22 -0
  117. data/assets/bower/jquery/src/event/alias.js +29 -0
  118. data/assets/bower/jquery/src/event/focusin.js +55 -0
  119. data/assets/bower/jquery/src/event/support.js +11 -0
  120. data/assets/bower/jquery/src/event/trigger.js +185 -0
  121. data/assets/bower/jquery/src/exports/amd.js +26 -0
  122. data/assets/bower/jquery/src/exports/global.js +34 -0
  123. data/assets/bower/jquery/src/jquery.js +41 -0
  124. data/assets/bower/jquery/src/manipulation.js +486 -0
  125. data/assets/bower/jquery/src/manipulation/_evalUrl.js +23 -0
  126. data/assets/bower/jquery/src/manipulation/buildFragment.js +104 -0
  127. data/assets/bower/jquery/src/manipulation/getAll.js +31 -0
  128. data/assets/bower/jquery/src/manipulation/setGlobalEval.js +22 -0
  129. data/assets/bower/jquery/src/manipulation/support.js +35 -0
  130. data/assets/bower/jquery/src/manipulation/var/rcheckableType.js +5 -0
  131. data/assets/bower/jquery/src/manipulation/var/rscriptType.js +5 -0
  132. data/assets/bower/jquery/src/manipulation/var/rtagName.js +5 -0
  133. data/assets/bower/jquery/src/manipulation/wrapMap.js +29 -0
  134. data/assets/bower/jquery/src/offset.js +232 -0
  135. data/assets/bower/jquery/src/queue.js +145 -0
  136. data/assets/bower/jquery/src/queue/delay.js +24 -0
  137. data/assets/bower/jquery/src/selector-native.js +237 -0
  138. data/assets/bower/jquery/src/selector-sizzle.js +19 -0
  139. data/assets/bower/jquery/src/selector.js +3 -0
  140. data/assets/bower/jquery/src/serialize.js +130 -0
  141. data/assets/bower/jquery/src/traversing.js +178 -0
  142. data/assets/bower/jquery/src/traversing/findFilter.js +106 -0
  143. data/assets/bower/jquery/src/traversing/var/dir.js +22 -0
  144. data/assets/bower/jquery/src/traversing/var/rneedsContext.js +8 -0
  145. data/assets/bower/jquery/src/traversing/var/siblings.js +17 -0
  146. data/assets/bower/jquery/src/var/ObjectFunctionString.js +7 -0
  147. data/assets/bower/jquery/src/var/arr.js +5 -0
  148. data/assets/bower/jquery/src/var/class2type.js +6 -0
  149. data/assets/bower/jquery/src/var/concat.js +7 -0
  150. data/assets/bower/jquery/src/var/document.js +5 -0
  151. data/assets/bower/jquery/src/var/documentElement.js +7 -0
  152. data/assets/bower/jquery/src/var/fnToString.js +7 -0
  153. data/assets/bower/jquery/src/var/getProto.js +5 -0
  154. data/assets/bower/jquery/src/var/hasOwn.js +7 -0
  155. data/assets/bower/jquery/src/var/indexOf.js +7 -0
  156. data/assets/bower/jquery/src/var/pnum.js +5 -0
  157. data/assets/bower/jquery/src/var/push.js +7 -0
  158. data/assets/bower/jquery/src/var/rcssNum.js +9 -0
  159. data/assets/bower/jquery/src/var/rnothtmlwhite.js +8 -0
  160. data/assets/bower/jquery/src/var/slice.js +7 -0
  161. data/assets/bower/jquery/src/var/support.js +6 -0
  162. data/assets/bower/jquery/src/var/toString.js +7 -0
  163. data/assets/bower/jquery/src/wrap.js +77 -0
  164. data/assets/bower/scrollreveal/.bower.json +36 -0
  165. data/assets/bower/scrollreveal/CHANGELOG.md +268 -0
  166. data/assets/bower/scrollreveal/LICENSE.md +12 -0
  167. data/assets/bower/scrollreveal/README.md +413 -0
  168. data/assets/bower/scrollreveal/bower.json +24 -0
  169. data/assets/bower/scrollreveal/dist/scrollreveal.js +860 -0
  170. data/assets/bower/scrollreveal/dist/scrollreveal.min.js +1 -0
  171. data/assets/bower/turbolinks5/.blade.yml +15 -0
  172. data/assets/bower/turbolinks5/.bower.json +14 -0
  173. data/assets/bower/turbolinks5/.gitignore +2 -0
  174. data/assets/bower/turbolinks5/CONDUCT.md +79 -0
  175. data/assets/bower/turbolinks5/Gemfile +9 -0
  176. data/assets/bower/turbolinks5/LICENSE +20 -0
  177. data/assets/bower/turbolinks5/README.md +435 -0
  178. data/assets/bower/turbolinks5/bin/blade +16 -0
  179. data/assets/bower/turbolinks5/bin/rackup +16 -0
  180. data/assets/bower/turbolinks5/config.ru +8 -0
  181. data/assets/bower/turbolinks5/dist/turbolinks.js +6 -0
  182. data/assets/bower/turbolinks5/package.json +31 -0
  183. data/assets/bower/turbolinks5/src/turbolinks/BANNER.js.erb +4 -0
  184. data/assets/bower/turbolinks5/src/turbolinks/VERSION +1 -0
  185. data/assets/bower/turbolinks5/src/turbolinks/browser_adapter.coffee +61 -0
  186. data/assets/bower/turbolinks5/src/turbolinks/compatibility.coffee +30 -0
  187. data/assets/bower/turbolinks5/src/turbolinks/controller.coffee +239 -0
  188. data/assets/bower/turbolinks5/src/turbolinks/error_renderer.coffee +21 -0
  189. data/assets/bower/turbolinks5/src/turbolinks/head_details.coffee +51 -0
  190. data/assets/bower/turbolinks5/src/turbolinks/helpers.coffee +51 -0
  191. data/assets/bower/turbolinks5/src/turbolinks/history.coffee +46 -0
  192. data/assets/bower/turbolinks5/src/turbolinks/http_request.coffee +88 -0
  193. data/assets/bower/turbolinks5/src/turbolinks/index.coffee +16 -0
  194. data/assets/bower/turbolinks5/src/turbolinks/location.coffee +70 -0
  195. data/assets/bower/turbolinks5/src/turbolinks/progress_bar.coffee +83 -0
  196. data/assets/bower/turbolinks5/src/turbolinks/renderer.coffee +27 -0
  197. data/assets/bower/turbolinks5/src/turbolinks/scroll_manager.coffee +27 -0
  198. data/assets/bower/turbolinks5/src/turbolinks/snapshot.coffee +47 -0
  199. data/assets/bower/turbolinks5/src/turbolinks/snapshot_cache.coffee +43 -0
  200. data/assets/bower/turbolinks5/src/turbolinks/snapshot_renderer.coffee +88 -0
  201. data/assets/bower/turbolinks5/src/turbolinks/start.coffee +18 -0
  202. data/assets/bower/turbolinks5/src/turbolinks/view.coffee +34 -0
  203. data/assets/bower/turbolinks5/src/turbolinks/visit.coffee +162 -0
  204. data/assets/bower/turbolinks5/test/src/fixtures/additional_assets.html +12 -0
  205. data/assets/bower/turbolinks5/test/src/fixtures/body_script.html +18 -0
  206. data/assets/bower/turbolinks5/test/src/fixtures/eval_false_script.html +18 -0
  207. data/assets/bower/turbolinks5/test/src/fixtures/head_script.html +18 -0
  208. data/assets/bower/turbolinks5/test/src/fixtures/navigation.html +21 -0
  209. data/assets/bower/turbolinks5/test/src/fixtures/one.html +12 -0
  210. data/assets/bower/turbolinks5/test/src/fixtures/rendering.html +20 -0
  211. data/assets/bower/turbolinks5/test/src/fixtures/tracked_asset_change.html +11 -0
  212. data/assets/bower/turbolinks5/test/src/fixtures/visit.html +14 -0
  213. data/assets/bower/turbolinks5/test/src/head.html.erb +1 -0
  214. data/assets/bower/turbolinks5/test/src/helpers/replicant_helpers.coffee +18 -0
  215. data/assets/bower/turbolinks5/test/src/modules/navigation_tests.coffee +75 -0
  216. data/assets/bower/turbolinks5/test/src/modules/rendering_tests.coffee +123 -0
  217. data/assets/bower/turbolinks5/test/src/modules/visit_tests.coffee +49 -0
  218. data/assets/bower/turbolinks5/test/src/test.coffee +4 -0
  219. data/assets/bower/turbolinks5/test/src/test.css +20 -0
  220. data/assets/bower/turbolinks5/test/vendor/replicant.js +10 -0
  221. data/assets/fonts/cormorant-garamond/Cormorant-Garamond-700.eot +0 -0
  222. data/assets/fonts/cormorant-garamond/Cormorant-Garamond-700.ttf +0 -0
  223. data/assets/fonts/cormorant-garamond/Cormorant-Garamond-700.woff +0 -0
  224. data/assets/fonts/cormorant-garamond/Cormorant-Garamond-700.woff2 +0 -0
  225. data/assets/fonts/ionicons/ionicons.eot +0 -0
  226. data/assets/fonts/ionicons/ionicons.svg +2232 -0
  227. data/assets/fonts/ionicons/ionicons.ttf +0 -0
  228. data/assets/fonts/ionicons/ionicons.woff +0 -0
  229. data/assets/fonts/lato/Lato-300.eot +0 -0
  230. data/assets/fonts/lato/Lato-300.ttf +0 -0
  231. data/assets/fonts/lato/Lato-300.woff +0 -0
  232. data/assets/fonts/lato/Lato-300.woff2 +0 -0
  233. data/assets/fonts/lato/Lato-700.eot +0 -0
  234. data/assets/fonts/lato/Lato-700.ttf +0 -0
  235. data/assets/fonts/lato/Lato-700.woff +0 -0
  236. data/assets/fonts/lato/Lato-700.woff2 +0 -0
  237. data/assets/fonts/lato/Lato-regular.eot +0 -0
  238. data/assets/fonts/lato/Lato-regular.ttf +0 -0
  239. data/assets/fonts/lato/Lato-regular.woff +0 -0
  240. data/assets/fonts/lato/Lato-regular.woff2 +0 -0
  241. data/assets/images/about.jpg +0 -0
  242. data/assets/images/about@2x.jpg +0 -0
  243. data/assets/images/apple-touch-icon.png +0 -0
  244. data/assets/images/documentation/chalk-intro.png +0 -0
  245. data/assets/images/documentation/chalk-intro@2x.png +0 -0
  246. data/assets/images/documentation/enlarge.gif +0 -0
  247. data/assets/images/documentation/enlarge@2x.gif +0 -0
  248. data/assets/images/documentation/sample-image.jpg +0 -0
  249. data/assets/images/documentation/sample-image@2x.jpg +0 -0
  250. data/assets/images/og-image.jpg +0 -0
  251. data/assets/javascripts/application.js +24 -0
  252. data/assets/javascripts/vendor.js +6 -0
  253. data/assets/javascripts/vendor/jquery-throttle-debounce.js +9 -0
  254. data/assets/javascripts/vendor/retina.js +182 -0
  255. data/assets/stylesheets/.csscomb.json +197 -0
  256. data/assets/stylesheets/.scss-lint.yml +33 -0
  257. data/assets/stylesheets/_base.scss +151 -0
  258. data/assets/stylesheets/_mixins.scss +28 -0
  259. data/assets/stylesheets/_variables.scss +47 -0
  260. data/assets/stylesheets/dark.scss +70 -0
  261. data/assets/stylesheets/fonts.scss +63 -0
  262. data/assets/stylesheets/layouts/_footer.scss +17 -0
  263. data/assets/stylesheets/layouts/_grid.scss +102 -0
  264. data/assets/stylesheets/light.scss +70 -0
  265. data/assets/stylesheets/modules/_about.scss +10 -0
  266. data/assets/stylesheets/modules/_articles.scss +211 -0
  267. data/assets/stylesheets/modules/_embed.scss +31 -0
  268. data/assets/stylesheets/modules/_header.scss +57 -0
  269. data/assets/stylesheets/modules/_highlights-dark.scss +415 -0
  270. data/assets/stylesheets/modules/_highlights-light.scss +409 -0
  271. data/assets/stylesheets/modules/_icons.scss +2967 -0
  272. data/assets/stylesheets/notfound-dark.scss +90 -0
  273. data/assets/stylesheets/notfound-light.scss +90 -0
  274. data/assets/stylesheets/vendor/_normalize.scss +461 -0
  275. metadata +276 -3
@@ -0,0 +1,123 @@
1
+ define( [
2
+ "../core",
3
+ "../css"
4
+ ], function( jQuery ) {
5
+
6
+ "use strict";
7
+
8
+ function Tween( elem, options, prop, end, easing ) {
9
+ return new Tween.prototype.init( elem, options, prop, end, easing );
10
+ }
11
+ jQuery.Tween = Tween;
12
+
13
+ Tween.prototype = {
14
+ constructor: Tween,
15
+ init: function( elem, options, prop, end, easing, unit ) {
16
+ this.elem = elem;
17
+ this.prop = prop;
18
+ this.easing = easing || jQuery.easing._default;
19
+ this.options = options;
20
+ this.start = this.now = this.cur();
21
+ this.end = end;
22
+ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
23
+ },
24
+ cur: function() {
25
+ var hooks = Tween.propHooks[ this.prop ];
26
+
27
+ return hooks && hooks.get ?
28
+ hooks.get( this ) :
29
+ Tween.propHooks._default.get( this );
30
+ },
31
+ run: function( percent ) {
32
+ var eased,
33
+ hooks = Tween.propHooks[ this.prop ];
34
+
35
+ if ( this.options.duration ) {
36
+ this.pos = eased = jQuery.easing[ this.easing ](
37
+ percent, this.options.duration * percent, 0, 1, this.options.duration
38
+ );
39
+ } else {
40
+ this.pos = eased = percent;
41
+ }
42
+ this.now = ( this.end - this.start ) * eased + this.start;
43
+
44
+ if ( this.options.step ) {
45
+ this.options.step.call( this.elem, this.now, this );
46
+ }
47
+
48
+ if ( hooks && hooks.set ) {
49
+ hooks.set( this );
50
+ } else {
51
+ Tween.propHooks._default.set( this );
52
+ }
53
+ return this;
54
+ }
55
+ };
56
+
57
+ Tween.prototype.init.prototype = Tween.prototype;
58
+
59
+ Tween.propHooks = {
60
+ _default: {
61
+ get: function( tween ) {
62
+ var result;
63
+
64
+ // Use a property on the element directly when it is not a DOM element,
65
+ // or when there is no matching style property that exists.
66
+ if ( tween.elem.nodeType !== 1 ||
67
+ tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
68
+ return tween.elem[ tween.prop ];
69
+ }
70
+
71
+ // Passing an empty string as a 3rd parameter to .css will automatically
72
+ // attempt a parseFloat and fallback to a string if the parse fails.
73
+ // Simple values such as "10px" are parsed to Float;
74
+ // complex values such as "rotate(1rad)" are returned as-is.
75
+ result = jQuery.css( tween.elem, tween.prop, "" );
76
+
77
+ // Empty strings, null, undefined and "auto" are converted to 0.
78
+ return !result || result === "auto" ? 0 : result;
79
+ },
80
+ set: function( tween ) {
81
+
82
+ // Use step hook for back compat.
83
+ // Use cssHook if its there.
84
+ // Use .style if available and use plain properties where available.
85
+ if ( jQuery.fx.step[ tween.prop ] ) {
86
+ jQuery.fx.step[ tween.prop ]( tween );
87
+ } else if ( tween.elem.nodeType === 1 &&
88
+ ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
89
+ jQuery.cssHooks[ tween.prop ] ) ) {
90
+ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
91
+ } else {
92
+ tween.elem[ tween.prop ] = tween.now;
93
+ }
94
+ }
95
+ }
96
+ };
97
+
98
+ // Support: IE <=9 only
99
+ // Panic based approach to setting things on disconnected nodes
100
+ Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
101
+ set: function( tween ) {
102
+ if ( tween.elem.nodeType && tween.elem.parentNode ) {
103
+ tween.elem[ tween.prop ] = tween.now;
104
+ }
105
+ }
106
+ };
107
+
108
+ jQuery.easing = {
109
+ linear: function( p ) {
110
+ return p;
111
+ },
112
+ swing: function( p ) {
113
+ return 0.5 - Math.cos( p * Math.PI ) / 2;
114
+ },
115
+ _default: "swing"
116
+ };
117
+
118
+ jQuery.fx = Tween.prototype.init;
119
+
120
+ // Back compat <1.8 extension point
121
+ jQuery.fx.step = {};
122
+
123
+ } );
@@ -0,0 +1,15 @@
1
+ define( [
2
+ "../core",
3
+ "../selector",
4
+ "../effects"
5
+ ], function( jQuery ) {
6
+
7
+ "use strict";
8
+
9
+ jQuery.expr.pseudos.animated = function( elem ) {
10
+ return jQuery.grep( jQuery.timers, function( fn ) {
11
+ return elem === fn.elem;
12
+ } ).length;
13
+ };
14
+
15
+ } );
@@ -0,0 +1,745 @@
1
+ define( [
2
+ "./core",
3
+ "./var/document",
4
+ "./var/documentElement",
5
+ "./var/rnothtmlwhite",
6
+ "./var/slice",
7
+ "./data/var/dataPriv",
8
+
9
+ "./core/init",
10
+ "./selector"
11
+ ], function( jQuery, document, documentElement, rnothtmlwhite, slice, dataPriv ) {
12
+
13
+ "use strict";
14
+
15
+ var
16
+ rkeyEvent = /^key/,
17
+ rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
18
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
19
+
20
+ function returnTrue() {
21
+ return true;
22
+ }
23
+
24
+ function returnFalse() {
25
+ return false;
26
+ }
27
+
28
+ // Support: IE <=9 only
29
+ // See #13393 for more info
30
+ function safeActiveElement() {
31
+ try {
32
+ return document.activeElement;
33
+ } catch ( err ) { }
34
+ }
35
+
36
+ function on( elem, types, selector, data, fn, one ) {
37
+ var origFn, type;
38
+
39
+ // Types can be a map of types/handlers
40
+ if ( typeof types === "object" ) {
41
+
42
+ // ( types-Object, selector, data )
43
+ if ( typeof selector !== "string" ) {
44
+
45
+ // ( types-Object, data )
46
+ data = data || selector;
47
+ selector = undefined;
48
+ }
49
+ for ( type in types ) {
50
+ on( elem, type, selector, data, types[ type ], one );
51
+ }
52
+ return elem;
53
+ }
54
+
55
+ if ( data == null && fn == null ) {
56
+
57
+ // ( types, fn )
58
+ fn = selector;
59
+ data = selector = undefined;
60
+ } else if ( fn == null ) {
61
+ if ( typeof selector === "string" ) {
62
+
63
+ // ( types, selector, fn )
64
+ fn = data;
65
+ data = undefined;
66
+ } else {
67
+
68
+ // ( types, data, fn )
69
+ fn = data;
70
+ data = selector;
71
+ selector = undefined;
72
+ }
73
+ }
74
+ if ( fn === false ) {
75
+ fn = returnFalse;
76
+ } else if ( !fn ) {
77
+ return elem;
78
+ }
79
+
80
+ if ( one === 1 ) {
81
+ origFn = fn;
82
+ fn = function( event ) {
83
+
84
+ // Can use an empty set, since event contains the info
85
+ jQuery().off( event );
86
+ return origFn.apply( this, arguments );
87
+ };
88
+
89
+ // Use same guid so caller can remove using origFn
90
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
91
+ }
92
+ return elem.each( function() {
93
+ jQuery.event.add( this, types, fn, data, selector );
94
+ } );
95
+ }
96
+
97
+ /*
98
+ * Helper functions for managing events -- not part of the public interface.
99
+ * Props to Dean Edwards' addEvent library for many of the ideas.
100
+ */
101
+ jQuery.event = {
102
+
103
+ global: {},
104
+
105
+ add: function( elem, types, handler, data, selector ) {
106
+
107
+ var handleObjIn, eventHandle, tmp,
108
+ events, t, handleObj,
109
+ special, handlers, type, namespaces, origType,
110
+ elemData = dataPriv.get( elem );
111
+
112
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
113
+ if ( !elemData ) {
114
+ return;
115
+ }
116
+
117
+ // Caller can pass in an object of custom data in lieu of the handler
118
+ if ( handler.handler ) {
119
+ handleObjIn = handler;
120
+ handler = handleObjIn.handler;
121
+ selector = handleObjIn.selector;
122
+ }
123
+
124
+ // Ensure that invalid selectors throw exceptions at attach time
125
+ // Evaluate against documentElement in case elem is a non-element node (e.g., document)
126
+ if ( selector ) {
127
+ jQuery.find.matchesSelector( documentElement, selector );
128
+ }
129
+
130
+ // Make sure that the handler has a unique ID, used to find/remove it later
131
+ if ( !handler.guid ) {
132
+ handler.guid = jQuery.guid++;
133
+ }
134
+
135
+ // Init the element's event structure and main handler, if this is the first
136
+ if ( !( events = elemData.events ) ) {
137
+ events = elemData.events = {};
138
+ }
139
+ if ( !( eventHandle = elemData.handle ) ) {
140
+ eventHandle = elemData.handle = function( e ) {
141
+
142
+ // Discard the second event of a jQuery.event.trigger() and
143
+ // when an event is called after a page has unloaded
144
+ return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
145
+ jQuery.event.dispatch.apply( elem, arguments ) : undefined;
146
+ };
147
+ }
148
+
149
+ // Handle multiple events separated by a space
150
+ types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
151
+ t = types.length;
152
+ while ( t-- ) {
153
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
154
+ type = origType = tmp[ 1 ];
155
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
156
+
157
+ // There *must* be a type, no attaching namespace-only handlers
158
+ if ( !type ) {
159
+ continue;
160
+ }
161
+
162
+ // If event changes its type, use the special event handlers for the changed type
163
+ special = jQuery.event.special[ type ] || {};
164
+
165
+ // If selector defined, determine special event api type, otherwise given type
166
+ type = ( selector ? special.delegateType : special.bindType ) || type;
167
+
168
+ // Update special based on newly reset type
169
+ special = jQuery.event.special[ type ] || {};
170
+
171
+ // handleObj is passed to all event handlers
172
+ handleObj = jQuery.extend( {
173
+ type: type,
174
+ origType: origType,
175
+ data: data,
176
+ handler: handler,
177
+ guid: handler.guid,
178
+ selector: selector,
179
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
180
+ namespace: namespaces.join( "." )
181
+ }, handleObjIn );
182
+
183
+ // Init the event handler queue if we're the first
184
+ if ( !( handlers = events[ type ] ) ) {
185
+ handlers = events[ type ] = [];
186
+ handlers.delegateCount = 0;
187
+
188
+ // Only use addEventListener if the special events handler returns false
189
+ if ( !special.setup ||
190
+ special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
191
+
192
+ if ( elem.addEventListener ) {
193
+ elem.addEventListener( type, eventHandle );
194
+ }
195
+ }
196
+ }
197
+
198
+ if ( special.add ) {
199
+ special.add.call( elem, handleObj );
200
+
201
+ if ( !handleObj.handler.guid ) {
202
+ handleObj.handler.guid = handler.guid;
203
+ }
204
+ }
205
+
206
+ // Add to the element's handler list, delegates in front
207
+ if ( selector ) {
208
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
209
+ } else {
210
+ handlers.push( handleObj );
211
+ }
212
+
213
+ // Keep track of which events have ever been used, for event optimization
214
+ jQuery.event.global[ type ] = true;
215
+ }
216
+
217
+ },
218
+
219
+ // Detach an event or set of events from an element
220
+ remove: function( elem, types, handler, selector, mappedTypes ) {
221
+
222
+ var j, origCount, tmp,
223
+ events, t, handleObj,
224
+ special, handlers, type, namespaces, origType,
225
+ elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
226
+
227
+ if ( !elemData || !( events = elemData.events ) ) {
228
+ return;
229
+ }
230
+
231
+ // Once for each type.namespace in types; type may be omitted
232
+ types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
233
+ t = types.length;
234
+ while ( t-- ) {
235
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
236
+ type = origType = tmp[ 1 ];
237
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
238
+
239
+ // Unbind all events (on this namespace, if provided) for the element
240
+ if ( !type ) {
241
+ for ( type in events ) {
242
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
243
+ }
244
+ continue;
245
+ }
246
+
247
+ special = jQuery.event.special[ type ] || {};
248
+ type = ( selector ? special.delegateType : special.bindType ) || type;
249
+ handlers = events[ type ] || [];
250
+ tmp = tmp[ 2 ] &&
251
+ new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
252
+
253
+ // Remove matching events
254
+ origCount = j = handlers.length;
255
+ while ( j-- ) {
256
+ handleObj = handlers[ j ];
257
+
258
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
259
+ ( !handler || handler.guid === handleObj.guid ) &&
260
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
261
+ ( !selector || selector === handleObj.selector ||
262
+ selector === "**" && handleObj.selector ) ) {
263
+ handlers.splice( j, 1 );
264
+
265
+ if ( handleObj.selector ) {
266
+ handlers.delegateCount--;
267
+ }
268
+ if ( special.remove ) {
269
+ special.remove.call( elem, handleObj );
270
+ }
271
+ }
272
+ }
273
+
274
+ // Remove generic event handler if we removed something and no more handlers exist
275
+ // (avoids potential for endless recursion during removal of special event handlers)
276
+ if ( origCount && !handlers.length ) {
277
+ if ( !special.teardown ||
278
+ special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
279
+
280
+ jQuery.removeEvent( elem, type, elemData.handle );
281
+ }
282
+
283
+ delete events[ type ];
284
+ }
285
+ }
286
+
287
+ // Remove data and the expando if it's no longer used
288
+ if ( jQuery.isEmptyObject( events ) ) {
289
+ dataPriv.remove( elem, "handle events" );
290
+ }
291
+ },
292
+
293
+ dispatch: function( nativeEvent ) {
294
+
295
+ // Make a writable jQuery.Event from the native event object
296
+ var event = jQuery.event.fix( nativeEvent );
297
+
298
+ var i, j, ret, matched, handleObj, handlerQueue,
299
+ args = new Array( arguments.length ),
300
+ handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
301
+ special = jQuery.event.special[ event.type ] || {};
302
+
303
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
304
+ args[ 0 ] = event;
305
+
306
+ for ( i = 1; i < arguments.length; i++ ) {
307
+ args[ i ] = arguments[ i ];
308
+ }
309
+
310
+ event.delegateTarget = this;
311
+
312
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
313
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
314
+ return;
315
+ }
316
+
317
+ // Determine handlers
318
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
319
+
320
+ // Run delegates first; they may want to stop propagation beneath us
321
+ i = 0;
322
+ while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
323
+ event.currentTarget = matched.elem;
324
+
325
+ j = 0;
326
+ while ( ( handleObj = matched.handlers[ j++ ] ) &&
327
+ !event.isImmediatePropagationStopped() ) {
328
+
329
+ // Triggered event must either 1) have no namespace, or 2) have namespace(s)
330
+ // a subset or equal to those in the bound event (both can have no namespace).
331
+ if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
332
+
333
+ event.handleObj = handleObj;
334
+ event.data = handleObj.data;
335
+
336
+ ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
337
+ handleObj.handler ).apply( matched.elem, args );
338
+
339
+ if ( ret !== undefined ) {
340
+ if ( ( event.result = ret ) === false ) {
341
+ event.preventDefault();
342
+ event.stopPropagation();
343
+ }
344
+ }
345
+ }
346
+ }
347
+ }
348
+
349
+ // Call the postDispatch hook for the mapped type
350
+ if ( special.postDispatch ) {
351
+ special.postDispatch.call( this, event );
352
+ }
353
+
354
+ return event.result;
355
+ },
356
+
357
+ handlers: function( event, handlers ) {
358
+ var i, handleObj, sel, matchedHandlers, matchedSelectors,
359
+ handlerQueue = [],
360
+ delegateCount = handlers.delegateCount,
361
+ cur = event.target;
362
+
363
+ // Find delegate handlers
364
+ if ( delegateCount &&
365
+
366
+ // Support: IE <=9
367
+ // Black-hole SVG <use> instance trees (trac-13180)
368
+ cur.nodeType &&
369
+
370
+ // Support: Firefox <=42
371
+ // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
372
+ // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
373
+ // Support: IE 11 only
374
+ // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
375
+ !( event.type === "click" && event.button >= 1 ) ) {
376
+
377
+ for ( ; cur !== this; cur = cur.parentNode || this ) {
378
+
379
+ // Don't check non-elements (#13208)
380
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
381
+ if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
382
+ matchedHandlers = [];
383
+ matchedSelectors = {};
384
+ for ( i = 0; i < delegateCount; i++ ) {
385
+ handleObj = handlers[ i ];
386
+
387
+ // Don't conflict with Object.prototype properties (#13203)
388
+ sel = handleObj.selector + " ";
389
+
390
+ if ( matchedSelectors[ sel ] === undefined ) {
391
+ matchedSelectors[ sel ] = handleObj.needsContext ?
392
+ jQuery( sel, this ).index( cur ) > -1 :
393
+ jQuery.find( sel, this, null, [ cur ] ).length;
394
+ }
395
+ if ( matchedSelectors[ sel ] ) {
396
+ matchedHandlers.push( handleObj );
397
+ }
398
+ }
399
+ if ( matchedHandlers.length ) {
400
+ handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
401
+ }
402
+ }
403
+ }
404
+ }
405
+
406
+ // Add the remaining (directly-bound) handlers
407
+ cur = this;
408
+ if ( delegateCount < handlers.length ) {
409
+ handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
410
+ }
411
+
412
+ return handlerQueue;
413
+ },
414
+
415
+ addProp: function( name, hook ) {
416
+ Object.defineProperty( jQuery.Event.prototype, name, {
417
+ enumerable: true,
418
+ configurable: true,
419
+
420
+ get: jQuery.isFunction( hook ) ?
421
+ function() {
422
+ if ( this.originalEvent ) {
423
+ return hook( this.originalEvent );
424
+ }
425
+ } :
426
+ function() {
427
+ if ( this.originalEvent ) {
428
+ return this.originalEvent[ name ];
429
+ }
430
+ },
431
+
432
+ set: function( value ) {
433
+ Object.defineProperty( this, name, {
434
+ enumerable: true,
435
+ configurable: true,
436
+ writable: true,
437
+ value: value
438
+ } );
439
+ }
440
+ } );
441
+ },
442
+
443
+ fix: function( originalEvent ) {
444
+ return originalEvent[ jQuery.expando ] ?
445
+ originalEvent :
446
+ new jQuery.Event( originalEvent );
447
+ },
448
+
449
+ special: {
450
+ load: {
451
+
452
+ // Prevent triggered image.load events from bubbling to window.load
453
+ noBubble: true
454
+ },
455
+ focus: {
456
+
457
+ // Fire native event if possible so blur/focus sequence is correct
458
+ trigger: function() {
459
+ if ( this !== safeActiveElement() && this.focus ) {
460
+ this.focus();
461
+ return false;
462
+ }
463
+ },
464
+ delegateType: "focusin"
465
+ },
466
+ blur: {
467
+ trigger: function() {
468
+ if ( this === safeActiveElement() && this.blur ) {
469
+ this.blur();
470
+ return false;
471
+ }
472
+ },
473
+ delegateType: "focusout"
474
+ },
475
+ click: {
476
+
477
+ // For checkbox, fire native event so checked state will be right
478
+ trigger: function() {
479
+ if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
480
+ this.click();
481
+ return false;
482
+ }
483
+ },
484
+
485
+ // For cross-browser consistency, don't fire native .click() on links
486
+ _default: function( event ) {
487
+ return jQuery.nodeName( event.target, "a" );
488
+ }
489
+ },
490
+
491
+ beforeunload: {
492
+ postDispatch: function( event ) {
493
+
494
+ // Support: Firefox 20+
495
+ // Firefox doesn't alert if the returnValue field is not set.
496
+ if ( event.result !== undefined && event.originalEvent ) {
497
+ event.originalEvent.returnValue = event.result;
498
+ }
499
+ }
500
+ }
501
+ }
502
+ };
503
+
504
+ jQuery.removeEvent = function( elem, type, handle ) {
505
+
506
+ // This "if" is needed for plain objects
507
+ if ( elem.removeEventListener ) {
508
+ elem.removeEventListener( type, handle );
509
+ }
510
+ };
511
+
512
+ jQuery.Event = function( src, props ) {
513
+
514
+ // Allow instantiation without the 'new' keyword
515
+ if ( !( this instanceof jQuery.Event ) ) {
516
+ return new jQuery.Event( src, props );
517
+ }
518
+
519
+ // Event object
520
+ if ( src && src.type ) {
521
+ this.originalEvent = src;
522
+ this.type = src.type;
523
+
524
+ // Events bubbling up the document may have been marked as prevented
525
+ // by a handler lower down the tree; reflect the correct value.
526
+ this.isDefaultPrevented = src.defaultPrevented ||
527
+ src.defaultPrevented === undefined &&
528
+
529
+ // Support: Android <=2.3 only
530
+ src.returnValue === false ?
531
+ returnTrue :
532
+ returnFalse;
533
+
534
+ // Create target properties
535
+ // Support: Safari <=6 - 7 only
536
+ // Target should not be a text node (#504, #13143)
537
+ this.target = ( src.target && src.target.nodeType === 3 ) ?
538
+ src.target.parentNode :
539
+ src.target;
540
+
541
+ this.currentTarget = src.currentTarget;
542
+ this.relatedTarget = src.relatedTarget;
543
+
544
+ // Event type
545
+ } else {
546
+ this.type = src;
547
+ }
548
+
549
+ // Put explicitly provided properties onto the event object
550
+ if ( props ) {
551
+ jQuery.extend( this, props );
552
+ }
553
+
554
+ // Create a timestamp if incoming event doesn't have one
555
+ this.timeStamp = src && src.timeStamp || jQuery.now();
556
+
557
+ // Mark it as fixed
558
+ this[ jQuery.expando ] = true;
559
+ };
560
+
561
+ // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
562
+ // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
563
+ jQuery.Event.prototype = {
564
+ constructor: jQuery.Event,
565
+ isDefaultPrevented: returnFalse,
566
+ isPropagationStopped: returnFalse,
567
+ isImmediatePropagationStopped: returnFalse,
568
+ isSimulated: false,
569
+
570
+ preventDefault: function() {
571
+ var e = this.originalEvent;
572
+
573
+ this.isDefaultPrevented = returnTrue;
574
+
575
+ if ( e && !this.isSimulated ) {
576
+ e.preventDefault();
577
+ }
578
+ },
579
+ stopPropagation: function() {
580
+ var e = this.originalEvent;
581
+
582
+ this.isPropagationStopped = returnTrue;
583
+
584
+ if ( e && !this.isSimulated ) {
585
+ e.stopPropagation();
586
+ }
587
+ },
588
+ stopImmediatePropagation: function() {
589
+ var e = this.originalEvent;
590
+
591
+ this.isImmediatePropagationStopped = returnTrue;
592
+
593
+ if ( e && !this.isSimulated ) {
594
+ e.stopImmediatePropagation();
595
+ }
596
+
597
+ this.stopPropagation();
598
+ }
599
+ };
600
+
601
+ // Includes all common event props including KeyEvent and MouseEvent specific props
602
+ jQuery.each( {
603
+ altKey: true,
604
+ bubbles: true,
605
+ cancelable: true,
606
+ changedTouches: true,
607
+ ctrlKey: true,
608
+ detail: true,
609
+ eventPhase: true,
610
+ metaKey: true,
611
+ pageX: true,
612
+ pageY: true,
613
+ shiftKey: true,
614
+ view: true,
615
+ "char": true,
616
+ charCode: true,
617
+ key: true,
618
+ keyCode: true,
619
+ button: true,
620
+ buttons: true,
621
+ clientX: true,
622
+ clientY: true,
623
+ offsetX: true,
624
+ offsetY: true,
625
+ pointerId: true,
626
+ pointerType: true,
627
+ screenX: true,
628
+ screenY: true,
629
+ targetTouches: true,
630
+ toElement: true,
631
+ touches: true,
632
+
633
+ which: function( event ) {
634
+ var button = event.button;
635
+
636
+ // Add which for key events
637
+ if ( event.which == null && rkeyEvent.test( event.type ) ) {
638
+ return event.charCode != null ? event.charCode : event.keyCode;
639
+ }
640
+
641
+ // Add which for click: 1 === left; 2 === middle; 3 === right
642
+ if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
643
+ if ( button & 1 ) {
644
+ return 1;
645
+ }
646
+
647
+ if ( button & 2 ) {
648
+ return 3;
649
+ }
650
+
651
+ if ( button & 4 ) {
652
+ return 2;
653
+ }
654
+
655
+ return 0;
656
+ }
657
+
658
+ return event.which;
659
+ }
660
+ }, jQuery.event.addProp );
661
+
662
+ // Create mouseenter/leave events using mouseover/out and event-time checks
663
+ // so that event delegation works in jQuery.
664
+ // Do the same for pointerenter/pointerleave and pointerover/pointerout
665
+ //
666
+ // Support: Safari 7 only
667
+ // Safari sends mouseenter too often; see:
668
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=470258
669
+ // for the description of the bug (it existed in older Chrome versions as well).
670
+ jQuery.each( {
671
+ mouseenter: "mouseover",
672
+ mouseleave: "mouseout",
673
+ pointerenter: "pointerover",
674
+ pointerleave: "pointerout"
675
+ }, function( orig, fix ) {
676
+ jQuery.event.special[ orig ] = {
677
+ delegateType: fix,
678
+ bindType: fix,
679
+
680
+ handle: function( event ) {
681
+ var ret,
682
+ target = this,
683
+ related = event.relatedTarget,
684
+ handleObj = event.handleObj;
685
+
686
+ // For mouseenter/leave call the handler if related is outside the target.
687
+ // NB: No relatedTarget if the mouse left/entered the browser window
688
+ if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
689
+ event.type = handleObj.origType;
690
+ ret = handleObj.handler.apply( this, arguments );
691
+ event.type = fix;
692
+ }
693
+ return ret;
694
+ }
695
+ };
696
+ } );
697
+
698
+ jQuery.fn.extend( {
699
+
700
+ on: function( types, selector, data, fn ) {
701
+ return on( this, types, selector, data, fn );
702
+ },
703
+ one: function( types, selector, data, fn ) {
704
+ return on( this, types, selector, data, fn, 1 );
705
+ },
706
+ off: function( types, selector, fn ) {
707
+ var handleObj, type;
708
+ if ( types && types.preventDefault && types.handleObj ) {
709
+
710
+ // ( event ) dispatched jQuery.Event
711
+ handleObj = types.handleObj;
712
+ jQuery( types.delegateTarget ).off(
713
+ handleObj.namespace ?
714
+ handleObj.origType + "." + handleObj.namespace :
715
+ handleObj.origType,
716
+ handleObj.selector,
717
+ handleObj.handler
718
+ );
719
+ return this;
720
+ }
721
+ if ( typeof types === "object" ) {
722
+
723
+ // ( types-object [, selector] )
724
+ for ( type in types ) {
725
+ this.off( type, selector, types[ type ] );
726
+ }
727
+ return this;
728
+ }
729
+ if ( selector === false || typeof selector === "function" ) {
730
+
731
+ // ( types [, fn] )
732
+ fn = selector;
733
+ selector = undefined;
734
+ }
735
+ if ( fn === false ) {
736
+ fn = returnFalse;
737
+ }
738
+ return this.each( function() {
739
+ jQuery.event.remove( this, types, fn, selector );
740
+ } );
741
+ }
742
+ } );
743
+
744
+ return jQuery;
745
+ } );