kms 0.9.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (409) hide show
  1. checksums.yaml +4 -4
  2. data/{vendor/assets/bower_components/Responsive-Dashboard/src/img → app/assets/images}/avatar.jpg +0 -0
  3. data/app/assets/javascripts/kms/application.js +3 -0
  4. data/app/assets/javascripts/kms/application/controllers/assets_controller.coffee.erb +14 -7
  5. data/app/assets/javascripts/kms/application/controllers/pages_controller.coffee.erb +11 -3
  6. data/app/assets/javascripts/kms/application/controllers/snippets_controller.coffee.erb +3 -0
  7. data/app/assets/javascripts/kms/application/controllers/templates_controller.coffee.erb +3 -0
  8. data/app/assets/javascripts/kms/application/controllers/users_controller.coffee +4 -4
  9. data/app/assets/javascripts/kms/application/routes.coffee.erb +1 -1
  10. data/app/assets/javascripts/kms/application/services/transliteration_service.js +160 -0
  11. data/app/assets/javascripts/templates/assets/edit.html.slim +24 -2
  12. data/app/assets/javascripts/templates/assets/form.html.slim +23 -0
  13. data/app/assets/javascripts/templates/assets/index.html.slim +13 -12
  14. data/app/assets/javascripts/templates/assets/new.html.slim +1 -15
  15. data/app/assets/javascripts/templates/help.html.slim +1 -1
  16. data/app/assets/javascripts/templates/pages/index.html.slim +16 -5
  17. data/app/assets/javascripts/templates/snippets/index.html.slim +16 -5
  18. data/app/assets/javascripts/templates/templates/index.html.slim +16 -6
  19. data/app/assets/stylesheets/kms/application.css +2 -2
  20. data/app/assets/stylesheets/kms/custom.css.scss +38 -0
  21. data/app/controllers/kms/assets_controller.rb +8 -9
  22. data/app/controllers/kms/pages_controller.rb +10 -11
  23. data/app/controllers/kms/public/pages_controller.rb +5 -4
  24. data/app/controllers/kms/public/search_controller.rb +2 -0
  25. data/app/controllers/kms/settings_controller.rb +1 -1
  26. data/app/controllers/kms/snippets_controller.rb +2 -1
  27. data/app/controllers/kms/templates_controller.rb +6 -5
  28. data/app/controllers/kms/users_controller.rb +11 -8
  29. data/app/models/ability.rb +1 -0
  30. data/app/models/concerns/kms/permalinkable.rb +1 -1
  31. data/app/models/kms/page.rb +13 -4
  32. data/app/serializers/kms/asset_serializer.rb +6 -0
  33. data/app/serializers/kms/page_serializer.rb +5 -0
  34. data/app/serializers/kms/template_serializer.rb +5 -0
  35. data/app/serializers/kms/user_serializer.rb +5 -0
  36. data/app/services/kms/page_fetcher.rb +30 -0
  37. data/app/services/kms/search_service.rb +28 -3
  38. data/app/services/kms/template_processor.rb +19 -0
  39. data/app/views/devise/passwords/edit.html.erb +1 -1
  40. data/app/views/devise/passwords/new.html.erb +1 -1
  41. data/app/views/devise/registrations/new.html.erb +1 -1
  42. data/app/views/devise/sessions/new.html.erb +1 -1
  43. data/app/views/layouts/kms/devise.html.erb +1 -1
  44. data/app/views/layouts/kms/kms.html.erb +47 -18
  45. data/config/initializers/externals.rb +6 -32
  46. data/config/initializers/search.rb +1 -0
  47. data/config/locales/en.yml +17 -1
  48. data/config/locales/ru.yml +17 -1
  49. data/config/routes.rb +7 -6
  50. data/lib/kms/dependencies.rb +1 -4
  51. data/lib/kms/engine.rb +1 -2
  52. data/lib/kms/search_item.rb +18 -0
  53. data/lib/kms/version.rb +1 -1
  54. data/spec/controllers/kms/assets_controller_spec.rb +51 -0
  55. data/spec/controllers/kms/pages_controller_spec.rb +82 -0
  56. data/spec/controllers/kms/public/pages_controller_spec.rb +30 -0
  57. data/spec/controllers/kms/snippets_controller_spec.rb +61 -47
  58. data/spec/controllers/kms/templates_controller_spec.rb +51 -0
  59. data/spec/controllers/kms/users_controller_spec.rb +56 -0
  60. data/spec/factories/assets.rb +8 -0
  61. data/spec/factories/pages.rb +33 -0
  62. data/spec/factories/templates.rb +20 -0
  63. data/spec/factories/users.rb +9 -4
  64. data/spec/internal/config/routes.rb +12 -1
  65. data/spec/internal/log/test.log +81239 -0
  66. data/spec/internal/public/404.html +67 -0
  67. data/spec/internal/public/avatar.jpg +0 -0
  68. data/spec/internal/public/style.css +1 -0
  69. data/spec/internal/public/uploads/kms/asset/file/1/avatar.jpg +0 -0
  70. data/spec/internal/public/uploads/kms/asset/file/2/avatar.jpg +0 -0
  71. data/spec/internal/public/uploads/kms/asset/file/2/style.css +1 -0
  72. data/spec/internal/public/uploads/kms/asset/file/3/style.css +1 -0
  73. data/spec/internal/public/uploads/kms/asset/file/4/style.css +1 -0
  74. data/spec/internal/public/uploads/tmp/1500976987-41025-0002-0883/style.css +1 -0
  75. data/spec/internal/public/uploads/tmp/1500977082-41195-0002-6495/style.css +1 -0
  76. data/spec/internal/public/uploads/tmp/1500977109-41364-0002-4518/style.css +1 -0
  77. data/spec/internal/public/uploads/tmp/1500977152-41405-0002-2345/style.css +1 -0
  78. data/spec/internal/public/uploads/tmp/1500977327-41694-0002-5448/style.css +1 -0
  79. data/spec/internal/public/uploads/tmp/1500977376-41732-0002-7916/style.css +1 -0
  80. data/spec/internal/public/uploads/tmp/1500977392-41759-0002-7593/style.css +1 -0
  81. data/spec/internal/public/uploads/tmp/1500977410-42259-0002-7527/style.css +1 -0
  82. data/spec/internal/public/uploads/tmp/1500977429-42306-0002-5937/style.css +1 -0
  83. data/spec/internal/public/uploads/tmp/1500977437-42324-0002-5880/style.css +1 -0
  84. data/spec/internal/public/uploads/tmp/1500983228-53594-0002-4559/style.css +1 -0
  85. data/spec/internal/public/uploads/tmp/1500983284-53632-0002-6590/style.css +1 -0
  86. data/spec/internal/public/uploads/tmp/1500983360-53784-0002-7289/style.css +1 -0
  87. data/spec/internal/public/uploads/tmp/1500983469-54321-0002-0386/avatar.jpg +0 -0
  88. data/spec/internal/public/uploads/tmp/1500983469-54321-0004-5691/style.css +1 -0
  89. data/spec/internal/public/uploads/tmp/1500983511-54352-0002-5720/avatar.jpg +0 -0
  90. data/spec/internal/public/uploads/tmp/1500983511-54352-0004-1399/style.css +1 -0
  91. data/spec/internal/public/uploads/tmp/1500983610-54507-0002-4280/avatar.jpg +0 -0
  92. data/spec/internal/public/uploads/tmp/1500983610-54507-0004-9758/style.css +1 -0
  93. data/spec/internal/public/uploads/tmp/1500984466-57012-0002-4146/avatar.jpg +0 -0
  94. data/spec/internal/public/uploads/tmp/1500984466-57012-0004-5895/style.css +1 -0
  95. data/spec/internal/public/uploads/tmp/1500984509-57158-0002-9657/avatar.jpg +0 -0
  96. data/spec/internal/public/uploads/tmp/1500984509-57158-0004-5003/style.css +1 -0
  97. data/spec/internal/public/uploads/tmp/1500984616-57697-0002-7201/avatar.jpg +0 -0
  98. data/spec/internal/public/uploads/tmp/1500984616-57697-0004-6255/style.css +1 -0
  99. data/spec/internal/public/uploads/tmp/1500985257-58947-0002-3629/avatar.jpg +0 -0
  100. data/spec/internal/public/uploads/tmp/1500985257-58947-0004-5338/style.css +1 -0
  101. data/spec/internal/public/uploads/tmp/1500985407-58947-0006-5929/style.css +1 -0
  102. data/spec/internal/public/uploads/tmp/1500985473-59264-0002-0397/avatar.jpg +0 -0
  103. data/spec/internal/public/uploads/tmp/1500985473-59264-0004-6493/style.css +1 -0
  104. data/spec/internal/public/uploads/tmp/1500985475-59264-0007-8674/style.css +1 -0
  105. data/spec/internal/public/uploads/tmp/1500985538-59468-0002-9206/avatar.jpg +0 -0
  106. data/spec/internal/public/uploads/tmp/1500985538-59468-0004-2586/style.css +1 -0
  107. data/spec/internal/public/uploads/tmp/1500985538-59468-0007-6200/style.css +1 -0
  108. data/spec/internal/public/uploads/tmp/1500988358-65877-0002-4528/avatar.jpg +0 -0
  109. data/spec/internal/public/uploads/tmp/1500988358-65877-0004-5904/style.css +1 -0
  110. data/spec/internal/public/uploads/tmp/1500988358-65877-0007-7320/style.css +1 -0
  111. data/spec/internal/public/uploads/tmp/1500988407-65916-0002-3138/avatar.jpg +0 -0
  112. data/spec/internal/public/uploads/tmp/1500988407-65916-0004-5400/style.css +1 -0
  113. data/spec/internal/public/uploads/tmp/1500988407-65916-0007-1655/style.css +1 -0
  114. data/spec/internal/public/uploads/tmp/1500988421-65950-0002-9415/avatar.jpg +0 -0
  115. data/spec/internal/public/uploads/tmp/1500988421-65950-0004-7130/style.css +1 -0
  116. data/spec/internal/public/uploads/tmp/1500988421-65950-0007-9886/style.css +1 -0
  117. data/spec/internal/public/uploads/tmp/1500988435-65981-0002-3228/avatar.jpg +0 -0
  118. data/spec/internal/public/uploads/tmp/1500988435-65981-0004-3682/style.css +1 -0
  119. data/spec/internal/public/uploads/tmp/1500988435-65981-0007-1582/style.css +1 -0
  120. data/spec/internal/public/uploads/tmp/1500988475-66122-0002-9516/avatar.jpg +0 -0
  121. data/spec/internal/public/uploads/tmp/1500988475-66122-0004-5634/style.css +1 -0
  122. data/spec/internal/public/uploads/tmp/1500988530-66122-0007-2272/style.css +1 -0
  123. data/spec/internal/public/uploads/tmp/1500988554-66315-0002-6262/avatar.jpg +0 -0
  124. data/spec/internal/public/uploads/tmp/1500988554-66315-0004-6099/style.css +1 -0
  125. data/spec/internal/public/uploads/tmp/1500988554-66315-0007-1632/style.css +1 -0
  126. data/spec/internal/public/uploads/tmp/1500991751-73722-0002-9937/avatar.jpg +0 -0
  127. data/spec/internal/public/uploads/tmp/1500991751-73722-0004-8034/style.css +1 -0
  128. data/spec/internal/public/uploads/tmp/1500991751-73722-0007-7763/style.css +1 -0
  129. data/spec/internal/public/uploads/tmp/1501233238-34385-0002-3210/avatar.jpg +0 -0
  130. data/spec/internal/public/uploads/tmp/1501233238-34385-0004-5881/style.css +1 -0
  131. data/spec/internal/public/uploads/tmp/1501233238-34385-0007-6280/style.css +1 -0
  132. data/spec/models/kms/page_spec.rb +31 -0
  133. data/spec/models/kms/template_spec.rb +15 -0
  134. data/spec/services/kms/page_fetcher_spec.rb +36 -0
  135. data/spec/services/kms/search_service_spec.rb +53 -0
  136. data/spec/services/kms/template_processor_spec.rb +20 -0
  137. data/spec/support/controller_macros.rb +9 -1
  138. data/vendor/assets/bower.json +3 -2
  139. data/vendor/assets/bower_components/angular-ui-select/CHANGELOG.md +169 -0
  140. data/vendor/assets/bower_components/angular-ui-select/CONTRIBUTING.md +161 -0
  141. data/vendor/assets/bower_components/angular-ui-select/README.md +27 -13
  142. data/vendor/assets/bower_components/angular-ui-select/bower.json +6 -3
  143. data/vendor/assets/bower_components/angular-ui-select/composer.json +29 -0
  144. data/vendor/assets/bower_components/angular-ui-select/deploy-docs.sh +31 -0
  145. data/vendor/assets/bower_components/angular-ui-select/dist/select.css +48 -2
  146. data/vendor/assets/bower_components/angular-ui-select/dist/select.js +454 -111
  147. data/vendor/assets/bower_components/angular-ui-select/dist/select.min.css +2 -2
  148. data/vendor/assets/bower_components/angular-ui-select/dist/select.min.js +2 -2
  149. data/vendor/assets/bower_components/angular-ui-select/docs/assets/app.js +1 -0
  150. data/vendor/assets/bower_components/angular-ui-select/docs/assets/demo.js +461 -0
  151. data/vendor/assets/bower_components/angular-ui-select/docs/assets/docs.css +339 -0
  152. data/vendor/assets/bower_components/angular-ui-select/docs/assets/plunkr.js +110 -0
  153. data/vendor/assets/bower_components/angular-ui-select/docs/index.html +191 -0
  154. data/vendor/assets/bower_components/angular-ui-select/docs/partials/_footer.html +2 -0
  155. data/vendor/assets/bower_components/angular-ui-select/docs/partials/_header.html +64 -0
  156. data/vendor/assets/bower_components/angular-ui-select/index.js +2 -0
  157. data/vendor/assets/bower_components/angular-ui-select/package.json +36 -15
  158. data/vendor/assets/bower_components/bootstrap/CHANGELOG.md +5 -0
  159. data/vendor/assets/bower_components/bootstrap/Gemfile +6 -0
  160. data/vendor/assets/bower_components/bootstrap/Gemfile.lock +43 -0
  161. data/vendor/assets/bower_components/bootstrap/Gruntfile.js +176 -145
  162. data/vendor/assets/bower_components/bootstrap/ISSUE_TEMPLATE.md +22 -0
  163. data/vendor/assets/bower_components/bootstrap/LICENSE +1 -1
  164. data/vendor/assets/bower_components/bootstrap/README.md +55 -40
  165. data/vendor/assets/bower_components/bootstrap/bower.json +5 -9
  166. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css +204 -59
  167. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css.map +1 -1
  168. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.min.css +4 -3
  169. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.min.css.map +1 -0
  170. data/vendor/assets/bower_components/bootstrap/dist/css/{bootstrap.less → bootstrap.css} +881 -327
  171. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css.map +1 -1
  172. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css +6 -0
  173. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css.map +1 -0
  174. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  175. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +272 -213
  176. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  177. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  178. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
  179. data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.js +549 -286
  180. data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.min.js +5 -4
  181. data/vendor/assets/bower_components/bootstrap/dist/js/npm.js +13 -0
  182. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  183. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg +272 -213
  184. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  185. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  186. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
  187. data/vendor/assets/bower_components/bootstrap/grunt/bs-commonjs-generator.js +30 -0
  188. data/vendor/assets/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js +5 -4
  189. data/vendor/assets/bower_components/bootstrap/grunt/bs-lessdoc-parser.js +13 -12
  190. data/vendor/assets/bower_components/bootstrap/grunt/bs-raw-files-generator.js +6 -8
  191. data/vendor/assets/bower_components/bootstrap/grunt/change-version.js +109 -0
  192. data/vendor/assets/bower_components/bootstrap/grunt/configBridge.json +46 -0
  193. data/vendor/assets/bower_components/bootstrap/grunt/npm-shrinkwrap.json +2679 -0
  194. data/vendor/assets/bower_components/bootstrap/grunt/sauce_browsers.yml +5 -5
  195. data/vendor/assets/bower_components/bootstrap/js/affix.js +46 -26
  196. data/vendor/assets/bower_components/bootstrap/js/alert.js +8 -6
  197. data/vendor/assets/bower_components/bootstrap/js/button.js +34 -19
  198. data/vendor/assets/bower_components/bootstrap/js/carousel.js +35 -21
  199. data/vendor/assets/bower_components/bootstrap/js/collapse.js +69 -27
  200. data/vendor/assets/bower_components/bootstrap/js/dropdown.js +55 -41
  201. data/vendor/assets/bower_components/bootstrap/js/modal.js +91 -32
  202. data/vendor/assets/bower_components/bootstrap/js/popover.js +5 -10
  203. data/vendor/assets/bower_components/bootstrap/js/scrollspy.js +28 -26
  204. data/vendor/assets/bower_components/bootstrap/js/tab.js +45 -18
  205. data/vendor/assets/bower_components/bootstrap/js/tooltip.js +117 -54
  206. data/vendor/assets/bower_components/bootstrap/js/transition.js +2 -2
  207. data/vendor/assets/bower_components/bootstrap/less/alerts.less +5 -0
  208. data/vendor/assets/bower_components/bootstrap/less/badges.less +14 -3
  209. data/vendor/assets/bower_components/bootstrap/less/bootstrap.less +6 -0
  210. data/vendor/assets/bower_components/bootstrap/less/button-groups.less +22 -18
  211. data/vendor/assets/bower_components/bootstrap/less/buttons.less +19 -10
  212. data/vendor/assets/bower_components/bootstrap/less/carousel.less +34 -7
  213. data/vendor/assets/bower_components/bootstrap/less/close.less +1 -0
  214. data/vendor/assets/bower_components/bootstrap/less/code.less +1 -0
  215. data/vendor/assets/bower_components/bootstrap/less/component-animations.less +3 -1
  216. data/vendor/assets/bower_components/bootstrap/less/dropdowns.less +9 -8
  217. data/vendor/assets/bower_components/bootstrap/less/forms.less +123 -50
  218. data/vendor/assets/bower_components/bootstrap/less/glyphicons.less +75 -3
  219. data/vendor/assets/bower_components/bootstrap/less/input-groups.less +8 -3
  220. data/vendor/assets/bower_components/bootstrap/less/jumbotron.less +10 -4
  221. data/vendor/assets/bower_components/bootstrap/less/list-group.less +10 -11
  222. data/vendor/assets/bower_components/bootstrap/less/media.less +40 -30
  223. data/vendor/assets/bower_components/bootstrap/less/mixins.less +1 -0
  224. data/vendor/assets/bower_components/bootstrap/less/mixins/background-variant.less +2 -1
  225. data/vendor/assets/bower_components/bootstrap/less/mixins/buttons.less +19 -4
  226. data/vendor/assets/bower_components/bootstrap/less/mixins/forms.less +5 -1
  227. data/vendor/assets/bower_components/bootstrap/less/mixins/grid-framework.less +4 -4
  228. data/vendor/assets/bower_components/bootstrap/less/mixins/grid.less +4 -4
  229. data/vendor/assets/bower_components/bootstrap/less/mixins/hide-text.less +2 -2
  230. data/vendor/assets/bower_components/bootstrap/less/mixins/image.less +0 -1
  231. data/vendor/assets/bower_components/bootstrap/less/mixins/labels.less +1 -1
  232. data/vendor/assets/bower_components/bootstrap/less/mixins/list-group.less +2 -1
  233. data/vendor/assets/bower_components/bootstrap/less/mixins/pagination.less +2 -1
  234. data/vendor/assets/bower_components/bootstrap/less/mixins/reset-text.less +18 -0
  235. data/vendor/assets/bower_components/bootstrap/less/mixins/responsive-visibility.less +1 -1
  236. data/vendor/assets/bower_components/bootstrap/less/mixins/tab-focus.less +3 -3
  237. data/vendor/assets/bower_components/bootstrap/less/mixins/text-emphasis.less +2 -1
  238. data/vendor/assets/bower_components/bootstrap/less/mixins/vendor-prefixes.less +8 -5
  239. data/vendor/assets/bower_components/bootstrap/less/modals.less +3 -3
  240. data/vendor/assets/bower_components/bootstrap/less/navbar.less +30 -25
  241. data/vendor/assets/bower_components/bootstrap/less/navs.less +1 -1
  242. data/vendor/assets/bower_components/bootstrap/less/normalize.less +12 -13
  243. data/vendor/assets/bower_components/bootstrap/less/pager.less +1 -2
  244. data/vendor/assets/bower_components/bootstrap/less/pagination.less +5 -4
  245. data/vendor/assets/bower_components/bootstrap/less/panels.less +33 -5
  246. data/vendor/assets/bower_components/bootstrap/less/popovers.less +5 -7
  247. data/vendor/assets/bower_components/bootstrap/less/print.less +96 -96
  248. data/vendor/assets/bower_components/bootstrap/less/progress-bars.less +1 -19
  249. data/vendor/assets/bower_components/bootstrap/less/responsive-embed.less +10 -9
  250. data/vendor/assets/bower_components/bootstrap/less/scaffolding.less +13 -2
  251. data/vendor/assets/bower_components/bootstrap/less/tables.less +14 -13
  252. data/vendor/assets/bower_components/bootstrap/less/theme.less +49 -16
  253. data/vendor/assets/bower_components/bootstrap/less/thumbnails.less +1 -1
  254. data/vendor/assets/bower_components/bootstrap/less/tooltip.less +13 -7
  255. data/vendor/assets/bower_components/bootstrap/less/type.less +2 -13
  256. data/vendor/assets/bower_components/bootstrap/less/utilities.less +0 -2
  257. data/vendor/assets/bower_components/bootstrap/less/variables.less +45 -22
  258. data/vendor/assets/bower_components/bootstrap/nuget/MyGet.ps1 +8 -0
  259. data/vendor/assets/bower_components/bootstrap/nuget/bootstrap.less.nuspec +28 -0
  260. data/vendor/assets/bower_components/bootstrap/nuget/bootstrap.nuspec +28 -0
  261. data/vendor/assets/bower_components/bootstrap/package.js +32 -0
  262. data/vendor/assets/bower_components/bootstrap/package.json +49 -41
  263. data/vendor/assets/bower_components/flow.js/README.md +79 -64
  264. data/vendor/assets/bower_components/flow.js/bower.json +6 -2
  265. data/vendor/assets/bower_components/flow.js/dist/flow.js +1635 -1532
  266. data/vendor/assets/bower_components/flow.js/dist/flow.min.js +2 -2
  267. data/vendor/assets/bower_components/flow.js/package.js +24 -0
  268. data/vendor/assets/bower_components/flow.js/travis.sh +19 -0
  269. data/vendor/assets/bower_components/font-awesome/scss/_path.scss +5 -5
  270. data/vendor/assets/bower_components/font-awesome/scss/_variables.scss +1 -2
  271. data/vendor/assets/bower_components/ng-flow/bower.json +1 -1
  272. data/vendor/assets/bower_components/ng-flow/dist/ng-flow-standalone.js +1655 -1542
  273. data/vendor/assets/bower_components/ng-flow/dist/ng-flow-standalone.min.js +2 -2
  274. data/vendor/assets/bower_components/ng-flow/dist/ng-flow.js +19 -9
  275. data/vendor/assets/bower_components/ng-flow/dist/ng-flow.min.js +2 -2
  276. data/vendor/assets/bower_components/ng-flow/index.js +3 -0
  277. data/vendor/assets/bower_components/ng-flow/package.js +25 -0
  278. data/vendor/assets/bower_components/ng-flow/src/directives/drag-events.js +2 -1
  279. data/vendor/assets/bower_components/ng-flow/src/directives/events.js +2 -1
  280. data/vendor/assets/bower_components/ng-flow/src/directives/init.js +7 -1
  281. data/vendor/assets/bower_components/ng-flow/travis.sh +19 -0
  282. data/vendor/assets/bower_components/{Responsive-Dashboard → rdash-ui}/LICENSE +21 -21
  283. data/vendor/assets/bower_components/rdash-ui/README.md +55 -0
  284. data/vendor/assets/bower_components/rdash-ui/bower.json +33 -0
  285. data/vendor/assets/bower_components/rdash-ui/dist/css/rdash.min.css +1 -0
  286. data/vendor/assets/bower_components/rdash-ui/dist/css/rdash.scss +489 -0
  287. data/vendor/assets/bower_components/{Responsive-Dashboard/src → rdash-ui/dist}/fonts/montserrat-regular-webfont.eot +0 -0
  288. data/vendor/assets/bower_components/{Responsive-Dashboard/src → rdash-ui/dist}/fonts/montserrat-regular-webfont.svg +1316 -1316
  289. data/vendor/assets/bower_components/{Responsive-Dashboard/src → rdash-ui/dist}/fonts/montserrat-regular-webfont.ttf +0 -0
  290. data/vendor/assets/bower_components/{Responsive-Dashboard/src → rdash-ui/dist}/fonts/montserrat-regular-webfont.woff +0 -0
  291. metadata +227 -180
  292. data/config/initializers/bower_rails.rb +0 -16
  293. data/vendor/assets/bower_components/Responsive-Dashboard/CONTRIBUTING.md +0 -21
  294. data/vendor/assets/bower_components/Responsive-Dashboard/README.md +0 -119
  295. data/vendor/assets/bower_components/Responsive-Dashboard/bower.json +0 -32
  296. data/vendor/assets/bower_components/Responsive-Dashboard/gulpfile.js +0 -81
  297. data/vendor/assets/bower_components/Responsive-Dashboard/package.json +0 -21
  298. data/vendor/assets/bower_components/Responsive-Dashboard/src/index.html +0 -413
  299. data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/controllers/alerts-ctrl.js +0 -19
  300. data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/controllers/master-ctrl.js +0 -51
  301. data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/directives/loading.js +0 -13
  302. data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/directives/widget-body.js +0 -16
  303. data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/directives/widget-header.js +0 -17
  304. data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/directives/widget.js +0 -16
  305. data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/module.js +0 -1
  306. data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/routes.js +0 -22
  307. data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/content.less +0 -19
  308. data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/hamburg.less +0 -29
  309. data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/header.less +0 -92
  310. data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/loading.less +0 -40
  311. data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/main.less +0 -73
  312. data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/mixins.less +0 -5
  313. data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/sidebar.less +0 -122
  314. data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/variables.less +0 -10
  315. data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/widgets.less +0 -95
  316. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css.erb +0 -5
  317. data/vendor/assets/bower_components/flow.js/CHANGELOG.md +0 -37
  318. data/vendor/assets/bower_components/flow.js/Gruntfile.js +0 -132
  319. data/vendor/assets/bower_components/flow.js/karma.conf.js +0 -114
  320. data/vendor/assets/bower_components/flow.js/package.json +0 -50
  321. data/vendor/assets/bower_components/flow.js/src/flow.js +0 -1532
  322. data/vendor/assets/bower_components/jquery/MIT-LICENSE.txt +0 -21
  323. data/vendor/assets/bower_components/jquery/bower.json +0 -27
  324. data/vendor/assets/bower_components/jquery/dist/jquery.js +0 -9190
  325. data/vendor/assets/bower_components/jquery/dist/jquery.min.js +0 -5
  326. data/vendor/assets/bower_components/jquery/dist/jquery.min.map +0 -1
  327. data/vendor/assets/bower_components/jquery/src/ajax.js +0 -806
  328. data/vendor/assets/bower_components/jquery/src/ajax/jsonp.js +0 -89
  329. data/vendor/assets/bower_components/jquery/src/ajax/load.js +0 -75
  330. data/vendor/assets/bower_components/jquery/src/ajax/parseJSON.js +0 -13
  331. data/vendor/assets/bower_components/jquery/src/ajax/parseXML.js +0 -28
  332. data/vendor/assets/bower_components/jquery/src/ajax/script.js +0 -64
  333. data/vendor/assets/bower_components/jquery/src/ajax/var/nonce.js +0 -5
  334. data/vendor/assets/bower_components/jquery/src/ajax/var/rquery.js +0 -3
  335. data/vendor/assets/bower_components/jquery/src/ajax/xhr.js +0 -135
  336. data/vendor/assets/bower_components/jquery/src/attributes.js +0 -11
  337. data/vendor/assets/bower_components/jquery/src/attributes/attr.js +0 -143
  338. data/vendor/assets/bower_components/jquery/src/attributes/classes.js +0 -158
  339. data/vendor/assets/bower_components/jquery/src/attributes/prop.js +0 -96
  340. data/vendor/assets/bower_components/jquery/src/attributes/support.js +0 -35
  341. data/vendor/assets/bower_components/jquery/src/attributes/val.js +0 -163
  342. data/vendor/assets/bower_components/jquery/src/callbacks.js +0 -205
  343. data/vendor/assets/bower_components/jquery/src/core.js +0 -498
  344. data/vendor/assets/bower_components/jquery/src/core/access.js +0 -60
  345. data/vendor/assets/bower_components/jquery/src/core/init.js +0 -123
  346. data/vendor/assets/bower_components/jquery/src/core/parseHTML.js +0 -39
  347. data/vendor/assets/bower_components/jquery/src/core/ready.js +0 -97
  348. data/vendor/assets/bower_components/jquery/src/core/var/rsingleTag.js +0 -4
  349. data/vendor/assets/bower_components/jquery/src/css.js +0 -451
  350. data/vendor/assets/bower_components/jquery/src/css/addGetHookIf.js +0 -24
  351. data/vendor/assets/bower_components/jquery/src/css/curCSS.js +0 -57
  352. data/vendor/assets/bower_components/jquery/src/css/defaultDisplay.js +0 -70
  353. data/vendor/assets/bower_components/jquery/src/css/hiddenVisibleSelectors.js +0 -15
  354. data/vendor/assets/bower_components/jquery/src/css/support.js +0 -91
  355. data/vendor/assets/bower_components/jquery/src/css/swap.js +0 -28
  356. data/vendor/assets/bower_components/jquery/src/css/var/cssExpand.js +0 -3
  357. data/vendor/assets/bower_components/jquery/src/css/var/getStyles.js +0 -5
  358. data/vendor/assets/bower_components/jquery/src/css/var/isHidden.js +0 -13
  359. data/vendor/assets/bower_components/jquery/src/css/var/rmargin.js +0 -3
  360. data/vendor/assets/bower_components/jquery/src/css/var/rnumnonpx.js +0 -5
  361. data/vendor/assets/bower_components/jquery/src/data.js +0 -179
  362. data/vendor/assets/bower_components/jquery/src/data/Data.js +0 -181
  363. data/vendor/assets/bower_components/jquery/src/data/accepts.js +0 -20
  364. data/vendor/assets/bower_components/jquery/src/data/var/data_priv.js +0 -5
  365. data/vendor/assets/bower_components/jquery/src/data/var/data_user.js +0 -5
  366. data/vendor/assets/bower_components/jquery/src/deferred.js +0 -149
  367. data/vendor/assets/bower_components/jquery/src/deprecated.js +0 -13
  368. data/vendor/assets/bower_components/jquery/src/dimensions.js +0 -50
  369. data/vendor/assets/bower_components/jquery/src/effects.js +0 -649
  370. data/vendor/assets/bower_components/jquery/src/effects/Tween.js +0 -114
  371. data/vendor/assets/bower_components/jquery/src/effects/animatedSelector.js +0 -13
  372. data/vendor/assets/bower_components/jquery/src/event.js +0 -868
  373. data/vendor/assets/bower_components/jquery/src/event/alias.js +0 -39
  374. data/vendor/assets/bower_components/jquery/src/event/support.js +0 -9
  375. data/vendor/assets/bower_components/jquery/src/exports/amd.js +0 -24
  376. data/vendor/assets/bower_components/jquery/src/exports/global.js +0 -32
  377. data/vendor/assets/bower_components/jquery/src/intro.js +0 -44
  378. data/vendor/assets/bower_components/jquery/src/jquery.js +0 -36
  379. data/vendor/assets/bower_components/jquery/src/manipulation.js +0 -582
  380. data/vendor/assets/bower_components/jquery/src/manipulation/_evalUrl.js +0 -18
  381. data/vendor/assets/bower_components/jquery/src/manipulation/support.js +0 -31
  382. data/vendor/assets/bower_components/jquery/src/manipulation/var/rcheckableType.js +0 -3
  383. data/vendor/assets/bower_components/jquery/src/offset.js +0 -204
  384. data/vendor/assets/bower_components/jquery/src/outro.js +0 -1
  385. data/vendor/assets/bower_components/jquery/src/queue.js +0 -142
  386. data/vendor/assets/bower_components/jquery/src/queue/delay.js +0 -22
  387. data/vendor/assets/bower_components/jquery/src/selector-native.js +0 -172
  388. data/vendor/assets/bower_components/jquery/src/selector-sizzle.js +0 -14
  389. data/vendor/assets/bower_components/jquery/src/selector.js +0 -1
  390. data/vendor/assets/bower_components/jquery/src/serialize.js +0 -111
  391. data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.js +0 -2044
  392. data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.js +0 -3
  393. data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.map +0 -1
  394. data/vendor/assets/bower_components/jquery/src/traversing.js +0 -200
  395. data/vendor/assets/bower_components/jquery/src/traversing/findFilter.js +0 -100
  396. data/vendor/assets/bower_components/jquery/src/traversing/var/rneedsContext.js +0 -6
  397. data/vendor/assets/bower_components/jquery/src/var/arr.js +0 -3
  398. data/vendor/assets/bower_components/jquery/src/var/class2type.js +0 -4
  399. data/vendor/assets/bower_components/jquery/src/var/concat.js +0 -5
  400. data/vendor/assets/bower_components/jquery/src/var/hasOwn.js +0 -5
  401. data/vendor/assets/bower_components/jquery/src/var/indexOf.js +0 -5
  402. data/vendor/assets/bower_components/jquery/src/var/pnum.js +0 -3
  403. data/vendor/assets/bower_components/jquery/src/var/push.js +0 -5
  404. data/vendor/assets/bower_components/jquery/src/var/rnotwhite.js +0 -3
  405. data/vendor/assets/bower_components/jquery/src/var/slice.js +0 -5
  406. data/vendor/assets/bower_components/jquery/src/var/strundefined.js +0 -3
  407. data/vendor/assets/bower_components/jquery/src/var/support.js +0 -4
  408. data/vendor/assets/bower_components/jquery/src/var/toString.js +0 -5
  409. data/vendor/assets/bower_components/jquery/src/wrap.js +0 -78
@@ -1,114 +0,0 @@
1
- define([
2
- "../core",
3
- "../css"
4
- ], function( jQuery ) {
5
-
6
- function Tween( elem, options, prop, end, easing ) {
7
- return new Tween.prototype.init( elem, options, prop, end, easing );
8
- }
9
- jQuery.Tween = Tween;
10
-
11
- Tween.prototype = {
12
- constructor: Tween,
13
- init: function( elem, options, prop, end, easing, unit ) {
14
- this.elem = elem;
15
- this.prop = prop;
16
- this.easing = easing || "swing";
17
- this.options = options;
18
- this.start = this.now = this.cur();
19
- this.end = end;
20
- this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
21
- },
22
- cur: function() {
23
- var hooks = Tween.propHooks[ this.prop ];
24
-
25
- return hooks && hooks.get ?
26
- hooks.get( this ) :
27
- Tween.propHooks._default.get( this );
28
- },
29
- run: function( percent ) {
30
- var eased,
31
- hooks = Tween.propHooks[ this.prop ];
32
-
33
- if ( this.options.duration ) {
34
- this.pos = eased = jQuery.easing[ this.easing ](
35
- percent, this.options.duration * percent, 0, 1, this.options.duration
36
- );
37
- } else {
38
- this.pos = eased = percent;
39
- }
40
- this.now = ( this.end - this.start ) * eased + this.start;
41
-
42
- if ( this.options.step ) {
43
- this.options.step.call( this.elem, this.now, this );
44
- }
45
-
46
- if ( hooks && hooks.set ) {
47
- hooks.set( this );
48
- } else {
49
- Tween.propHooks._default.set( this );
50
- }
51
- return this;
52
- }
53
- };
54
-
55
- Tween.prototype.init.prototype = Tween.prototype;
56
-
57
- Tween.propHooks = {
58
- _default: {
59
- get: function( tween ) {
60
- var result;
61
-
62
- if ( tween.elem[ tween.prop ] != null &&
63
- (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
64
- return tween.elem[ tween.prop ];
65
- }
66
-
67
- // passing an empty string as a 3rd parameter to .css will automatically
68
- // attempt a parseFloat and fallback to a string if the parse fails
69
- // so, simple values such as "10px" are parsed to Float.
70
- // complex values such as "rotate(1rad)" are returned as is.
71
- result = jQuery.css( tween.elem, tween.prop, "" );
72
- // Empty strings, null, undefined and "auto" are converted to 0.
73
- return !result || result === "auto" ? 0 : result;
74
- },
75
- set: function( tween ) {
76
- // use step hook for back compat - use cssHook if its there - use .style if its
77
- // available and use plain properties where available
78
- if ( jQuery.fx.step[ tween.prop ] ) {
79
- jQuery.fx.step[ tween.prop ]( tween );
80
- } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
81
- jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
82
- } else {
83
- tween.elem[ tween.prop ] = tween.now;
84
- }
85
- }
86
- }
87
- };
88
-
89
- // Support: IE9
90
- // Panic based approach to setting things on disconnected nodes
91
-
92
- Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
93
- set: function( tween ) {
94
- if ( tween.elem.nodeType && tween.elem.parentNode ) {
95
- tween.elem[ tween.prop ] = tween.now;
96
- }
97
- }
98
- };
99
-
100
- jQuery.easing = {
101
- linear: function( p ) {
102
- return p;
103
- },
104
- swing: function( p ) {
105
- return 0.5 - Math.cos( p * Math.PI ) / 2;
106
- }
107
- };
108
-
109
- jQuery.fx = Tween.prototype.init;
110
-
111
- // Back Compat <1.8 extension point
112
- jQuery.fx.step = {};
113
-
114
- });
@@ -1,13 +0,0 @@
1
- define([
2
- "../core",
3
- "../selector",
4
- "../effects"
5
- ], function( jQuery ) {
6
-
7
- jQuery.expr.filters.animated = function( elem ) {
8
- return jQuery.grep(jQuery.timers, function( fn ) {
9
- return elem === fn.elem;
10
- }).length;
11
- };
12
-
13
- });
@@ -1,868 +0,0 @@
1
- define([
2
- "./core",
3
- "./var/strundefined",
4
- "./var/rnotwhite",
5
- "./var/hasOwn",
6
- "./var/slice",
7
- "./event/support",
8
- "./data/var/data_priv",
9
-
10
- "./core/init",
11
- "./data/accepts",
12
- "./selector"
13
- ], function( jQuery, strundefined, rnotwhite, hasOwn, slice, support, data_priv ) {
14
-
15
- var
16
- rkeyEvent = /^key/,
17
- rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
18
- rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
19
- rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
20
-
21
- function returnTrue() {
22
- return true;
23
- }
24
-
25
- function returnFalse() {
26
- return false;
27
- }
28
-
29
- function safeActiveElement() {
30
- try {
31
- return document.activeElement;
32
- } catch ( err ) { }
33
- }
34
-
35
- /*
36
- * Helper functions for managing events -- not part of the public interface.
37
- * Props to Dean Edwards' addEvent library for many of the ideas.
38
- */
39
- jQuery.event = {
40
-
41
- global: {},
42
-
43
- add: function( elem, types, handler, data, selector ) {
44
-
45
- var handleObjIn, eventHandle, tmp,
46
- events, t, handleObj,
47
- special, handlers, type, namespaces, origType,
48
- elemData = data_priv.get( elem );
49
-
50
- // Don't attach events to noData or text/comment nodes (but allow plain objects)
51
- if ( !elemData ) {
52
- return;
53
- }
54
-
55
- // Caller can pass in an object of custom data in lieu of the handler
56
- if ( handler.handler ) {
57
- handleObjIn = handler;
58
- handler = handleObjIn.handler;
59
- selector = handleObjIn.selector;
60
- }
61
-
62
- // Make sure that the handler has a unique ID, used to find/remove it later
63
- if ( !handler.guid ) {
64
- handler.guid = jQuery.guid++;
65
- }
66
-
67
- // Init the element's event structure and main handler, if this is the first
68
- if ( !(events = elemData.events) ) {
69
- events = elemData.events = {};
70
- }
71
- if ( !(eventHandle = elemData.handle) ) {
72
- eventHandle = elemData.handle = function( e ) {
73
- // Discard the second event of a jQuery.event.trigger() and
74
- // when an event is called after a page has unloaded
75
- return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
76
- jQuery.event.dispatch.apply( elem, arguments ) : undefined;
77
- };
78
- }
79
-
80
- // Handle multiple events separated by a space
81
- types = ( types || "" ).match( rnotwhite ) || [ "" ];
82
- t = types.length;
83
- while ( t-- ) {
84
- tmp = rtypenamespace.exec( types[t] ) || [];
85
- type = origType = tmp[1];
86
- namespaces = ( tmp[2] || "" ).split( "." ).sort();
87
-
88
- // There *must* be a type, no attaching namespace-only handlers
89
- if ( !type ) {
90
- continue;
91
- }
92
-
93
- // If event changes its type, use the special event handlers for the changed type
94
- special = jQuery.event.special[ type ] || {};
95
-
96
- // If selector defined, determine special event api type, otherwise given type
97
- type = ( selector ? special.delegateType : special.bindType ) || type;
98
-
99
- // Update special based on newly reset type
100
- special = jQuery.event.special[ type ] || {};
101
-
102
- // handleObj is passed to all event handlers
103
- handleObj = jQuery.extend({
104
- type: type,
105
- origType: origType,
106
- data: data,
107
- handler: handler,
108
- guid: handler.guid,
109
- selector: selector,
110
- needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
111
- namespace: namespaces.join(".")
112
- }, handleObjIn );
113
-
114
- // Init the event handler queue if we're the first
115
- if ( !(handlers = events[ type ]) ) {
116
- handlers = events[ type ] = [];
117
- handlers.delegateCount = 0;
118
-
119
- // Only use addEventListener if the special events handler returns false
120
- if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
121
- if ( elem.addEventListener ) {
122
- elem.addEventListener( type, eventHandle, false );
123
- }
124
- }
125
- }
126
-
127
- if ( special.add ) {
128
- special.add.call( elem, handleObj );
129
-
130
- if ( !handleObj.handler.guid ) {
131
- handleObj.handler.guid = handler.guid;
132
- }
133
- }
134
-
135
- // Add to the element's handler list, delegates in front
136
- if ( selector ) {
137
- handlers.splice( handlers.delegateCount++, 0, handleObj );
138
- } else {
139
- handlers.push( handleObj );
140
- }
141
-
142
- // Keep track of which events have ever been used, for event optimization
143
- jQuery.event.global[ type ] = true;
144
- }
145
-
146
- },
147
-
148
- // Detach an event or set of events from an element
149
- remove: function( elem, types, handler, selector, mappedTypes ) {
150
-
151
- var j, origCount, tmp,
152
- events, t, handleObj,
153
- special, handlers, type, namespaces, origType,
154
- elemData = data_priv.hasData( elem ) && data_priv.get( elem );
155
-
156
- if ( !elemData || !(events = elemData.events) ) {
157
- return;
158
- }
159
-
160
- // Once for each type.namespace in types; type may be omitted
161
- types = ( types || "" ).match( rnotwhite ) || [ "" ];
162
- t = types.length;
163
- while ( t-- ) {
164
- tmp = rtypenamespace.exec( types[t] ) || [];
165
- type = origType = tmp[1];
166
- namespaces = ( tmp[2] || "" ).split( "." ).sort();
167
-
168
- // Unbind all events (on this namespace, if provided) for the element
169
- if ( !type ) {
170
- for ( type in events ) {
171
- jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
172
- }
173
- continue;
174
- }
175
-
176
- special = jQuery.event.special[ type ] || {};
177
- type = ( selector ? special.delegateType : special.bindType ) || type;
178
- handlers = events[ type ] || [];
179
- tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
180
-
181
- // Remove matching events
182
- origCount = j = handlers.length;
183
- while ( j-- ) {
184
- handleObj = handlers[ j ];
185
-
186
- if ( ( mappedTypes || origType === handleObj.origType ) &&
187
- ( !handler || handler.guid === handleObj.guid ) &&
188
- ( !tmp || tmp.test( handleObj.namespace ) ) &&
189
- ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
190
- handlers.splice( j, 1 );
191
-
192
- if ( handleObj.selector ) {
193
- handlers.delegateCount--;
194
- }
195
- if ( special.remove ) {
196
- special.remove.call( elem, handleObj );
197
- }
198
- }
199
- }
200
-
201
- // Remove generic event handler if we removed something and no more handlers exist
202
- // (avoids potential for endless recursion during removal of special event handlers)
203
- if ( origCount && !handlers.length ) {
204
- if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
205
- jQuery.removeEvent( elem, type, elemData.handle );
206
- }
207
-
208
- delete events[ type ];
209
- }
210
- }
211
-
212
- // Remove the expando if it's no longer used
213
- if ( jQuery.isEmptyObject( events ) ) {
214
- delete elemData.handle;
215
- data_priv.remove( elem, "events" );
216
- }
217
- },
218
-
219
- trigger: function( event, data, elem, onlyHandlers ) {
220
-
221
- var i, cur, tmp, bubbleType, ontype, handle, special,
222
- eventPath = [ elem || document ],
223
- type = hasOwn.call( event, "type" ) ? event.type : event,
224
- namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
225
-
226
- cur = tmp = elem = elem || document;
227
-
228
- // Don't do events on text and comment nodes
229
- if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
230
- return;
231
- }
232
-
233
- // focus/blur morphs to focusin/out; ensure we're not firing them right now
234
- if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
235
- return;
236
- }
237
-
238
- if ( type.indexOf(".") >= 0 ) {
239
- // Namespaced trigger; create a regexp to match event type in handle()
240
- namespaces = type.split(".");
241
- type = namespaces.shift();
242
- namespaces.sort();
243
- }
244
- ontype = type.indexOf(":") < 0 && "on" + type;
245
-
246
- // Caller can pass in a jQuery.Event object, Object, or just an event type string
247
- event = event[ jQuery.expando ] ?
248
- event :
249
- new jQuery.Event( type, typeof event === "object" && event );
250
-
251
- // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
252
- event.isTrigger = onlyHandlers ? 2 : 3;
253
- event.namespace = namespaces.join(".");
254
- event.namespace_re = event.namespace ?
255
- new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
256
- null;
257
-
258
- // Clean up the event in case it is being reused
259
- event.result = undefined;
260
- if ( !event.target ) {
261
- event.target = elem;
262
- }
263
-
264
- // Clone any incoming data and prepend the event, creating the handler arg list
265
- data = data == null ?
266
- [ event ] :
267
- jQuery.makeArray( data, [ event ] );
268
-
269
- // Allow special events to draw outside the lines
270
- special = jQuery.event.special[ type ] || {};
271
- if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
272
- return;
273
- }
274
-
275
- // Determine event propagation path in advance, per W3C events spec (#9951)
276
- // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
277
- if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
278
-
279
- bubbleType = special.delegateType || type;
280
- if ( !rfocusMorph.test( bubbleType + type ) ) {
281
- cur = cur.parentNode;
282
- }
283
- for ( ; cur; cur = cur.parentNode ) {
284
- eventPath.push( cur );
285
- tmp = cur;
286
- }
287
-
288
- // Only add window if we got to document (e.g., not plain obj or detached DOM)
289
- if ( tmp === (elem.ownerDocument || document) ) {
290
- eventPath.push( tmp.defaultView || tmp.parentWindow || window );
291
- }
292
- }
293
-
294
- // Fire handlers on the event path
295
- i = 0;
296
- while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
297
-
298
- event.type = i > 1 ?
299
- bubbleType :
300
- special.bindType || type;
301
-
302
- // jQuery handler
303
- handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
304
- if ( handle ) {
305
- handle.apply( cur, data );
306
- }
307
-
308
- // Native handler
309
- handle = ontype && cur[ ontype ];
310
- if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
311
- event.result = handle.apply( cur, data );
312
- if ( event.result === false ) {
313
- event.preventDefault();
314
- }
315
- }
316
- }
317
- event.type = type;
318
-
319
- // If nobody prevented the default action, do it now
320
- if ( !onlyHandlers && !event.isDefaultPrevented() ) {
321
-
322
- if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
323
- jQuery.acceptData( elem ) ) {
324
-
325
- // Call a native DOM method on the target with the same name name as the event.
326
- // Don't do default actions on window, that's where global variables be (#6170)
327
- if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
328
-
329
- // Don't re-trigger an onFOO event when we call its FOO() method
330
- tmp = elem[ ontype ];
331
-
332
- if ( tmp ) {
333
- elem[ ontype ] = null;
334
- }
335
-
336
- // Prevent re-triggering of the same event, since we already bubbled it above
337
- jQuery.event.triggered = type;
338
- elem[ type ]();
339
- jQuery.event.triggered = undefined;
340
-
341
- if ( tmp ) {
342
- elem[ ontype ] = tmp;
343
- }
344
- }
345
- }
346
- }
347
-
348
- return event.result;
349
- },
350
-
351
- dispatch: function( event ) {
352
-
353
- // Make a writable jQuery.Event from the native event object
354
- event = jQuery.event.fix( event );
355
-
356
- var i, j, ret, matched, handleObj,
357
- handlerQueue = [],
358
- args = slice.call( arguments ),
359
- handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
360
- special = jQuery.event.special[ event.type ] || {};
361
-
362
- // Use the fix-ed jQuery.Event rather than the (read-only) native event
363
- args[0] = event;
364
- event.delegateTarget = this;
365
-
366
- // Call the preDispatch hook for the mapped type, and let it bail if desired
367
- if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
368
- return;
369
- }
370
-
371
- // Determine handlers
372
- handlerQueue = jQuery.event.handlers.call( this, event, handlers );
373
-
374
- // Run delegates first; they may want to stop propagation beneath us
375
- i = 0;
376
- while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
377
- event.currentTarget = matched.elem;
378
-
379
- j = 0;
380
- while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
381
-
382
- // Triggered event must either 1) have no namespace, or
383
- // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
384
- if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
385
-
386
- event.handleObj = handleObj;
387
- event.data = handleObj.data;
388
-
389
- ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
390
- .apply( matched.elem, args );
391
-
392
- if ( ret !== undefined ) {
393
- if ( (event.result = ret) === false ) {
394
- event.preventDefault();
395
- event.stopPropagation();
396
- }
397
- }
398
- }
399
- }
400
- }
401
-
402
- // Call the postDispatch hook for the mapped type
403
- if ( special.postDispatch ) {
404
- special.postDispatch.call( this, event );
405
- }
406
-
407
- return event.result;
408
- },
409
-
410
- handlers: function( event, handlers ) {
411
- var i, matches, sel, handleObj,
412
- handlerQueue = [],
413
- delegateCount = handlers.delegateCount,
414
- cur = event.target;
415
-
416
- // Find delegate handlers
417
- // Black-hole SVG <use> instance trees (#13180)
418
- // Avoid non-left-click bubbling in Firefox (#3861)
419
- if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
420
-
421
- for ( ; cur !== this; cur = cur.parentNode || this ) {
422
-
423
- // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
424
- if ( cur.disabled !== true || event.type !== "click" ) {
425
- matches = [];
426
- for ( i = 0; i < delegateCount; i++ ) {
427
- handleObj = handlers[ i ];
428
-
429
- // Don't conflict with Object.prototype properties (#13203)
430
- sel = handleObj.selector + " ";
431
-
432
- if ( matches[ sel ] === undefined ) {
433
- matches[ sel ] = handleObj.needsContext ?
434
- jQuery( sel, this ).index( cur ) >= 0 :
435
- jQuery.find( sel, this, null, [ cur ] ).length;
436
- }
437
- if ( matches[ sel ] ) {
438
- matches.push( handleObj );
439
- }
440
- }
441
- if ( matches.length ) {
442
- handlerQueue.push({ elem: cur, handlers: matches });
443
- }
444
- }
445
- }
446
- }
447
-
448
- // Add the remaining (directly-bound) handlers
449
- if ( delegateCount < handlers.length ) {
450
- handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
451
- }
452
-
453
- return handlerQueue;
454
- },
455
-
456
- // Includes some event props shared by KeyEvent and MouseEvent
457
- props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
458
-
459
- fixHooks: {},
460
-
461
- keyHooks: {
462
- props: "char charCode key keyCode".split(" "),
463
- filter: function( event, original ) {
464
-
465
- // Add which for key events
466
- if ( event.which == null ) {
467
- event.which = original.charCode != null ? original.charCode : original.keyCode;
468
- }
469
-
470
- return event;
471
- }
472
- },
473
-
474
- mouseHooks: {
475
- props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
476
- filter: function( event, original ) {
477
- var eventDoc, doc, body,
478
- button = original.button;
479
-
480
- // Calculate pageX/Y if missing and clientX/Y available
481
- if ( event.pageX == null && original.clientX != null ) {
482
- eventDoc = event.target.ownerDocument || document;
483
- doc = eventDoc.documentElement;
484
- body = eventDoc.body;
485
-
486
- event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
487
- event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
488
- }
489
-
490
- // Add which for click: 1 === left; 2 === middle; 3 === right
491
- // Note: button is not normalized, so don't use it
492
- if ( !event.which && button !== undefined ) {
493
- event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
494
- }
495
-
496
- return event;
497
- }
498
- },
499
-
500
- fix: function( event ) {
501
- if ( event[ jQuery.expando ] ) {
502
- return event;
503
- }
504
-
505
- // Create a writable copy of the event object and normalize some properties
506
- var i, prop, copy,
507
- type = event.type,
508
- originalEvent = event,
509
- fixHook = this.fixHooks[ type ];
510
-
511
- if ( !fixHook ) {
512
- this.fixHooks[ type ] = fixHook =
513
- rmouseEvent.test( type ) ? this.mouseHooks :
514
- rkeyEvent.test( type ) ? this.keyHooks :
515
- {};
516
- }
517
- copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
518
-
519
- event = new jQuery.Event( originalEvent );
520
-
521
- i = copy.length;
522
- while ( i-- ) {
523
- prop = copy[ i ];
524
- event[ prop ] = originalEvent[ prop ];
525
- }
526
-
527
- // Support: Cordova 2.5 (WebKit) (#13255)
528
- // All events should have a target; Cordova deviceready doesn't
529
- if ( !event.target ) {
530
- event.target = document;
531
- }
532
-
533
- // Support: Safari 6.0+, Chrome < 28
534
- // Target should not be a text node (#504, #13143)
535
- if ( event.target.nodeType === 3 ) {
536
- event.target = event.target.parentNode;
537
- }
538
-
539
- return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
540
- },
541
-
542
- special: {
543
- load: {
544
- // Prevent triggered image.load events from bubbling to window.load
545
- noBubble: true
546
- },
547
- focus: {
548
- // Fire native event if possible so blur/focus sequence is correct
549
- trigger: function() {
550
- if ( this !== safeActiveElement() && this.focus ) {
551
- this.focus();
552
- return false;
553
- }
554
- },
555
- delegateType: "focusin"
556
- },
557
- blur: {
558
- trigger: function() {
559
- if ( this === safeActiveElement() && this.blur ) {
560
- this.blur();
561
- return false;
562
- }
563
- },
564
- delegateType: "focusout"
565
- },
566
- click: {
567
- // For checkbox, fire native event so checked state will be right
568
- trigger: function() {
569
- if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
570
- this.click();
571
- return false;
572
- }
573
- },
574
-
575
- // For cross-browser consistency, don't fire native .click() on links
576
- _default: function( event ) {
577
- return jQuery.nodeName( event.target, "a" );
578
- }
579
- },
580
-
581
- beforeunload: {
582
- postDispatch: function( event ) {
583
-
584
- // Support: Firefox 20+
585
- // Firefox doesn't alert if the returnValue field is not set.
586
- if ( event.result !== undefined && event.originalEvent ) {
587
- event.originalEvent.returnValue = event.result;
588
- }
589
- }
590
- }
591
- },
592
-
593
- simulate: function( type, elem, event, bubble ) {
594
- // Piggyback on a donor event to simulate a different one.
595
- // Fake originalEvent to avoid donor's stopPropagation, but if the
596
- // simulated event prevents default then we do the same on the donor.
597
- var e = jQuery.extend(
598
- new jQuery.Event(),
599
- event,
600
- {
601
- type: type,
602
- isSimulated: true,
603
- originalEvent: {}
604
- }
605
- );
606
- if ( bubble ) {
607
- jQuery.event.trigger( e, null, elem );
608
- } else {
609
- jQuery.event.dispatch.call( elem, e );
610
- }
611
- if ( e.isDefaultPrevented() ) {
612
- event.preventDefault();
613
- }
614
- }
615
- };
616
-
617
- jQuery.removeEvent = function( elem, type, handle ) {
618
- if ( elem.removeEventListener ) {
619
- elem.removeEventListener( type, handle, false );
620
- }
621
- };
622
-
623
- jQuery.Event = function( src, props ) {
624
- // Allow instantiation without the 'new' keyword
625
- if ( !(this instanceof jQuery.Event) ) {
626
- return new jQuery.Event( src, props );
627
- }
628
-
629
- // Event object
630
- if ( src && src.type ) {
631
- this.originalEvent = src;
632
- this.type = src.type;
633
-
634
- // Events bubbling up the document may have been marked as prevented
635
- // by a handler lower down the tree; reflect the correct value.
636
- this.isDefaultPrevented = src.defaultPrevented ||
637
- src.defaultPrevented === undefined &&
638
- // Support: Android < 4.0
639
- src.returnValue === false ?
640
- returnTrue :
641
- returnFalse;
642
-
643
- // Event type
644
- } else {
645
- this.type = src;
646
- }
647
-
648
- // Put explicitly provided properties onto the event object
649
- if ( props ) {
650
- jQuery.extend( this, props );
651
- }
652
-
653
- // Create a timestamp if incoming event doesn't have one
654
- this.timeStamp = src && src.timeStamp || jQuery.now();
655
-
656
- // Mark it as fixed
657
- this[ jQuery.expando ] = true;
658
- };
659
-
660
- // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
661
- // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
662
- jQuery.Event.prototype = {
663
- isDefaultPrevented: returnFalse,
664
- isPropagationStopped: returnFalse,
665
- isImmediatePropagationStopped: returnFalse,
666
-
667
- preventDefault: function() {
668
- var e = this.originalEvent;
669
-
670
- this.isDefaultPrevented = returnTrue;
671
-
672
- if ( e && e.preventDefault ) {
673
- e.preventDefault();
674
- }
675
- },
676
- stopPropagation: function() {
677
- var e = this.originalEvent;
678
-
679
- this.isPropagationStopped = returnTrue;
680
-
681
- if ( e && e.stopPropagation ) {
682
- e.stopPropagation();
683
- }
684
- },
685
- stopImmediatePropagation: function() {
686
- var e = this.originalEvent;
687
-
688
- this.isImmediatePropagationStopped = returnTrue;
689
-
690
- if ( e && e.stopImmediatePropagation ) {
691
- e.stopImmediatePropagation();
692
- }
693
-
694
- this.stopPropagation();
695
- }
696
- };
697
-
698
- // Create mouseenter/leave events using mouseover/out and event-time checks
699
- // Support: Chrome 15+
700
- jQuery.each({
701
- mouseenter: "mouseover",
702
- mouseleave: "mouseout",
703
- pointerenter: "pointerover",
704
- pointerleave: "pointerout"
705
- }, function( orig, fix ) {
706
- jQuery.event.special[ orig ] = {
707
- delegateType: fix,
708
- bindType: fix,
709
-
710
- handle: function( event ) {
711
- var ret,
712
- target = this,
713
- related = event.relatedTarget,
714
- handleObj = event.handleObj;
715
-
716
- // For mousenter/leave call the handler if related is outside the target.
717
- // NB: No relatedTarget if the mouse left/entered the browser window
718
- if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
719
- event.type = handleObj.origType;
720
- ret = handleObj.handler.apply( this, arguments );
721
- event.type = fix;
722
- }
723
- return ret;
724
- }
725
- };
726
- });
727
-
728
- // Create "bubbling" focus and blur events
729
- // Support: Firefox, Chrome, Safari
730
- if ( !support.focusinBubbles ) {
731
- jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
732
-
733
- // Attach a single capturing handler on the document while someone wants focusin/focusout
734
- var handler = function( event ) {
735
- jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
736
- };
737
-
738
- jQuery.event.special[ fix ] = {
739
- setup: function() {
740
- var doc = this.ownerDocument || this,
741
- attaches = data_priv.access( doc, fix );
742
-
743
- if ( !attaches ) {
744
- doc.addEventListener( orig, handler, true );
745
- }
746
- data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
747
- },
748
- teardown: function() {
749
- var doc = this.ownerDocument || this,
750
- attaches = data_priv.access( doc, fix ) - 1;
751
-
752
- if ( !attaches ) {
753
- doc.removeEventListener( orig, handler, true );
754
- data_priv.remove( doc, fix );
755
-
756
- } else {
757
- data_priv.access( doc, fix, attaches );
758
- }
759
- }
760
- };
761
- });
762
- }
763
-
764
- jQuery.fn.extend({
765
-
766
- on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
767
- var origFn, type;
768
-
769
- // Types can be a map of types/handlers
770
- if ( typeof types === "object" ) {
771
- // ( types-Object, selector, data )
772
- if ( typeof selector !== "string" ) {
773
- // ( types-Object, data )
774
- data = data || selector;
775
- selector = undefined;
776
- }
777
- for ( type in types ) {
778
- this.on( type, selector, data, types[ type ], one );
779
- }
780
- return this;
781
- }
782
-
783
- if ( data == null && fn == null ) {
784
- // ( types, fn )
785
- fn = selector;
786
- data = selector = undefined;
787
- } else if ( fn == null ) {
788
- if ( typeof selector === "string" ) {
789
- // ( types, selector, fn )
790
- fn = data;
791
- data = undefined;
792
- } else {
793
- // ( types, data, fn )
794
- fn = data;
795
- data = selector;
796
- selector = undefined;
797
- }
798
- }
799
- if ( fn === false ) {
800
- fn = returnFalse;
801
- } else if ( !fn ) {
802
- return this;
803
- }
804
-
805
- if ( one === 1 ) {
806
- origFn = fn;
807
- fn = function( event ) {
808
- // Can use an empty set, since event contains the info
809
- jQuery().off( event );
810
- return origFn.apply( this, arguments );
811
- };
812
- // Use same guid so caller can remove using origFn
813
- fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
814
- }
815
- return this.each( function() {
816
- jQuery.event.add( this, types, fn, data, selector );
817
- });
818
- },
819
- one: function( types, selector, data, fn ) {
820
- return this.on( types, selector, data, fn, 1 );
821
- },
822
- off: function( types, selector, fn ) {
823
- var handleObj, type;
824
- if ( types && types.preventDefault && types.handleObj ) {
825
- // ( event ) dispatched jQuery.Event
826
- handleObj = types.handleObj;
827
- jQuery( types.delegateTarget ).off(
828
- handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
829
- handleObj.selector,
830
- handleObj.handler
831
- );
832
- return this;
833
- }
834
- if ( typeof types === "object" ) {
835
- // ( types-object [, selector] )
836
- for ( type in types ) {
837
- this.off( type, selector, types[ type ] );
838
- }
839
- return this;
840
- }
841
- if ( selector === false || typeof selector === "function" ) {
842
- // ( types [, fn] )
843
- fn = selector;
844
- selector = undefined;
845
- }
846
- if ( fn === false ) {
847
- fn = returnFalse;
848
- }
849
- return this.each(function() {
850
- jQuery.event.remove( this, types, fn, selector );
851
- });
852
- },
853
-
854
- trigger: function( type, data ) {
855
- return this.each(function() {
856
- jQuery.event.trigger( type, data, this );
857
- });
858
- },
859
- triggerHandler: function( type, data ) {
860
- var elem = this[0];
861
- if ( elem ) {
862
- return jQuery.event.trigger( type, data, elem, true );
863
- }
864
- }
865
- });
866
-
867
- return jQuery;
868
- });