columbus3 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (344) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/README.md +122 -0
  4. data/bin/console +0 -0
  5. data/bin/setup +0 -0
  6. data/bower.json +25 -0
  7. data/bower_components/jquery/.bower.json +7 -20
  8. data/bower_components/jquery/AUTHORS.txt +301 -0
  9. data/bower_components/jquery/{MIT-LICENSE.txt → LICENSE.txt} +17 -2
  10. data/bower_components/jquery/README.md +67 -0
  11. data/bower_components/jquery/bower.json +2 -16
  12. data/bower_components/jquery/dist/core.js +476 -0
  13. data/bower_components/jquery/dist/jquery.js +3861 -2818
  14. data/bower_components/jquery/dist/jquery.min.js +4 -5
  15. data/bower_components/jquery/dist/jquery.min.map +1 -1
  16. data/bower_components/jquery/dist/jquery.slim.js +8160 -0
  17. data/bower_components/jquery/dist/jquery.slim.min.js +4 -0
  18. data/bower_components/jquery/dist/jquery.slim.min.map +1 -0
  19. data/bower_components/jquery/external/sizzle/LICENSE.txt +36 -0
  20. data/bower_components/jquery/{src → external}/sizzle/dist/sizzle.js +445 -240
  21. data/bower_components/jquery/external/sizzle/dist/sizzle.min.js +3 -0
  22. data/bower_components/jquery/external/sizzle/dist/sizzle.min.map +1 -0
  23. data/bower_components/jquery/src/.eslintrc.json +5 -0
  24. data/bower_components/jquery/src/ajax.js +174 -105
  25. data/bower_components/jquery/src/ajax/jsonp.js +27 -14
  26. data/bower_components/jquery/src/ajax/load.js +24 -23
  27. data/bower_components/jquery/src/ajax/parseXML.js +8 -6
  28. data/bower_components/jquery/src/ajax/script.js +25 -12
  29. data/bower_components/jquery/src/ajax/var/location.js +5 -0
  30. data/bower_components/jquery/src/ajax/var/nonce.js +4 -2
  31. data/bower_components/jquery/src/ajax/var/rquery.js +5 -3
  32. data/bower_components/jquery/src/ajax/xhr.js +76 -43
  33. data/bower_components/jquery/src/attributes.js +4 -2
  34. data/bower_components/jquery/src/attributes/attr.js +60 -60
  35. data/bower_components/jquery/src/attributes/classes.js +87 -71
  36. data/bower_components/jquery/src/attributes/prop.js +81 -32
  37. data/bower_components/jquery/src/attributes/support.js +11 -13
  38. data/bower_components/jquery/src/attributes/val.js +66 -37
  39. data/bower_components/jquery/src/callbacks.js +119 -90
  40. data/bower_components/jquery/src/core.js +108 -134
  41. data/bower_components/jquery/src/core/DOMEval.js +16 -0
  42. data/bower_components/jquery/src/core/access.js +21 -11
  43. data/bower_components/jquery/src/core/init.js +33 -28
  44. data/bower_components/jquery/src/core/nodeName.js +13 -0
  45. data/bower_components/jquery/src/core/parseHTML.js +39 -13
  46. data/bower_components/jquery/src/core/ready-no-deferred.js +96 -0
  47. data/bower_components/jquery/src/core/ready.js +40 -51
  48. data/bower_components/jquery/src/core/readyException.js +13 -0
  49. data/bower_components/jquery/src/core/stripAndCollapse.js +14 -0
  50. data/bower_components/jquery/src/core/support.js +20 -0
  51. data/bower_components/jquery/src/core/var/rsingleTag.js +5 -3
  52. data/bower_components/jquery/src/css.js +146 -158
  53. data/bower_components/jquery/src/css/addGetHookIf.js +7 -3
  54. data/bower_components/jquery/src/css/adjustCSS.js +71 -0
  55. data/bower_components/jquery/src/css/curCSS.js +22 -14
  56. data/bower_components/jquery/src/css/hiddenVisibleSelectors.js +8 -8
  57. data/bower_components/jquery/src/css/showHide.js +105 -0
  58. data/bower_components/jquery/src/css/support.js +69 -76
  59. data/bower_components/jquery/src/css/var/cssExpand.js +4 -2
  60. data/bower_components/jquery/src/css/var/getStyles.js +11 -6
  61. data/bower_components/jquery/src/css/var/isHiddenWithinTree.js +34 -0
  62. data/bower_components/jquery/src/css/var/rmargin.js +5 -3
  63. data/bower_components/jquery/src/css/var/rnumnonpx.js +4 -2
  64. data/bower_components/jquery/src/css/{swap.js → var/swap.js} +5 -7
  65. data/bower_components/jquery/src/data.js +67 -66
  66. data/bower_components/jquery/src/data/Data.js +87 -107
  67. data/bower_components/jquery/src/data/{accepts.js → var/acceptData.js} +6 -7
  68. data/bower_components/jquery/src/data/var/{data_priv.js → dataPriv.js} +4 -2
  69. data/bower_components/jquery/src/data/var/{data_user.js → dataUser.js} +4 -2
  70. data/bower_components/jquery/src/deferred.js +314 -72
  71. data/bower_components/jquery/src/deferred/exceptionHook.js +21 -0
  72. data/bower_components/jquery/src/deprecated.js +36 -9
  73. data/bower_components/jquery/src/dimensions.js +16 -10
  74. data/bower_components/jquery/src/effects.js +257 -206
  75. data/bower_components/jquery/src/effects/Tween.js +18 -9
  76. data/bower_components/jquery/src/effects/animatedSelector.js +7 -5
  77. data/bower_components/jquery/src/event.js +297 -419
  78. data/bower_components/jquery/src/event/ajax.js +13 -4
  79. data/bower_components/jquery/src/event/alias.js +13 -23
  80. data/bower_components/jquery/src/event/focusin.js +55 -0
  81. data/bower_components/jquery/src/event/support.js +5 -3
  82. data/bower_components/jquery/src/event/trigger.js +185 -0
  83. data/bower_components/jquery/src/exports/amd.js +5 -3
  84. data/bower_components/jquery/src/exports/global.js +8 -6
  85. data/bower_components/jquery/src/jquery.js +6 -2
  86. data/bower_components/jquery/src/manipulation.js +218 -310
  87. data/bower_components/jquery/src/manipulation/_evalUrl.js +9 -4
  88. data/bower_components/jquery/src/manipulation/buildFragment.js +104 -0
  89. data/bower_components/jquery/src/manipulation/getAll.js +32 -0
  90. data/bower_components/jquery/src/manipulation/setGlobalEval.js +22 -0
  91. data/bower_components/jquery/src/manipulation/support.js +11 -8
  92. data/bower_components/jquery/src/manipulation/var/rcheckableType.js +5 -3
  93. data/bower_components/jquery/src/manipulation/var/rscriptType.js +5 -0
  94. data/bower_components/jquery/src/manipulation/var/rtagName.js +5 -0
  95. data/bower_components/jquery/src/manipulation/wrapMap.js +29 -0
  96. data/bower_components/jquery/src/offset.js +75 -53
  97. data/bower_components/jquery/src/queue.js +26 -23
  98. data/bower_components/jquery/src/queue/delay.js +8 -6
  99. data/bower_components/jquery/src/selector-native.js +133 -68
  100. data/bower_components/jquery/src/selector-sizzle.js +10 -5
  101. data/bower_components/jquery/src/selector.js +3 -1
  102. data/bower_components/jquery/src/serialize.js +52 -33
  103. data/bower_components/jquery/src/traversing.js +61 -69
  104. data/bower_components/jquery/src/traversing/findFilter.js +37 -31
  105. data/bower_components/jquery/src/traversing/var/dir.js +22 -0
  106. data/bower_components/jquery/src/traversing/var/rneedsContext.js +4 -2
  107. data/bower_components/jquery/src/traversing/var/siblings.js +17 -0
  108. data/bower_components/jquery/src/var/ObjectFunctionString.js +7 -0
  109. data/bower_components/jquery/src/var/arr.js +4 -2
  110. data/bower_components/jquery/src/var/class2type.js +4 -2
  111. data/bower_components/jquery/src/var/concat.js +4 -2
  112. data/bower_components/jquery/src/var/document.js +5 -0
  113. data/bower_components/jquery/src/var/documentElement.js +7 -0
  114. data/bower_components/jquery/src/var/fnToString.js +7 -0
  115. data/bower_components/jquery/src/var/getProto.js +5 -0
  116. data/bower_components/jquery/src/var/hasOwn.js +4 -2
  117. data/bower_components/jquery/src/var/indexOf.js +4 -2
  118. data/bower_components/jquery/src/var/pnum.js +5 -3
  119. data/bower_components/jquery/src/var/push.js +4 -2
  120. data/bower_components/jquery/src/var/rcssNum.js +9 -0
  121. data/bower_components/jquery/src/var/rnothtmlwhite.js +8 -0
  122. data/bower_components/jquery/src/var/slice.js +4 -2
  123. data/bower_components/jquery/src/var/support.js +4 -2
  124. data/bower_components/jquery/src/var/toString.js +4 -2
  125. data/bower_components/jquery/src/wrap.js +24 -26
  126. data/bower_components/leaflet-providers/.bower.json +6 -7
  127. data/bower_components/leaflet-providers/CHANGELOG.md +62 -0
  128. data/bower_components/leaflet-providers/README.md +12 -3
  129. data/bower_components/leaflet-providers/bower.json +1 -1
  130. data/bower_components/leaflet-providers/leaflet-providers.js +133 -92
  131. data/bower_components/leaflet-providers/package.json +14 -7
  132. data/bower_components/leaflet/.bower.json +10 -14
  133. data/bower_components/leaflet/CHANGELOG.md +648 -3
  134. data/bower_components/leaflet/CONTRIBUTING.md +88 -33
  135. data/bower_components/leaflet/ISSUE_TEMPLATE.md +25 -0
  136. data/bower_components/leaflet/Jakefile.js +73 -14
  137. data/bower_components/leaflet/LICENSE +1 -1
  138. data/bower_components/leaflet/PLUGIN-GUIDE.md +97 -3
  139. data/bower_components/leaflet/README.md +6 -8
  140. data/bower_components/leaflet/bower.json +3 -9
  141. data/bower_components/leaflet/dist/images/layers-2x.png +0 -0
  142. data/bower_components/leaflet/dist/images/layers.png +0 -0
  143. data/bower_components/leaflet/dist/images/marker-icon-2x.png +0 -0
  144. data/bower_components/leaflet/dist/images/marker-icon.png +0 -0
  145. data/bower_components/leaflet/dist/images/marker-shadow.png +0 -0
  146. data/bower_components/leaflet/dist/leaflet-src.js +12301 -7898
  147. data/bower_components/leaflet/dist/leaflet-src.js.map +1 -0
  148. data/bower_components/leaflet/dist/leaflet.css +196 -43
  149. data/bower_components/leaflet/dist/leaflet.js +6 -9
  150. data/bower_components/leaflet/dist/leaflet.js.map +1 -0
  151. data/bower_components/leaflet/docs/CNAME +1 -0
  152. data/bower_components/leaflet/docs/Gemfile +4 -0
  153. data/bower_components/leaflet/docs/_config.yml +19 -0
  154. data/bower_components/leaflet/docs/_includes/frame.html +9 -0
  155. data/bower_components/leaflet/docs/_includes/tutorial_link.html +8 -0
  156. data/bower_components/leaflet/docs/_layouts/post.html +30 -0
  157. data/bower_components/leaflet/docs/_layouts/redirected.html +14 -0
  158. data/bower_components/leaflet/docs/_layouts/tutorial.html +9 -0
  159. data/bower_components/leaflet/docs/_layouts/tutorial_frame.html +32 -0
  160. data/bower_components/leaflet/docs/_layouts/tutorial_v2.html +9 -0
  161. data/bower_components/leaflet/docs/_layouts/v2.html +159 -0
  162. data/bower_components/leaflet/docs/_posts/2012-07-30-leaflet-0-4-released.md +240 -0
  163. data/bower_components/leaflet/docs/_posts/2012-08-07-leaflet-0-4-3-and-a-new-tutorial.md +47 -0
  164. data/bower_components/leaflet/docs/_posts/2012-08-20-guest-post-markerclusterer-0-1-released.md +112 -0
  165. data/bower_components/leaflet/docs/_posts/2012-10-25-leaflet-0-4-5-bugfix-release-and-plans-for-0.5.md +36 -0
  166. data/bower_components/leaflet/docs/_posts/2013-01-17-leaflet-0-5-released.md +24 -0
  167. data/bower_components/leaflet/docs/_posts/2013-02-20-guest-post-draw.md +146 -0
  168. data/bower_components/leaflet/docs/_posts/2013-06-26-leaflet-0-6-released-dc-code-sprint-mapbox.md +31 -0
  169. data/bower_components/leaflet/docs/_posts/2013-06-28-leaflet-plugin-authoring-guide.md +111 -0
  170. data/bower_components/leaflet/docs/_posts/2013-11-18-leaflet-0-7-released-plans-for-future.md +56 -0
  171. data/bower_components/leaflet/docs/_posts/2015-07-01-leaflet-is-alive-and-kicking.md +21 -0
  172. data/bower_components/leaflet/docs/_posts/2015-07-15-leaflet-1.0-beta1-released.md +60 -0
  173. data/bower_components/leaflet/docs/_posts/2015-09-01-leaflet-0.7.4-released.md +29 -0
  174. data/bower_components/leaflet/docs/_posts/2015-10-14-leaflet-1.0-beta2-released.md +35 -0
  175. data/bower_components/leaflet/docs/_posts/2016-03-20-debugging-touch-interactions.md +101 -0
  176. data/bower_components/leaflet/docs/_posts/2016-04-18-leaflet-1.0-rc1.md +78 -0
  177. data/bower_components/leaflet/docs/_posts/2016-07-16-leaflet-1.0-rc2.md +60 -0
  178. data/bower_components/leaflet/docs/_posts/2016-08-05-leaflet-1.0-rc3.md +53 -0
  179. data/bower_components/leaflet/docs/_posts/2016-09-27-leaflet-1.0-final.md +50 -0
  180. data/bower_components/leaflet/docs/_posts/2016-11-21-leaflet-1.0.2.md +25 -0
  181. data/bower_components/leaflet/docs/_posts/2017-01-23-leaflet-1.0.3.md +27 -0
  182. data/bower_components/leaflet/docs/atom.xml +29 -0
  183. data/bower_components/leaflet/docs/blog.md +24 -0
  184. data/bower_components/leaflet/docs/docs/css/main.css +1092 -0
  185. data/bower_components/leaflet/docs/docs/css/normalize.css +426 -0
  186. data/bower_components/leaflet/docs/docs/highlight/LICENSE +24 -0
  187. data/bower_components/leaflet/docs/docs/highlight/highlight.pack.js +1 -0
  188. data/bower_components/leaflet/docs/docs/highlight/styles/github-gist.css +211 -0
  189. data/bower_components/leaflet/docs/docs/images/2016-03-20-prosthetic-hand-zooming.gif +0 -0
  190. data/bower_components/leaflet/docs/docs/images/2016-04-18-inheritances.gif +0 -0
  191. data/bower_components/leaflet/docs/docs/images/2016-04-18-leaflet-toilet-paper.jpeg +0 -0
  192. data/bower_components/leaflet/docs/docs/images/2016-04-18-madrid-leaflet-864px.jpg +0 -0
  193. data/bower_components/leaflet/docs/docs/images/2016-07-18-remote-session.png +0 -0
  194. data/bower_components/leaflet/docs/docs/images/2016-07-18-tooltip.png +0 -0
  195. data/bower_components/leaflet/docs/docs/images/2016-08-03-iraq-hacking.jpg +0 -0
  196. data/bower_components/leaflet/docs/docs/images/favicon.ico +0 -0
  197. data/bower_components/leaflet/docs/docs/images/forum-round.png +0 -0
  198. data/bower_components/leaflet/docs/docs/images/github-round.png +0 -0
  199. data/bower_components/leaflet/docs/docs/images/logo.png +0 -0
  200. data/bower_components/leaflet/docs/docs/images/logos.png +0 -0
  201. data/bower_components/leaflet/docs/docs/images/sprite.png +0 -0
  202. data/bower_components/leaflet/docs/docs/images/sprite.svg +75 -0
  203. data/bower_components/leaflet/docs/docs/images/twitter-round.png +0 -0
  204. data/bower_components/leaflet/docs/docs/images/twitter.png +0 -0
  205. data/bower_components/leaflet/docs/docs/js/docs.js +52 -0
  206. data/bower_components/leaflet/docs/download.md +95 -0
  207. data/bower_components/leaflet/docs/examples.md +125 -0
  208. data/bower_components/leaflet/docs/examples/choropleth-example.md +5 -0
  209. data/bower_components/leaflet/docs/examples/choropleth.md +5 -0
  210. data/bower_components/leaflet/docs/examples/choropleth/example-basic.md +20 -0
  211. data/bower_components/leaflet/docs/examples/choropleth/example-color.md +46 -0
  212. data/bower_components/leaflet/docs/examples/choropleth/example.md +159 -0
  213. data/bower_components/leaflet/docs/examples/choropleth/index.md +232 -0
  214. data/bower_components/leaflet/docs/examples/choropleth/thumbnail.png +0 -0
  215. data/bower_components/leaflet/docs/examples/choropleth/us-states.js +54 -0
  216. data/bower_components/leaflet/docs/examples/crs-simple/crs-simple-example1.md +16 -0
  217. data/bower_components/leaflet/docs/examples/crs-simple/crs-simple-example2.md +20 -0
  218. data/bower_components/leaflet/docs/examples/crs-simple/crs-simple-example3.md +38 -0
  219. data/bower_components/leaflet/docs/examples/crs-simple/crs-simple.md +117 -0
  220. data/bower_components/leaflet/docs/examples/crs-simple/thumbnail.png +0 -0
  221. data/bower_components/leaflet/docs/examples/crs-simple/uqm_map_400px.png +0 -0
  222. data/bower_components/leaflet/docs/examples/crs-simple/uqm_map_detail.png +0 -0
  223. data/bower_components/leaflet/docs/examples/crs-simple/uqm_map_full.png +0 -0
  224. data/bower_components/leaflet/docs/examples/custom-icons-example.md +5 -0
  225. data/bower_components/leaflet/docs/examples/custom-icons.md +5 -0
  226. data/bower_components/leaflet/docs/examples/custom-icons/example-one-icon.md +27 -0
  227. data/bower_components/leaflet/docs/examples/custom-icons/example.md +31 -0
  228. data/bower_components/leaflet/docs/examples/custom-icons/index.md +79 -0
  229. data/bower_components/leaflet/docs/examples/custom-icons/leaf-green.png +0 -0
  230. data/bower_components/leaflet/docs/examples/custom-icons/leaf-orange.png +0 -0
  231. data/bower_components/leaflet/docs/examples/custom-icons/leaf-red.png +0 -0
  232. data/bower_components/leaflet/docs/examples/custom-icons/leaf-shadow.png +0 -0
  233. data/bower_components/leaflet/docs/examples/custom-icons/thumbnail.png +0 -0
  234. data/bower_components/leaflet/docs/examples/extending/canvascircles.md +37 -0
  235. data/bower_components/leaflet/docs/examples/extending/class-diagram.md +24 -0
  236. data/bower_components/leaflet/docs/examples/extending/class-diagram.png +0 -0
  237. data/bower_components/leaflet/docs/examples/extending/class-diagram.txt +100 -0
  238. data/bower_components/leaflet/docs/examples/extending/extending-1-classes.md +196 -0
  239. data/bower_components/leaflet/docs/examples/extending/extending-2-layers.md +210 -0
  240. data/bower_components/leaflet/docs/examples/extending/extending-3-controls.md +100 -0
  241. data/bower_components/leaflet/docs/examples/extending/gridcoords.md +32 -0
  242. data/bower_components/leaflet/docs/examples/extending/kittenlayer.md +29 -0
  243. data/bower_components/leaflet/docs/examples/extending/pixelorigin.md +90 -0
  244. data/bower_components/leaflet/docs/examples/extending/thumbnail-1.png +0 -0
  245. data/bower_components/leaflet/docs/examples/extending/thumbnail-2.png +0 -0
  246. data/bower_components/leaflet/docs/examples/extending/thumbnail-3.png +0 -0
  247. data/bower_components/leaflet/docs/examples/extending/tilt.md +59 -0
  248. data/bower_components/leaflet/docs/examples/extending/watermark.md +36 -0
  249. data/bower_components/leaflet/docs/examples/geojson-example.md +5 -0
  250. data/bower_components/leaflet/docs/examples/geojson.md +5 -0
  251. data/bower_components/leaflet/docs/examples/geojson/baseball-marker.png +0 -0
  252. data/bower_components/leaflet/docs/examples/geojson/example.md +78 -0
  253. data/bower_components/leaflet/docs/examples/geojson/geojson-example.html +89 -0
  254. data/bower_components/leaflet/docs/examples/geojson/geojson.html +281 -0
  255. data/bower_components/leaflet/docs/examples/geojson/index.md +205 -0
  256. data/bower_components/leaflet/docs/examples/geojson/sample-geojson.js +248 -0
  257. data/bower_components/leaflet/docs/examples/geojson/thumbnail.png +0 -0
  258. data/bower_components/leaflet/docs/examples/layers-control-example.md +5 -0
  259. data/bower_components/leaflet/docs/examples/layers-control.md +5 -0
  260. data/bower_components/leaflet/docs/examples/layers-control/example.md +38 -0
  261. data/bower_components/leaflet/docs/examples/layers-control/index.md +72 -0
  262. data/bower_components/leaflet/docs/examples/layers-control/thumbnail.png +0 -0
  263. data/bower_components/leaflet/docs/examples/map-panes-example.md +5 -0
  264. data/bower_components/leaflet/docs/examples/map-panes.md +5 -0
  265. data/bower_components/leaflet/docs/examples/map-panes/eu-countries.js +79 -0
  266. data/bower_components/leaflet/docs/examples/map-panes/example.md +38 -0
  267. data/bower_components/leaflet/docs/examples/map-panes/index.md +105 -0
  268. data/bower_components/leaflet/docs/examples/map-panes/thumbnail.png +0 -0
  269. data/bower_components/leaflet/docs/examples/mobile-example.md +5 -0
  270. data/bower_components/leaflet/docs/examples/mobile.md +5 -0
  271. data/bower_components/leaflet/docs/examples/mobile/example.md +42 -0
  272. data/bower_components/leaflet/docs/examples/mobile/index.md +72 -0
  273. data/bower_components/leaflet/docs/examples/mobile/thumbnail.png +0 -0
  274. data/bower_components/leaflet/docs/examples/quick-start-example.md +5 -0
  275. data/bower_components/leaflet/docs/examples/quick-start.md +5 -0
  276. data/bower_components/leaflet/docs/examples/quick-start/example-basic.md +19 -0
  277. data/bower_components/leaflet/docs/examples/quick-start/example-overlays.md +35 -0
  278. data/bower_components/leaflet/docs/examples/quick-start/example-popups.md +37 -0
  279. data/bower_components/leaflet/docs/examples/quick-start/example.md +46 -0
  280. data/bower_components/leaflet/docs/examples/quick-start/index.md +143 -0
  281. data/bower_components/leaflet/docs/examples/quick-start/thumbnail.png +0 -0
  282. data/bower_components/leaflet/docs/examples/video-overlay/example-bounds.md +23 -0
  283. data/bower_components/leaflet/docs/examples/video-overlay/example-nocontrols.md +31 -0
  284. data/bower_components/leaflet/docs/examples/video-overlay/example.md +58 -0
  285. data/bower_components/leaflet/docs/examples/video-overlay/index.md +122 -0
  286. data/bower_components/leaflet/docs/examples/video-overlay/thumbnail.gif +0 -0
  287. data/bower_components/leaflet/docs/examples/wms/qgis-wms-layers.png +0 -0
  288. data/bower_components/leaflet/docs/examples/wms/thumbnail.png +0 -0
  289. data/bower_components/leaflet/docs/examples/wms/wms-example-crs.md +18 -0
  290. data/bower_components/leaflet/docs/examples/wms/wms-example1.md +16 -0
  291. data/bower_components/leaflet/docs/examples/wms/wms-example2.md +16 -0
  292. data/bower_components/leaflet/docs/examples/wms/wms-example3.md +34 -0
  293. data/bower_components/leaflet/docs/examples/wms/wms-example4.md +29 -0
  294. data/bower_components/leaflet/docs/examples/wms/wms.md +157 -0
  295. data/bower_components/leaflet/docs/examples/zoom-levels/example-delta.md +40 -0
  296. data/bower_components/leaflet/docs/examples/zoom-levels/example-fractional.md +56 -0
  297. data/bower_components/leaflet/docs/examples/zoom-levels/example-scale.md +29 -0
  298. data/bower_components/leaflet/docs/examples/zoom-levels/example-setzoom.md +44 -0
  299. data/bower_components/leaflet/docs/examples/zoom-levels/example-zero.md +19 -0
  300. data/bower_components/leaflet/docs/examples/zoom-levels/index.md +275 -0
  301. data/bower_components/leaflet/docs/examples/zoom-levels/thumbnail.png +0 -0
  302. data/bower_components/leaflet/docs/index.html +218 -0
  303. data/bower_components/leaflet/docs/plugins.md +3854 -0
  304. data/bower_components/leaflet/docs/reference-0.7.7.html +6424 -0
  305. data/bower_components/leaflet/docs/reference-1.0.0.html +22889 -0
  306. data/bower_components/leaflet/docs/reference-1.0.2.html +23382 -0
  307. data/bower_components/leaflet/docs/reference-1.0.3.html +23495 -0
  308. data/bower_components/leaflet/docs/reference-tpl.html +89 -0
  309. data/bower_components/leaflet/docs/reference-versions.html +16 -0
  310. data/bower_components/leaflet/docs/reference.html +3 -0
  311. data/bower_components/leaflet/package.json +77 -16
  312. data/columbus3.gemspec +1 -1
  313. data/doc/ChangeLog.org +10 -0
  314. data/doc/manual.txt +122 -0
  315. data/doc/todo.org +63 -0
  316. data/exe/columbus3 +2 -246
  317. data/lib/columbus3.rb +12 -7
  318. data/lib/columbus3/cli/command_semantics.rb +352 -0
  319. data/lib/columbus3/cli/command_syntax.rb +103 -0
  320. data/lib/columbus3/metadata/query_parser.racc +21 -7
  321. data/lib/columbus3/metadata/query_parser.tab.rb +34 -34
  322. data/lib/columbus3/metadata/sidecar.rb +1 -1
  323. data/lib/columbus3/renderer/flot_renderer.rb +3 -8
  324. data/lib/columbus3/renderer/leaflet_renderer.rb +18 -29
  325. data/lib/columbus3/renderer/sanitizer.rb +8 -0
  326. data/lib/columbus3/v900track/gpx2v900.rb +31 -0
  327. data/lib/columbus3/v900track/v900track.rb +34 -8
  328. data/lib/columbus3/v900track/v900waypoint.rb +9 -0
  329. data/lib/columbus3/version.rb +1 -1
  330. data/lib/html/flot.html.erb +6 -6
  331. data/lib/html/show.html.erb +53 -76
  332. data/lib/html/track.js.erb +58 -12
  333. metadata +222 -23
  334. data/README.textile +0 -67
  335. data/bower_components/jquery/src/ajax/parseJSON.js +0 -13
  336. data/bower_components/jquery/src/css/defaultDisplay.js +0 -70
  337. data/bower_components/jquery/src/css/var/isHidden.js +0 -13
  338. data/bower_components/jquery/src/intro.js +0 -44
  339. data/bower_components/jquery/src/outro.js +0 -1
  340. data/bower_components/jquery/src/sizzle/dist/sizzle.min.js +0 -3
  341. data/bower_components/jquery/src/sizzle/dist/sizzle.min.map +0 -1
  342. data/bower_components/jquery/src/var/rnotwhite.js +0 -3
  343. data/bower_components/jquery/src/var/strundefined.js +0 -3
  344. data/bower_components/leaflet/component.json +0 -20
@@ -0,0 +1,21 @@
1
+ define( [
2
+ "../core",
3
+ "../deferred"
4
+ ], function( jQuery ) {
5
+
6
+ "use strict";
7
+
8
+ // These usually indicate a programmer mistake during development,
9
+ // warn about them ASAP rather than swallowing them by default.
10
+ var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
11
+
12
+ jQuery.Deferred.exceptionHook = function( error, stack ) {
13
+
14
+ // Support: IE 8 - 9 only
15
+ // Console exists when dev tools are open, which can happen at any time
16
+ if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
17
+ window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
18
+ }
19
+ };
20
+
21
+ } );
@@ -1,13 +1,40 @@
1
- define([
1
+ define( [
2
2
  "./core",
3
- "./traversing"
4
- ], function( jQuery ) {
3
+ "./core/nodeName"
4
+ ], function( jQuery, nodeName ) {
5
5
 
6
- // The number of elements contained in the matched element set
7
- jQuery.fn.size = function() {
8
- return this.length;
9
- };
6
+ "use strict";
7
+
8
+ jQuery.fn.extend( {
9
+
10
+ bind: function( types, data, fn ) {
11
+ return this.on( types, null, data, fn );
12
+ },
13
+ unbind: function( types, fn ) {
14
+ return this.off( types, null, fn );
15
+ },
10
16
 
11
- jQuery.fn.andSelf = jQuery.fn.addBack;
17
+ delegate: function( selector, types, data, fn ) {
18
+ return this.on( types, selector, data, fn );
19
+ },
20
+ undelegate: function( selector, types, fn ) {
21
+
22
+ // ( namespace ) or ( selector, types [, fn] )
23
+ return arguments.length === 1 ?
24
+ this.off( selector, "**" ) :
25
+ this.off( types, selector || "**", fn );
26
+ }
27
+ } );
28
+
29
+ jQuery.holdReady = function( hold ) {
30
+ if ( hold ) {
31
+ jQuery.readyWait++;
32
+ } else {
33
+ jQuery.ready( true );
34
+ }
35
+ };
36
+ jQuery.isArray = Array.isArray;
37
+ jQuery.parseJSON = JSON.parse;
38
+ jQuery.nodeName = nodeName;
12
39
 
13
- });
40
+ } );
@@ -1,12 +1,16 @@
1
- define([
1
+ define( [
2
2
  "./core",
3
3
  "./core/access",
4
4
  "./css"
5
5
  ], function( jQuery, access ) {
6
6
 
7
+ "use strict";
8
+
7
9
  // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
8
10
  jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
9
- jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
11
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
12
+ function( defaultExtra, funcName ) {
13
+
10
14
  // Margin is only for outerHeight, outerWidth
11
15
  jQuery.fn[ funcName ] = function( margin, value ) {
12
16
  var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
@@ -16,10 +20,11 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
16
20
  var doc;
17
21
 
18
22
  if ( jQuery.isWindow( elem ) ) {
19
- // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
20
- // isn't a whole lot we can do. See pull request at this URL for discussion:
21
- // https://github.com/jquery/jquery/pull/764
22
- return elem.document.documentElement[ "client" + name ];
23
+
24
+ // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
25
+ return funcName.indexOf( "outer" ) === 0 ?
26
+ elem[ "inner" + name ] :
27
+ elem.document.documentElement[ "client" + name ];
23
28
  }
24
29
 
25
30
  // Get document width or height
@@ -36,15 +41,16 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
36
41
  }
37
42
 
38
43
  return value === undefined ?
44
+
39
45
  // Get width or height on the element, requesting but not forcing parseFloat
40
46
  jQuery.css( elem, type, extra ) :
41
47
 
42
48
  // Set width or height on the element
43
49
  jQuery.style( elem, type, value, extra );
44
- }, type, chainable ? margin : undefined, chainable, null );
50
+ }, type, chainable ? margin : undefined, chainable );
45
51
  };
46
- });
47
- });
52
+ } );
53
+ } );
48
54
 
49
55
  return jQuery;
50
- });
56
+ } );
@@ -1,81 +1,49 @@
1
- define([
1
+ define( [
2
2
  "./core",
3
- "./var/pnum",
3
+ "./var/document",
4
+ "./var/rcssNum",
5
+ "./var/rnothtmlwhite",
4
6
  "./css/var/cssExpand",
5
- "./css/var/isHidden",
6
- "./css/defaultDisplay",
7
- "./data/var/data_priv",
7
+ "./css/var/isHiddenWithinTree",
8
+ "./css/var/swap",
9
+ "./css/adjustCSS",
10
+ "./data/var/dataPriv",
11
+ "./css/showHide",
8
12
 
9
13
  "./core/init",
10
- "./effects/Tween",
11
14
  "./queue",
12
- "./css",
13
15
  "./deferred",
14
- "./traversing"
15
- ], function( jQuery, pnum, cssExpand, isHidden, defaultDisplay, data_priv ) {
16
+ "./traversing",
17
+ "./manipulation",
18
+ "./css",
19
+ "./effects/Tween"
20
+ ], function( jQuery, document, rcssNum, rnothtmlwhite, cssExpand, isHiddenWithinTree, swap,
21
+ adjustCSS, dataPriv, showHide ) {
22
+
23
+ "use strict";
16
24
 
17
25
  var
18
- fxNow, timerId,
26
+ fxNow, inProgress,
19
27
  rfxtypes = /^(?:toggle|show|hide)$/,
20
- rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
21
- rrun = /queueHooks$/,
22
- animationPrefilters = [ defaultPrefilter ],
23
- tweeners = {
24
- "*": [ function( prop, value ) {
25
- var tween = this.createTween( prop, value ),
26
- target = tween.cur(),
27
- parts = rfxnum.exec( value ),
28
- unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
29
-
30
- // Starting value computation is required for potential unit mismatches
31
- start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
32
- rfxnum.exec( jQuery.css( tween.elem, prop ) ),
33
- scale = 1,
34
- maxIterations = 20;
35
-
36
- if ( start && start[ 3 ] !== unit ) {
37
- // Trust units reported by jQuery.css
38
- unit = unit || start[ 3 ];
39
-
40
- // Make sure we update the tween properties later on
41
- parts = parts || [];
42
-
43
- // Iteratively approximate from a nonzero starting point
44
- start = +target || 1;
45
-
46
- do {
47
- // If previous iteration zeroed out, double until we get *something*.
48
- // Use string for doubling so we don't accidentally see scale as unchanged below
49
- scale = scale || ".5";
50
-
51
- // Adjust and apply
52
- start = start / scale;
53
- jQuery.style( tween.elem, prop, start + unit );
54
-
55
- // Update scale, tolerating zero or NaN from tween.cur(),
56
- // break the loop if scale is unchanged or perfect, or if we've just had enough
57
- } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
58
- }
28
+ rrun = /queueHooks$/;
59
29
 
60
- // Update tween properties
61
- if ( parts ) {
62
- start = tween.start = +start || +target || 0;
63
- tween.unit = unit;
64
- // If a +=/-= token was provided, we're doing a relative animation
65
- tween.end = parts[ 1 ] ?
66
- start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
67
- +parts[ 2 ];
68
- }
30
+ function schedule() {
31
+ if ( inProgress ) {
32
+ if ( document.hidden === false && window.requestAnimationFrame ) {
33
+ window.requestAnimationFrame( schedule );
34
+ } else {
35
+ window.setTimeout( schedule, jQuery.fx.interval );
36
+ }
69
37
 
70
- return tween;
71
- } ]
72
- };
38
+ jQuery.fx.tick();
39
+ }
40
+ }
73
41
 
74
42
  // Animations created synchronously will run synchronously
75
43
  function createFxNow() {
76
- setTimeout(function() {
44
+ window.setTimeout( function() {
77
45
  fxNow = undefined;
78
- });
46
+ } );
79
47
  return ( fxNow = jQuery.now() );
80
48
  }
81
49
 
@@ -88,7 +56,7 @@ function genFx( type, includeWidth ) {
88
56
  // If we include width, step value is 1 to do all cssExpand values,
89
57
  // otherwise step value is 2 to skip over Left and Right
90
58
  includeWidth = includeWidth ? 1 : 0;
91
- for ( ; i < 4 ; i += 2 - includeWidth ) {
59
+ for ( ; i < 4; i += 2 - includeWidth ) {
92
60
  which = cssExpand[ i ];
93
61
  attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
94
62
  }
@@ -102,11 +70,11 @@ function genFx( type, includeWidth ) {
102
70
 
103
71
  function createTween( value, prop, animation ) {
104
72
  var tween,
105
- collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
73
+ collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
106
74
  index = 0,
107
75
  length = collection.length;
108
76
  for ( ; index < length; index++ ) {
109
- if ( (tween = collection[ index ].call( animation, prop, value )) ) {
77
+ if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
110
78
 
111
79
  // We're done with this property
112
80
  return tween;
@@ -115,15 +83,15 @@ function createTween( value, prop, animation ) {
115
83
  }
116
84
 
117
85
  function defaultPrefilter( elem, props, opts ) {
118
- /* jshint validthis: true */
119
- var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
86
+ var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
87
+ isBox = "width" in props || "height" in props,
120
88
  anim = this,
121
89
  orig = {},
122
90
  style = elem.style,
123
- hidden = elem.nodeType && isHidden( elem ),
124
- dataShow = data_priv.get( elem, "fxshow" );
91
+ hidden = elem.nodeType && isHiddenWithinTree( elem ),
92
+ dataShow = dataPriv.get( elem, "fxshow" );
125
93
 
126
- // Handle queue: false promises
94
+ // Queue-skipping animations hijack the fx hooks
127
95
  if ( !opts.queue ) {
128
96
  hooks = jQuery._queueHooks( elem, "fx" );
129
97
  if ( hooks.unqueued == null ) {
@@ -137,113 +105,151 @@ function defaultPrefilter( elem, props, opts ) {
137
105
  }
138
106
  hooks.unqueued++;
139
107
 
140
- anim.always(function() {
108
+ anim.always( function() {
109
+
141
110
  // Ensure the complete handler is called before this completes
142
- anim.always(function() {
111
+ anim.always( function() {
143
112
  hooks.unqueued--;
144
113
  if ( !jQuery.queue( elem, "fx" ).length ) {
145
114
  hooks.empty.fire();
146
115
  }
147
- });
148
- });
116
+ } );
117
+ } );
149
118
  }
150
119
 
151
- // Height/width overflow pass
152
- if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
153
- // Make sure that nothing sneaks out
154
- // Record all 3 overflow attributes because IE9-10 do not
155
- // change the overflow attribute when overflowX and
156
- // overflowY are set to the same value
120
+ // Detect show/hide animations
121
+ for ( prop in props ) {
122
+ value = props[ prop ];
123
+ if ( rfxtypes.test( value ) ) {
124
+ delete props[ prop ];
125
+ toggle = toggle || value === "toggle";
126
+ if ( value === ( hidden ? "hide" : "show" ) ) {
127
+
128
+ // Pretend to be hidden if this is a "show" and
129
+ // there is still data from a stopped show/hide
130
+ if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
131
+ hidden = true;
132
+
133
+ // Ignore all other no-op show/hide data
134
+ } else {
135
+ continue;
136
+ }
137
+ }
138
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
139
+ }
140
+ }
141
+
142
+ // Bail out if this is a no-op like .hide().hide()
143
+ propTween = !jQuery.isEmptyObject( props );
144
+ if ( !propTween && jQuery.isEmptyObject( orig ) ) {
145
+ return;
146
+ }
147
+
148
+ // Restrict "overflow" and "display" styles during box animations
149
+ if ( isBox && elem.nodeType === 1 ) {
150
+
151
+ // Support: IE <=9 - 11, Edge 12 - 13
152
+ // Record all 3 overflow attributes because IE does not infer the shorthand
153
+ // from identically-valued overflowX and overflowY
157
154
  opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
158
155
 
159
- // Set display property to inline-block for height/width
160
- // animations on inline elements that are having width/height animated
156
+ // Identify a display type, preferring old show/hide data over the CSS cascade
157
+ restoreDisplay = dataShow && dataShow.display;
158
+ if ( restoreDisplay == null ) {
159
+ restoreDisplay = dataPriv.get( elem, "display" );
160
+ }
161
161
  display = jQuery.css( elem, "display" );
162
+ if ( display === "none" ) {
163
+ if ( restoreDisplay ) {
164
+ display = restoreDisplay;
165
+ } else {
162
166
 
163
- // Test default display if display is currently "none"
164
- checkDisplay = display === "none" ?
165
- data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
167
+ // Get nonempty value(s) by temporarily forcing visibility
168
+ showHide( [ elem ], true );
169
+ restoreDisplay = elem.style.display || restoreDisplay;
170
+ display = jQuery.css( elem, "display" );
171
+ showHide( [ elem ] );
172
+ }
173
+ }
166
174
 
167
- if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
168
- style.display = "inline-block";
175
+ // Animate inline elements as inline-block
176
+ if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
177
+ if ( jQuery.css( elem, "float" ) === "none" ) {
178
+
179
+ // Restore the original display value at the end of pure show/hide animations
180
+ if ( !propTween ) {
181
+ anim.done( function() {
182
+ style.display = restoreDisplay;
183
+ } );
184
+ if ( restoreDisplay == null ) {
185
+ display = style.display;
186
+ restoreDisplay = display === "none" ? "" : display;
187
+ }
188
+ }
189
+ style.display = "inline-block";
190
+ }
169
191
  }
170
192
  }
171
193
 
172
194
  if ( opts.overflow ) {
173
195
  style.overflow = "hidden";
174
- anim.always(function() {
196
+ anim.always( function() {
175
197
  style.overflow = opts.overflow[ 0 ];
176
198
  style.overflowX = opts.overflow[ 1 ];
177
199
  style.overflowY = opts.overflow[ 2 ];
178
- });
200
+ } );
179
201
  }
180
202
 
181
- // show/hide pass
182
- for ( prop in props ) {
183
- value = props[ prop ];
184
- if ( rfxtypes.exec( value ) ) {
185
- delete props[ prop ];
186
- toggle = toggle || value === "toggle";
187
- if ( value === ( hidden ? "hide" : "show" ) ) {
203
+ // Implement show/hide animations
204
+ propTween = false;
205
+ for ( prop in orig ) {
188
206
 
189
- // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
190
- if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
191
- hidden = true;
192
- } else {
193
- continue;
207
+ // General show/hide setup for this element animation
208
+ if ( !propTween ) {
209
+ if ( dataShow ) {
210
+ if ( "hidden" in dataShow ) {
211
+ hidden = dataShow.hidden;
194
212
  }
213
+ } else {
214
+ dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
195
215
  }
196
- orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
197
216
 
198
- // Any non-fx value stops us from restoring the original display value
199
- } else {
200
- display = undefined;
201
- }
202
- }
217
+ // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
218
+ if ( toggle ) {
219
+ dataShow.hidden = !hidden;
220
+ }
203
221
 
204
- if ( !jQuery.isEmptyObject( orig ) ) {
205
- if ( dataShow ) {
206
- if ( "hidden" in dataShow ) {
207
- hidden = dataShow.hidden;
222
+ // Show elements before animating them
223
+ if ( hidden ) {
224
+ showHide( [ elem ], true );
208
225
  }
209
- } else {
210
- dataShow = data_priv.access( elem, "fxshow", {} );
211
- }
212
226
 
213
- // Store state if its toggle - enables .stop().toggle() to "reverse"
214
- if ( toggle ) {
215
- dataShow.hidden = !hidden;
216
- }
217
- if ( hidden ) {
218
- jQuery( elem ).show();
219
- } else {
220
- anim.done(function() {
221
- jQuery( elem ).hide();
222
- });
223
- }
224
- anim.done(function() {
225
- var prop;
227
+ /* eslint-disable no-loop-func */
226
228
 
227
- data_priv.remove( elem, "fxshow" );
228
- for ( prop in orig ) {
229
- jQuery.style( elem, prop, orig[ prop ] );
230
- }
231
- });
232
- for ( prop in orig ) {
233
- tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
234
-
235
- if ( !( prop in dataShow ) ) {
236
- dataShow[ prop ] = tween.start;
237
- if ( hidden ) {
238
- tween.end = tween.start;
239
- tween.start = prop === "width" || prop === "height" ? 1 : 0;
229
+ anim.done( function() {
230
+
231
+ /* eslint-enable no-loop-func */
232
+
233
+ // The final step of a "hide" animation is actually hiding the element
234
+ if ( !hidden ) {
235
+ showHide( [ elem ] );
240
236
  }
241
- }
237
+ dataPriv.remove( elem, "fxshow" );
238
+ for ( prop in orig ) {
239
+ jQuery.style( elem, prop, orig[ prop ] );
240
+ }
241
+ } );
242
242
  }
243
243
 
244
- // If this is a noop like .hide().hide(), restore an overwritten display value
245
- } else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
246
- style.display = display;
244
+ // Per-property setup
245
+ propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
246
+ if ( !( prop in dataShow ) ) {
247
+ dataShow[ prop ] = propTween.start;
248
+ if ( hidden ) {
249
+ propTween.end = propTween.start;
250
+ propTween.start = 0;
251
+ }
252
+ }
247
253
  }
248
254
  }
249
255
 
@@ -255,7 +261,7 @@ function propFilter( props, specialEasing ) {
255
261
  name = jQuery.camelCase( index );
256
262
  easing = specialEasing[ name ];
257
263
  value = props[ index ];
258
- if ( jQuery.isArray( value ) ) {
264
+ if ( Array.isArray( value ) ) {
259
265
  easing = value[ 1 ];
260
266
  value = props[ index ] = value[ 0 ];
261
267
  }
@@ -288,41 +294,53 @@ function Animation( elem, properties, options ) {
288
294
  var result,
289
295
  stopped,
290
296
  index = 0,
291
- length = animationPrefilters.length,
297
+ length = Animation.prefilters.length,
292
298
  deferred = jQuery.Deferred().always( function() {
299
+
293
300
  // Don't match elem in the :animated selector
294
301
  delete tick.elem;
295
- }),
302
+ } ),
296
303
  tick = function() {
297
304
  if ( stopped ) {
298
305
  return false;
299
306
  }
300
307
  var currentTime = fxNow || createFxNow(),
301
308
  remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
302
- // Support: Android 2.3
309
+
310
+ // Support: Android 2.3 only
303
311
  // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
304
312
  temp = remaining / animation.duration || 0,
305
313
  percent = 1 - temp,
306
314
  index = 0,
307
315
  length = animation.tweens.length;
308
316
 
309
- for ( ; index < length ; index++ ) {
317
+ for ( ; index < length; index++ ) {
310
318
  animation.tweens[ index ].run( percent );
311
319
  }
312
320
 
313
- deferred.notifyWith( elem, [ animation, percent, remaining ]);
321
+ deferred.notifyWith( elem, [ animation, percent, remaining ] );
314
322
 
323
+ // If there's more to do, yield
315
324
  if ( percent < 1 && length ) {
316
325
  return remaining;
317
- } else {
318
- deferred.resolveWith( elem, [ animation ] );
319
- return false;
320
326
  }
327
+
328
+ // If this was an empty animation, synthesize a final progress notification
329
+ if ( !length ) {
330
+ deferred.notifyWith( elem, [ animation, 1, 0 ] );
331
+ }
332
+
333
+ // Resolve the animation and report its conclusion
334
+ deferred.resolveWith( elem, [ animation ] );
335
+ return false;
321
336
  },
322
- animation = deferred.promise({
337
+ animation = deferred.promise( {
323
338
  elem: elem,
324
339
  props: jQuery.extend( {}, properties ),
325
- opts: jQuery.extend( true, { specialEasing: {} }, options ),
340
+ opts: jQuery.extend( true, {
341
+ specialEasing: {},
342
+ easing: jQuery.easing._default
343
+ }, options ),
326
344
  originalProperties: properties,
327
345
  originalOptions: options,
328
346
  startTime: fxNow || createFxNow(),
@@ -336,6 +354,7 @@ function Animation( elem, properties, options ) {
336
354
  },
337
355
  stop: function( gotoEnd ) {
338
356
  var index = 0,
357
+
339
358
  // If we are going to the end, we want to run all the tweens
340
359
  // otherwise we skip this part
341
360
  length = gotoEnd ? animation.tweens.length : 0;
@@ -343,26 +362,31 @@ function Animation( elem, properties, options ) {
343
362
  return this;
344
363
  }
345
364
  stopped = true;
346
- for ( ; index < length ; index++ ) {
365
+ for ( ; index < length; index++ ) {
347
366
  animation.tweens[ index ].run( 1 );
348
367
  }
349
368
 
350
369
  // Resolve when we played the last frame; otherwise, reject
351
370
  if ( gotoEnd ) {
371
+ deferred.notifyWith( elem, [ animation, 1, 0 ] );
352
372
  deferred.resolveWith( elem, [ animation, gotoEnd ] );
353
373
  } else {
354
374
  deferred.rejectWith( elem, [ animation, gotoEnd ] );
355
375
  }
356
376
  return this;
357
377
  }
358
- }),
378
+ } ),
359
379
  props = animation.props;
360
380
 
361
381
  propFilter( props, animation.opts.specialEasing );
362
382
 
363
- for ( ; index < length ; index++ ) {
364
- result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
383
+ for ( ; index < length; index++ ) {
384
+ result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
365
385
  if ( result ) {
386
+ if ( jQuery.isFunction( result.stop ) ) {
387
+ jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
388
+ jQuery.proxy( result.stop, result );
389
+ }
366
390
  return result;
367
391
  }
368
392
  }
@@ -373,50 +397,63 @@ function Animation( elem, properties, options ) {
373
397
  animation.opts.start.call( elem, animation );
374
398
  }
375
399
 
400
+ // Attach callbacks from options
401
+ animation
402
+ .progress( animation.opts.progress )
403
+ .done( animation.opts.done, animation.opts.complete )
404
+ .fail( animation.opts.fail )
405
+ .always( animation.opts.always );
406
+
376
407
  jQuery.fx.timer(
377
408
  jQuery.extend( tick, {
378
409
  elem: elem,
379
410
  anim: animation,
380
411
  queue: animation.opts.queue
381
- })
412
+ } )
382
413
  );
383
414
 
384
- // attach callbacks from options
385
- return animation.progress( animation.opts.progress )
386
- .done( animation.opts.done, animation.opts.complete )
387
- .fail( animation.opts.fail )
388
- .always( animation.opts.always );
415
+ return animation;
389
416
  }
390
417
 
391
418
  jQuery.Animation = jQuery.extend( Animation, {
392
419
 
420
+ tweeners: {
421
+ "*": [ function( prop, value ) {
422
+ var tween = this.createTween( prop, value );
423
+ adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
424
+ return tween;
425
+ } ]
426
+ },
427
+
393
428
  tweener: function( props, callback ) {
394
429
  if ( jQuery.isFunction( props ) ) {
395
430
  callback = props;
396
431
  props = [ "*" ];
397
432
  } else {
398
- props = props.split(" ");
433
+ props = props.match( rnothtmlwhite );
399
434
  }
400
435
 
401
436
  var prop,
402
437
  index = 0,
403
438
  length = props.length;
404
439
 
405
- for ( ; index < length ; index++ ) {
440
+ for ( ; index < length; index++ ) {
406
441
  prop = props[ index ];
407
- tweeners[ prop ] = tweeners[ prop ] || [];
408
- tweeners[ prop ].unshift( callback );
442
+ Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
443
+ Animation.tweeners[ prop ].unshift( callback );
409
444
  }
410
445
  },
411
446
 
447
+ prefilters: [ defaultPrefilter ],
448
+
412
449
  prefilter: function( callback, prepend ) {
413
450
  if ( prepend ) {
414
- animationPrefilters.unshift( callback );
451
+ Animation.prefilters.unshift( callback );
415
452
  } else {
416
- animationPrefilters.push( callback );
453
+ Animation.prefilters.push( callback );
417
454
  }
418
455
  }
419
- });
456
+ } );
420
457
 
421
458
  jQuery.speed = function( speed, easing, fn ) {
422
459
  var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
@@ -426,8 +463,20 @@ jQuery.speed = function( speed, easing, fn ) {
426
463
  easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
427
464
  };
428
465
 
429
- opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
430
- opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
466
+ // Go to the end state if fx are off
467
+ if ( jQuery.fx.off ) {
468
+ opt.duration = 0;
469
+
470
+ } else {
471
+ if ( typeof opt.duration !== "number" ) {
472
+ if ( opt.duration in jQuery.fx.speeds ) {
473
+ opt.duration = jQuery.fx.speeds[ opt.duration ];
474
+
475
+ } else {
476
+ opt.duration = jQuery.fx.speeds._default;
477
+ }
478
+ }
479
+ }
431
480
 
432
481
  // Normalize opt.queue - true/undefined/null -> "fx"
433
482
  if ( opt.queue == null || opt.queue === true ) {
@@ -450,24 +499,25 @@ jQuery.speed = function( speed, easing, fn ) {
450
499
  return opt;
451
500
  };
452
501
 
453
- jQuery.fn.extend({
502
+ jQuery.fn.extend( {
454
503
  fadeTo: function( speed, to, easing, callback ) {
455
504
 
456
505
  // Show any hidden elements after setting opacity to 0
457
- return this.filter( isHidden ).css( "opacity", 0 ).show()
506
+ return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
458
507
 
459
508
  // Animate to the value specified
460
- .end().animate({ opacity: to }, speed, easing, callback );
509
+ .end().animate( { opacity: to }, speed, easing, callback );
461
510
  },
462
511
  animate: function( prop, speed, easing, callback ) {
463
512
  var empty = jQuery.isEmptyObject( prop ),
464
513
  optall = jQuery.speed( speed, easing, callback ),
465
514
  doAnimation = function() {
515
+
466
516
  // Operate on a copy of prop so per-property easing won't be lost
467
517
  var anim = Animation( this, jQuery.extend( {}, prop ), optall );
468
518
 
469
519
  // Empty animations, or finishing resolves immediately
470
- if ( empty || data_priv.get( this, "finish" ) ) {
520
+ if ( empty || dataPriv.get( this, "finish" ) ) {
471
521
  anim.stop( true );
472
522
  }
473
523
  };
@@ -493,11 +543,11 @@ jQuery.fn.extend({
493
543
  this.queue( type || "fx", [] );
494
544
  }
495
545
 
496
- return this.each(function() {
546
+ return this.each( function() {
497
547
  var dequeue = true,
498
548
  index = type != null && type + "queueHooks",
499
549
  timers = jQuery.timers,
500
- data = data_priv.get( this );
550
+ data = dataPriv.get( this );
501
551
 
502
552
  if ( index ) {
503
553
  if ( data[ index ] && data[ index ].stop ) {
@@ -512,7 +562,9 @@ jQuery.fn.extend({
512
562
  }
513
563
 
514
564
  for ( index = timers.length; index--; ) {
515
- if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
565
+ if ( timers[ index ].elem === this &&
566
+ ( type == null || timers[ index ].queue === type ) ) {
567
+
516
568
  timers[ index ].anim.stop( gotoEnd );
517
569
  dequeue = false;
518
570
  timers.splice( index, 1 );
@@ -525,15 +577,15 @@ jQuery.fn.extend({
525
577
  if ( dequeue || !gotoEnd ) {
526
578
  jQuery.dequeue( this, type );
527
579
  }
528
- });
580
+ } );
529
581
  },
530
582
  finish: function( type ) {
531
583
  if ( type !== false ) {
532
584
  type = type || "fx";
533
585
  }
534
- return this.each(function() {
586
+ return this.each( function() {
535
587
  var index,
536
- data = data_priv.get( this ),
588
+ data = dataPriv.get( this ),
537
589
  queue = data[ type + "queue" ],
538
590
  hooks = data[ type + "queueHooks" ],
539
591
  timers = jQuery.timers,
@@ -566,24 +618,24 @@ jQuery.fn.extend({
566
618
 
567
619
  // Turn off finishing flag
568
620
  delete data.finish;
569
- });
621
+ } );
570
622
  }
571
- });
623
+ } );
572
624
 
573
- jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
625
+ jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
574
626
  var cssFn = jQuery.fn[ name ];
575
627
  jQuery.fn[ name ] = function( speed, easing, callback ) {
576
628
  return speed == null || typeof speed === "boolean" ?
577
629
  cssFn.apply( this, arguments ) :
578
630
  this.animate( genFx( name, true ), speed, easing, callback );
579
631
  };
580
- });
632
+ } );
581
633
 
582
634
  // Generate shortcuts for custom animations
583
- jQuery.each({
584
- slideDown: genFx("show"),
585
- slideUp: genFx("hide"),
586
- slideToggle: genFx("toggle"),
635
+ jQuery.each( {
636
+ slideDown: genFx( "show" ),
637
+ slideUp: genFx( "hide" ),
638
+ slideToggle: genFx( "toggle" ),
587
639
  fadeIn: { opacity: "show" },
588
640
  fadeOut: { opacity: "hide" },
589
641
  fadeToggle: { opacity: "toggle" }
@@ -591,7 +643,7 @@ jQuery.each({
591
643
  jQuery.fn[ name ] = function( speed, easing, callback ) {
592
644
  return this.animate( props, speed, easing, callback );
593
645
  };
594
- });
646
+ } );
595
647
 
596
648
  jQuery.timers = [];
597
649
  jQuery.fx.tick = function() {
@@ -603,7 +655,8 @@ jQuery.fx.tick = function() {
603
655
 
604
656
  for ( ; i < timers.length; i++ ) {
605
657
  timer = timers[ i ];
606
- // Checks the timer has not already been removed
658
+
659
+ // Run the timer and safely remove it when done (allowing for external removal)
607
660
  if ( !timer() && timers[ i ] === timer ) {
608
661
  timers.splice( i--, 1 );
609
662
  }
@@ -617,32 +670,30 @@ jQuery.fx.tick = function() {
617
670
 
618
671
  jQuery.fx.timer = function( timer ) {
619
672
  jQuery.timers.push( timer );
620
- if ( timer() ) {
621
- jQuery.fx.start();
622
- } else {
623
- jQuery.timers.pop();
624
- }
673
+ jQuery.fx.start();
625
674
  };
626
675
 
627
676
  jQuery.fx.interval = 13;
628
-
629
677
  jQuery.fx.start = function() {
630
- if ( !timerId ) {
631
- timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
678
+ if ( inProgress ) {
679
+ return;
632
680
  }
681
+
682
+ inProgress = true;
683
+ schedule();
633
684
  };
634
685
 
635
686
  jQuery.fx.stop = function() {
636
- clearInterval( timerId );
637
- timerId = null;
687
+ inProgress = null;
638
688
  };
639
689
 
640
690
  jQuery.fx.speeds = {
641
691
  slow: 600,
642
692
  fast: 200,
693
+
643
694
  // Default speed
644
695
  _default: 400
645
696
  };
646
697
 
647
698
  return jQuery;
648
- });
699
+ } );