unpoly-rails 1.0.3 → 2.0.0.pre.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of unpoly-rails might be problematic. Click here for more details.

Files changed (344) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -1
  3. data/CHANGELOG.md +43 -25
  4. data/README.md +5 -6
  5. data/README_RAILS.md +295 -14
  6. data/dist/unpoly-bootstrap3.css +9 -14
  7. data/dist/unpoly-bootstrap3.js +4 -18
  8. data/dist/unpoly-bootstrap3.min.css +1 -1
  9. data/dist/unpoly-bootstrap3.min.js +1 -1
  10. data/dist/unpoly-bootstrap4.css +9 -0
  11. data/dist/unpoly-bootstrap4.js +16 -0
  12. data/dist/unpoly-bootstrap4.min.css +1 -0
  13. data/dist/unpoly-bootstrap4.min.js +1 -0
  14. data/dist/unpoly-bootstrap5.css +9 -0
  15. data/dist/unpoly-bootstrap5.js +14 -0
  16. data/dist/unpoly-bootstrap5.min.css +1 -0
  17. data/dist/unpoly-bootstrap5.min.js +1 -0
  18. data/dist/unpoly-migrate.js +1213 -0
  19. data/dist/unpoly-migrate.min.js +1 -0
  20. data/dist/unpoly.css +109 -140
  21. data/dist/unpoly.js +15376 -10484
  22. data/dist/unpoly.min.css +1 -1
  23. data/dist/unpoly.min.js +6 -4
  24. data/lib/unpoly/rails/change/cache.rb +26 -0
  25. data/lib/unpoly/rails/change/context.rb +80 -0
  26. data/lib/unpoly/rails/change/field.rb +117 -0
  27. data/lib/unpoly/rails/change/field_definition.rb +74 -0
  28. data/lib/unpoly/rails/change/layer.rb +60 -0
  29. data/lib/unpoly/rails/change.rb +372 -0
  30. data/lib/unpoly/rails/controller.rb +47 -0
  31. data/lib/unpoly/rails/error.rb +5 -0
  32. data/lib/unpoly/rails/request_echo_headers.rb +2 -2
  33. data/lib/unpoly/rails/version.rb +1 -1
  34. data/lib/unpoly/tasks.rb +45 -0
  35. data/lib/unpoly-rails.rb +9 -3
  36. metadata +42 -316
  37. data/.gitignore +0 -10
  38. data/.ruby-version +0 -1
  39. data/Gemfile +0 -7
  40. data/Gemfile.lock +0 -39
  41. data/Rakefile +0 -154
  42. data/bower.json +0 -27
  43. data/design/animation-ghosting.txt +0 -72
  44. data/design/design.txt +0 -34
  45. data/design/draft.html.erb +0 -48
  46. data/design/draft.rb +0 -9
  47. data/design/es6.js +0 -32
  48. data/design/ghost-debugging.txt +0 -118
  49. data/design/homepage.txt +0 -236
  50. data/design/ie11.txt +0 -9
  51. data/design/measure_import_node.js +0 -330
  52. data/design/measure_jquery/element_list.js +0 -41
  53. data/design/measure_jquery/up.on_vs_addEventListener.js +0 -56
  54. data/design/positioning.txt +0 -28
  55. data/design/query-params-in-form-actions/cases.html +0 -125
  56. data/design/rename.txt +0 -0
  57. data/design/test_rejected_promise.txt +0 -5
  58. data/design/unpoly errors.txt +0 -19
  59. data/lib/assets/javascripts/unpoly/browser.coffee.erb +0 -240
  60. data/lib/assets/javascripts/unpoly/classes/body_shifter.coffee +0 -45
  61. data/lib/assets/javascripts/unpoly/classes/cache.coffee +0 -127
  62. data/lib/assets/javascripts/unpoly/classes/compile_pass.coffee +0 -93
  63. data/lib/assets/javascripts/unpoly/classes/config.coffee +0 -9
  64. data/lib/assets/javascripts/unpoly/classes/css_transition.coffee +0 -118
  65. data/lib/assets/javascripts/unpoly/classes/divertible_chain.coffee +0 -39
  66. data/lib/assets/javascripts/unpoly/classes/event_listener.coffee +0 -116
  67. data/lib/assets/javascripts/unpoly/classes/extract_cascade.coffee +0 -86
  68. data/lib/assets/javascripts/unpoly/classes/extract_plan.coffee +0 -111
  69. data/lib/assets/javascripts/unpoly/classes/field_observer.coffee +0 -80
  70. data/lib/assets/javascripts/unpoly/classes/focus_follower.coffee +0 -29
  71. data/lib/assets/javascripts/unpoly/classes/follow_variant.coffee +0 -64
  72. data/lib/assets/javascripts/unpoly/classes/html_parser.coffee +0 -46
  73. data/lib/assets/javascripts/unpoly/classes/motion_controller.coffee +0 -157
  74. data/lib/assets/javascripts/unpoly/classes/params.coffee.erb +0 -544
  75. data/lib/assets/javascripts/unpoly/classes/record.coffee +0 -22
  76. data/lib/assets/javascripts/unpoly/classes/rect.js +0 -21
  77. data/lib/assets/javascripts/unpoly/classes/request.coffee +0 -247
  78. data/lib/assets/javascripts/unpoly/classes/response.coffee +0 -157
  79. data/lib/assets/javascripts/unpoly/classes/reveal_motion.coffee +0 -102
  80. data/lib/assets/javascripts/unpoly/classes/scroll_motion.coffee +0 -67
  81. data/lib/assets/javascripts/unpoly/classes/selector.coffee +0 -60
  82. data/lib/assets/javascripts/unpoly/classes/store/memory.coffee +0 -26
  83. data/lib/assets/javascripts/unpoly/classes/store/session.coffee +0 -59
  84. data/lib/assets/javascripts/unpoly/classes/tether.coffee +0 -105
  85. data/lib/assets/javascripts/unpoly/classes/url_set.coffee +0 -32
  86. data/lib/assets/javascripts/unpoly/cookie.coffee +0 -56
  87. data/lib/assets/javascripts/unpoly/element.coffee.erb +0 -1129
  88. data/lib/assets/javascripts/unpoly/event.coffee.erb +0 -445
  89. data/lib/assets/javascripts/unpoly/feedback.coffee +0 -353
  90. data/lib/assets/javascripts/unpoly/form.coffee.erb +0 -1084
  91. data/lib/assets/javascripts/unpoly/fragment.coffee.erb +0 -928
  92. data/lib/assets/javascripts/unpoly/framework.coffee +0 -65
  93. data/lib/assets/javascripts/unpoly/history.coffee +0 -268
  94. data/lib/assets/javascripts/unpoly/legacy.coffee +0 -60
  95. data/lib/assets/javascripts/unpoly/link.coffee.erb +0 -622
  96. data/lib/assets/javascripts/unpoly/log.coffee +0 -253
  97. data/lib/assets/javascripts/unpoly/modal.coffee.erb +0 -827
  98. data/lib/assets/javascripts/unpoly/motion.coffee.erb +0 -668
  99. data/lib/assets/javascripts/unpoly/namespace.coffee.erb +0 -5
  100. data/lib/assets/javascripts/unpoly/popup.coffee.erb +0 -515
  101. data/lib/assets/javascripts/unpoly/protocol.coffee +0 -300
  102. data/lib/assets/javascripts/unpoly/proxy.coffee +0 -672
  103. data/lib/assets/javascripts/unpoly/radio.coffee +0 -60
  104. data/lib/assets/javascripts/unpoly/rails.coffee +0 -24
  105. data/lib/assets/javascripts/unpoly/syntax.coffee.erb +0 -476
  106. data/lib/assets/javascripts/unpoly/toast.coffee +0 -67
  107. data/lib/assets/javascripts/unpoly/tooltip.coffee +0 -276
  108. data/lib/assets/javascripts/unpoly/util.coffee.erb +0 -1677
  109. data/lib/assets/javascripts/unpoly/viewport.coffee.erb +0 -830
  110. data/lib/assets/javascripts/unpoly-bootstrap3/feedback-ext.coffee +0 -5
  111. data/lib/assets/javascripts/unpoly-bootstrap3/form-ext.coffee +0 -1
  112. data/lib/assets/javascripts/unpoly-bootstrap3/modal-ext.coffee +0 -14
  113. data/lib/assets/javascripts/unpoly-bootstrap3/viewport-ext.coffee +0 -5
  114. data/lib/assets/javascripts/unpoly-bootstrap3.coffee +0 -2
  115. data/lib/assets/javascripts/unpoly.coffee +0 -28
  116. data/lib/assets/stylesheets/unpoly/close.sass +0 -2
  117. data/lib/assets/stylesheets/unpoly/dom.sass +0 -5
  118. data/lib/assets/stylesheets/unpoly/layout.sass +0 -2
  119. data/lib/assets/stylesheets/unpoly/link.sass +0 -2
  120. data/lib/assets/stylesheets/unpoly/modal.sass +0 -116
  121. data/lib/assets/stylesheets/unpoly/popup.sass +0 -7
  122. data/lib/assets/stylesheets/unpoly/toast.sass +0 -33
  123. data/lib/assets/stylesheets/unpoly/tooltip.sass +0 -62
  124. data/lib/assets/stylesheets/unpoly-bootstrap3/modal-ext.sass +0 -27
  125. data/lib/assets/stylesheets/unpoly-bootstrap3.sass +0 -1
  126. data/lib/assets/stylesheets/unpoly.sass +0 -1
  127. data/lib/unpoly/rails/inspector.rb +0 -149
  128. data/lib/unpoly/rails/inspector_accessor.rb +0 -30
  129. data/package.json +0 -38
  130. data/spec_app/.firefox-version +0 -1
  131. data/spec_app/.gitignore +0 -17
  132. data/spec_app/.rspec +0 -2
  133. data/spec_app/Gemfile +0 -29
  134. data/spec_app/Gemfile.lock +0 -223
  135. data/spec_app/README.rdoc +0 -28
  136. data/spec_app/Rakefile +0 -6
  137. data/spec_app/app/assets/images/.keep +0 -0
  138. data/spec_app/app/assets/images/favicon.png +0 -0
  139. data/spec_app/app/assets/images/grid.png +0 -0
  140. data/spec_app/app/assets/javascripts/bootstrap_manifest.coffee +0 -6
  141. data/spec_app/app/assets/javascripts/integration_test.coffee +0 -5
  142. data/spec_app/app/assets/javascripts/jasmine_specs.coffee +0 -6
  143. data/spec_app/app/assets/stylesheets/_helpers.sass +0 -5
  144. data/spec_app/app/assets/stylesheets/bootstrap_manifest.sass +0 -2
  145. data/spec_app/app/assets/stylesheets/integration_test.sass +0 -88
  146. data/spec_app/app/assets/stylesheets/jasmine_specs.sass +0 -20
  147. data/spec_app/app/controllers/application_controller.rb +0 -14
  148. data/spec_app/app/controllers/binding_test_controller.rb +0 -51
  149. data/spec_app/app/controllers/boot_test_controller.rb +0 -31
  150. data/spec_app/app/controllers/compiler_test_controller.rb +0 -5
  151. data/spec_app/app/controllers/css_test_controller.rb +0 -5
  152. data/spec_app/app/controllers/error_test_controller.rb +0 -5
  153. data/spec_app/app/controllers/form_test/basics_controller.rb +0 -14
  154. data/spec_app/app/controllers/form_test/redirects_controller.rb +0 -17
  155. data/spec_app/app/controllers/form_test/uploads_controller.rb +0 -15
  156. data/spec_app/app/controllers/hash_test_controller.rb +0 -5
  157. data/spec_app/app/controllers/method_test_controller.rb +0 -16
  158. data/spec_app/app/controllers/motion_test_controller.rb +0 -5
  159. data/spec_app/app/controllers/pages_controller.rb +0 -17
  160. data/spec_app/app/controllers/replace_test_controller.rb +0 -5
  161. data/spec_app/app/controllers/reveal_test_controller.rb +0 -5
  162. data/spec_app/app/controllers/scroll_test_controller.rb +0 -5
  163. data/spec_app/app/helpers/application_helper.rb +0 -11
  164. data/spec_app/app/mailers/.keep +0 -0
  165. data/spec_app/app/models/concerns/.keep +0 -0
  166. data/spec_app/app/views/boot_test/defer.erb +0 -18
  167. data/spec_app/app/views/boot_test/module.erb +0 -18
  168. data/spec_app/app/views/boot_test/sync.erb +0 -17
  169. data/spec_app/app/views/compiler_test/timestamp.erb +0 -10
  170. data/spec_app/app/views/css_test/modal.erb +0 -47
  171. data/spec_app/app/views/css_test/modal_contents.erb +0 -5
  172. data/spec_app/app/views/css_test/modal_contents_wide.erb +0 -5
  173. data/spec_app/app/views/css_test/popup.erb +0 -81
  174. data/spec_app/app/views/css_test/popup_contents.erb +0 -5
  175. data/spec_app/app/views/css_test/tooltip.erb +0 -48
  176. data/spec_app/app/views/error_test/trigger.erb +0 -80
  177. data/spec_app/app/views/error_test/unexpected_response.erb +0 -3
  178. data/spec_app/app/views/form_test/basics/new.erb +0 -60
  179. data/spec_app/app/views/form_test/redirects/new.erb +0 -27
  180. data/spec_app/app/views/form_test/redirects/target.erb +0 -6
  181. data/spec_app/app/views/form_test/submission_result.erb +0 -30
  182. data/spec_app/app/views/form_test/uploads/new.erb +0 -44
  183. data/spec_app/app/views/hash_test/unpoly.erb +0 -30
  184. data/spec_app/app/views/hash_test/vanilla.erb +0 -13
  185. data/spec_app/app/views/layouts/integration_test.erb +0 -22
  186. data/spec_app/app/views/layouts/jasmine_rails/spec_runner.html.erb +0 -20
  187. data/spec_app/app/views/method_test/form_target.erb +0 -17
  188. data/spec_app/app/views/method_test/page1.erb +0 -11
  189. data/spec_app/app/views/method_test/page2.erb +0 -6
  190. data/spec_app/app/views/motion_test/animations.erb +0 -16
  191. data/spec_app/app/views/motion_test/transitions.erb +0 -13
  192. data/spec_app/app/views/pages/start.erb +0 -82
  193. data/spec_app/app/views/replace_test/_nav.erb +0 -6
  194. data/spec_app/app/views/replace_test/page1.erb +0 -14
  195. data/spec_app/app/views/replace_test/page2.erb +0 -14
  196. data/spec_app/app/views/replace_test/table.erb +0 -16
  197. data/spec_app/app/views/reveal_test/long1.erb +0 -17
  198. data/spec_app/app/views/reveal_test/long2.erb +0 -17
  199. data/spec_app/app/views/reveal_test/within_document_viewport.erb +0 -24
  200. data/spec_app/app/views/reveal_test/within_overflowing_div_viewport.erb +0 -28
  201. data/spec_app/app/views/scroll_test/long1.erb +0 -30
  202. data/spec_app/bin/bundle +0 -3
  203. data/spec_app/bin/rails +0 -8
  204. data/spec_app/bin/rake +0 -8
  205. data/spec_app/bin/setup +0 -29
  206. data/spec_app/bin/spring +0 -18
  207. data/spec_app/config/application.rb +0 -28
  208. data/spec_app/config/boot.rb +0 -3
  209. data/spec_app/config/database.yml +0 -25
  210. data/spec_app/config/environment.rb +0 -5
  211. data/spec_app/config/environments/development.rb +0 -41
  212. data/spec_app/config/environments/production.rb +0 -79
  213. data/spec_app/config/environments/test.rb +0 -42
  214. data/spec_app/config/initializers/assets.rb +0 -19
  215. data/spec_app/config/initializers/backtrace_silencers.rb +0 -7
  216. data/spec_app/config/initializers/bower_rails.rb +0 -16
  217. data/spec_app/config/initializers/cookies_serializer.rb +0 -3
  218. data/spec_app/config/initializers/filter_parameter_logging.rb +0 -4
  219. data/spec_app/config/initializers/inflections.rb +0 -16
  220. data/spec_app/config/initializers/mime_types.rb +0 -4
  221. data/spec_app/config/initializers/session_store.rb +0 -3
  222. data/spec_app/config/initializers/wrap_parameters.rb +0 -14
  223. data/spec_app/config/locales/en.yml +0 -23
  224. data/spec_app/config/routes.rb +0 -33
  225. data/spec_app/config/secrets.yml +0 -22
  226. data/spec_app/config.ru +0 -4
  227. data/spec_app/db/schema.rb +0 -23
  228. data/spec_app/db/seeds.rb +0 -7
  229. data/spec_app/lib/assets/.keep +0 -0
  230. data/spec_app/lib/tasks/.keep +0 -0
  231. data/spec_app/lib/tasks/cucumber.rake +0 -65
  232. data/spec_app/log/.keep +0 -0
  233. data/spec_app/public/404.html +0 -67
  234. data/spec_app/public/422.html +0 -67
  235. data/spec_app/public/500.html +0 -66
  236. data/spec_app/public/favicon.ico +0 -0
  237. data/spec_app/public/robots.txt +0 -5
  238. data/spec_app/script/cucumber +0 -10
  239. data/spec_app/spec/controllers/binding_test_controller_spec.rb +0 -248
  240. data/spec_app/spec/javascripts/helpers/agent_detector.coffee +0 -20
  241. data/spec_app/spec/javascripts/helpers/async_sequence.js.coffee +0 -103
  242. data/spec_app/spec/javascripts/helpers/browser_switches.js.coffee +0 -21
  243. data/spec_app/spec/javascripts/helpers/enable_logging.js.coffee +0 -2
  244. data/spec_app/spec/javascripts/helpers/fixture.js.coffee +0 -25
  245. data/spec_app/spec/javascripts/helpers/index.js.coffee +0 -1
  246. data/spec_app/spec/javascripts/helpers/jquery_no_conflict.js +0 -1
  247. data/spec_app/spec/javascripts/helpers/knife.js.coffee +0 -69
  248. data/spec_app/spec/javascripts/helpers/last_request.js.coffee +0 -25
  249. data/spec_app/spec/javascripts/helpers/mock_ajax.js.coffee +0 -8
  250. data/spec_app/spec/javascripts/helpers/mock_clock.js.coffee +0 -2
  251. data/spec_app/spec/javascripts/helpers/parse_form_data.js.coffee +0 -24
  252. data/spec_app/spec/javascripts/helpers/promise_state.js +0 -18
  253. data/spec_app/spec/javascripts/helpers/protect_jasmine_runner.coffee +0 -12
  254. data/spec_app/spec/javascripts/helpers/remove_body_margin.js.coffee +0 -8
  255. data/spec_app/spec/javascripts/helpers/reset_history.js.coffee +0 -23
  256. data/spec_app/spec/javascripts/helpers/reset_knife.js.coffee +0 -2
  257. data/spec_app/spec/javascripts/helpers/reset_up.js.coffee +0 -25
  258. data/spec_app/spec/javascripts/helpers/restore_body_scroll.js.coffee +0 -5
  259. data/spec_app/spec/javascripts/helpers/show_lib_versions.coffee +0 -12
  260. data/spec_app/spec/javascripts/helpers/spec_util.coffee +0 -47
  261. data/spec_app/spec/javascripts/helpers/to_be_around.js.coffee +0 -8
  262. data/spec_app/spec/javascripts/helpers/to_be_array.coffee +0 -5
  263. data/spec_app/spec/javascripts/helpers/to_be_attached.coffee +0 -9
  264. data/spec_app/spec/javascripts/helpers/to_be_blank.js.coffee +0 -8
  265. data/spec_app/spec/javascripts/helpers/to_be_detached.coffee +0 -9
  266. data/spec_app/spec/javascripts/helpers/to_be_element.js.coffee +0 -8
  267. data/spec_app/spec/javascripts/helpers/to_be_error.coffee +0 -8
  268. data/spec_app/spec/javascripts/helpers/to_be_given.js.coffee +0 -8
  269. data/spec_app/spec/javascripts/helpers/to_be_hidden.js.coffee +0 -8
  270. data/spec_app/spec/javascripts/helpers/to_be_jquery.js.coffee +0 -5
  271. data/spec_app/spec/javascripts/helpers/to_be_missing.js.coffee +0 -8
  272. data/spec_app/spec/javascripts/helpers/to_be_present.js.coffee +0 -8
  273. data/spec_app/spec/javascripts/helpers/to_be_scrolled_to.coffee +0 -11
  274. data/spec_app/spec/javascripts/helpers/to_be_visible.js.coffee +0 -9
  275. data/spec_app/spec/javascripts/helpers/to_contain.js.coffee +0 -8
  276. data/spec_app/spec/javascripts/helpers/to_end_with.js.coffee +0 -11
  277. data/spec_app/spec/javascripts/helpers/to_equal_jquery.js.coffee +0 -8
  278. data/spec_app/spec/javascripts/helpers/to_equal_node_list.coffee +0 -7
  279. data/spec_app/spec/javascripts/helpers/to_equal_via_is_equal.js.coffee +0 -7
  280. data/spec_app/spec/javascripts/helpers/to_have_class.js.coffee +0 -10
  281. data/spec_app/spec/javascripts/helpers/to_have_descendant.js.coffee +0 -10
  282. data/spec_app/spec/javascripts/helpers/to_have_length.js.coffee +0 -8
  283. data/spec_app/spec/javascripts/helpers/to_have_opacity.coffee +0 -15
  284. data/spec_app/spec/javascripts/helpers/to_have_own_property.js.coffee +0 -8
  285. data/spec_app/spec/javascripts/helpers/to_have_request_method.js.coffee +0 -16
  286. data/spec_app/spec/javascripts/helpers/to_have_text.js.coffee +0 -9
  287. data/spec_app/spec/javascripts/helpers/to_have_unhandled_rejections.coffee +0 -18
  288. data/spec_app/spec/javascripts/helpers/to_match_list.coffee +0 -14
  289. data/spec_app/spec/javascripts/helpers/to_match_selector.coffee +0 -8
  290. data/spec_app/spec/javascripts/helpers/to_match_text.js.coffee +0 -13
  291. data/spec_app/spec/javascripts/helpers/to_match_url.coffee +0 -14
  292. data/spec_app/spec/javascripts/helpers/trigger.js.coffee +0 -200
  293. data/spec_app/spec/javascripts/helpers/wait_until_dom_ready.js.coffee +0 -5
  294. data/spec_app/spec/javascripts/support/jasmine.yml +0 -51
  295. data/spec_app/spec/javascripts/up/browser_spec.js.coffee +0 -150
  296. data/spec_app/spec/javascripts/up/classes/cache_spec.js.coffee +0 -82
  297. data/spec_app/spec/javascripts/up/classes/config_spec.coffee +0 -24
  298. data/spec_app/spec/javascripts/up/classes/divertible_chain_spec.coffee +0 -45
  299. data/spec_app/spec/javascripts/up/classes/focus_tracker_spec.coffee +0 -34
  300. data/spec_app/spec/javascripts/up/classes/params_spec.coffee +0 -557
  301. data/spec_app/spec/javascripts/up/classes/request_spec.coffee +0 -50
  302. data/spec_app/spec/javascripts/up/classes/scroll_motion_spec.js.coffee +0 -51
  303. data/spec_app/spec/javascripts/up/classes/store/memory_spec.js.coffee +0 -70
  304. data/spec_app/spec/javascripts/up/classes/store/session_spec.js.coffee +0 -114
  305. data/spec_app/spec/javascripts/up/element_spec.coffee +0 -897
  306. data/spec_app/spec/javascripts/up/event_spec.js.coffee +0 -530
  307. data/spec_app/spec/javascripts/up/feedback_spec.js.coffee +0 -401
  308. data/spec_app/spec/javascripts/up/form_spec.js.coffee +0 -1527
  309. data/spec_app/spec/javascripts/up/fragment_spec.js.coffee +0 -2624
  310. data/spec_app/spec/javascripts/up/history_spec.js.coffee +0 -340
  311. data/spec_app/spec/javascripts/up/jquery_spec.js.coffee +0 -4
  312. data/spec_app/spec/javascripts/up/legacy_spec.js.coffee +0 -27
  313. data/spec_app/spec/javascripts/up/link_spec.js.coffee +0 -1098
  314. data/spec_app/spec/javascripts/up/log_spec.js.coffee +0 -119
  315. data/spec_app/spec/javascripts/up/modal_spec.js.coffee +0 -939
  316. data/spec_app/spec/javascripts/up/motion_spec.js.coffee +0 -582
  317. data/spec_app/spec/javascripts/up/popup_spec.js.coffee +0 -508
  318. data/spec_app/spec/javascripts/up/protocol_spec.js.coffee +0 -39
  319. data/spec_app/spec/javascripts/up/proxy_spec.js.coffee +0 -1145
  320. data/spec_app/spec/javascripts/up/radio_spec.js.coffee +0 -212
  321. data/spec_app/spec/javascripts/up/rails_spec.js.coffee +0 -118
  322. data/spec_app/spec/javascripts/up/spec_spec.js.coffee +0 -9
  323. data/spec_app/spec/javascripts/up/syntax_spec.js.coffee +0 -304
  324. data/spec_app/spec/javascripts/up/toast_spec.js.coffee +0 -37
  325. data/spec_app/spec/javascripts/up/tooltip_spec.js.coffee +0 -163
  326. data/spec_app/spec/javascripts/up/util_spec.js.coffee +0 -1434
  327. data/spec_app/spec/javascripts/up/viewport_spec.js.coffee +0 -655
  328. data/spec_app/spec/spec_helper.rb +0 -62
  329. data/spec_app/test/controllers/.keep +0 -0
  330. data/spec_app/test/fixtures/.keep +0 -0
  331. data/spec_app/test/helpers/.keep +0 -0
  332. data/spec_app/test/integration/.keep +0 -0
  333. data/spec_app/test/mailers/.keep +0 -0
  334. data/spec_app/test/models/.keep +0 -0
  335. data/spec_app/test/test_helper.rb +0 -10
  336. data/spec_app/vendor/asset-libs/es6-promise-4.1.6/es6-promise.auto.js +0 -1159
  337. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/.bower.json +0 -43
  338. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/.gitignore +0 -6
  339. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/.npmignore +0 -10
  340. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/.pairs +0 -6
  341. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/.travis.yml +0 -56
  342. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/jasmine-ajax.js +0 -790
  343. data/spec_app/vendor/assets/.keep +0 -0
  344. data/unpoly-rails.gemspec +0 -24
@@ -0,0 +1,1213 @@
1
+ (function() {
2
+ var u,
3
+ slice = [].slice;
4
+
5
+ u = up.util;
6
+
7
+
8
+ /***
9
+ @module up.migrate
10
+ */
11
+
12
+ up.migrate = (function() {
13
+ var config, deprecated, fixEventType, fixEventTypes, fixKey, formerlyAsync, renamedEvent, renamedEvents, renamedPackage, renamedProperty, reset, warn, warnedMessages;
14
+ config = new up.Config(function() {
15
+ return {
16
+ logLevel: 'warn'
17
+ };
18
+ });
19
+ renamedProperty = function(object, oldKey, newKey) {
20
+ var warning;
21
+ warning = function() {
22
+ return warn('Property { %s } has been renamed to { %s } (found in %o)', oldKey, newKey, object);
23
+ };
24
+ return Object.defineProperty(object, oldKey, {
25
+ get: function() {
26
+ warning();
27
+ return this[newKey];
28
+ },
29
+ set: function(newValue) {
30
+ warning();
31
+ return this[newKey] = newValue;
32
+ }
33
+ });
34
+ };
35
+ fixKey = function(object, oldKey, newKey) {
36
+ if (u.isDefined(object[oldKey])) {
37
+ warn('Property { %s } has been renamed to { %s } (found in %o)', oldKey, newKey, object);
38
+ return u.renameKey(object, oldKey, newKey);
39
+ }
40
+ };
41
+ renamedEvents = {};
42
+ renamedEvent = function(oldType, newType) {
43
+ return renamedEvents[oldType] = newType;
44
+ };
45
+ fixEventType = function(eventType) {
46
+ var newEventType;
47
+ if (newEventType = renamedEvents[eventType]) {
48
+ warn("Event " + eventType + " has been renamed to " + newEventType);
49
+ return newEventType;
50
+ } else {
51
+ return eventType;
52
+ }
53
+ };
54
+ fixEventTypes = function(eventTypes) {
55
+ return u.uniq(u.map(eventTypes, fixEventType));
56
+ };
57
+ renamedPackage = function(oldName, newName) {
58
+ return Object.defineProperty(up, oldName, {
59
+ get: function() {
60
+ warn("up." + oldName + " has been renamed to up." + newName);
61
+ return up[newName];
62
+ }
63
+ });
64
+ };
65
+ warnedMessages = {};
66
+ warn = function() {
67
+ var args, formattedMessage, message, ref;
68
+ message = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];
69
+ formattedMessage = u.sprintf.apply(u, [message].concat(slice.call(args)));
70
+ if (!warnedMessages[formattedMessage]) {
71
+ warnedMessages[formattedMessage] = true;
72
+ return (ref = up.log)[config.logLevel].apply(ref, ['DEPRECATION', message].concat(slice.call(args)));
73
+ }
74
+ };
75
+ deprecated = function(deprecatedExpression, replacementExpression) {
76
+ return warn(deprecatedExpression + " has been deprecated. Use " + replacementExpression + " instead.");
77
+ };
78
+ formerlyAsync = function(label) {
79
+ var oldThen, promise;
80
+ promise = Promise.resolve();
81
+ oldThen = promise.then;
82
+ promise.then = function() {
83
+ warn(label + " is now a sync function");
84
+ return oldThen.apply(this, arguments);
85
+ };
86
+ return promise;
87
+ };
88
+ reset = function() {
89
+ return config.reset();
90
+ };
91
+ up.on('up:framework:reset', reset);
92
+ return {
93
+ deprecated: deprecated,
94
+ renamedPackage: renamedPackage,
95
+ renamedProperty: renamedProperty,
96
+ formerlyAsync: formerlyAsync,
97
+ renamedEvent: renamedEvent,
98
+ fixEventTypes: fixEventTypes,
99
+ fixKey: fixKey,
100
+ warn: warn,
101
+ loaded: true,
102
+ config: config
103
+ };
104
+ })();
105
+
106
+ }).call(this);
107
+
108
+ /***
109
+ @module up.element
110
+ */
111
+
112
+
113
+ /***
114
+ Returns the first descendant element matching the given selector.
115
+
116
+ @function up.element.first
117
+ @param {Element} [parent=document]
118
+ The parent element whose descendants to search.
119
+
120
+ If omitted, all elements in the `document` will be searched.
121
+ @param {string} selector
122
+ The CSS selector to match.
123
+ @return {Element|undefined|null}
124
+ The first element matching the selector.
125
+
126
+ Returns `null` or `undefined` if no element macthes.
127
+ @deprecated
128
+ Use `up.element.get()` instead.
129
+ */
130
+
131
+ (function() {
132
+ var slice = [].slice;
133
+
134
+ up.element.first = function() {
135
+ var args, ref;
136
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
137
+ up.migrate.deprecated('up.element.first()', 'up.element.get()');
138
+ return (ref = up.element).get.apply(ref, args);
139
+ };
140
+
141
+ up.element.createFromHtml = function() {
142
+ var args, ref;
143
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
144
+ up.migrate.deprecated('up.element.createFromHtml', 'up.element.createFromHTML');
145
+ return (ref = up.element).createFromHTML.apply(ref, args);
146
+ };
147
+
148
+ }).call(this);
149
+
150
+ /***
151
+ @module up.event
152
+ */
153
+
154
+ (function() {
155
+ var slice = [].slice;
156
+
157
+ up.migrate.renamedPackage('bus', 'event');
158
+
159
+
160
+ /***
161
+ [Emits an event](/up.emit) and returns whether no listener
162
+ has prevented the default action.
163
+
164
+ \#\#\# Example
165
+
166
+ ```javascript
167
+ if (up.event.nobodyPrevents('disk:erase')) {
168
+ Disk.erase()
169
+ })
170
+ ```
171
+
172
+ @function up.event.nobodyPrevents
173
+ @param {string} eventType
174
+ @param {Object} eventProps
175
+ @return {boolean}
176
+ whether no listener has prevented the default action
177
+ @deprecated
178
+ Use `!up.emit(type).defaultPrevented` instead.
179
+ */
180
+
181
+ up.event.nobodyPrevents = function() {
182
+ var args, event;
183
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
184
+ up.migrate.deprecated('up.event.nobodyPrevents(type)', '!up.emit(type).defaultPrevented');
185
+ event = up.emit.apply(up, args);
186
+ return !event.defaultPrevented;
187
+ };
188
+
189
+ }).call(this);
190
+
191
+ /***
192
+ @module up.feedback
193
+ */
194
+
195
+ (function() {
196
+ up.migrate.renamedPackage('navigation', 'feedback');
197
+
198
+ up.migrate.renamedProperty(up.feedback.config, 'navs', 'navSelectors');
199
+
200
+ }).call(this);
201
+
202
+ /***
203
+ @module up.form
204
+ */
205
+
206
+ (function() {
207
+ up.migrate.renamedProperty(up.form.config, 'fields', 'fieldSelectors');
208
+
209
+ up.migrate.renamedProperty(up.form.config, 'submitButtons', 'submitButtonSelectors');
210
+
211
+ }).call(this);
212
+ (function() {
213
+ var u,
214
+ slice = [].slice;
215
+
216
+ u = up.util;
217
+
218
+
219
+ /***
220
+ @module up.fragment
221
+ */
222
+
223
+ up.migrate.renamedPackage('flow', 'fragment');
224
+
225
+ up.migrate.renamedPackage('dom', 'fragment');
226
+
227
+ up.migrate.renamedProperty(up.fragment.config, 'fallbacks', 'mainTargets');
228
+
229
+ up.migrate.handleResponseDocOptions = function(docOptions) {
230
+ return up.migrate.fixKey(docOptions, 'html', 'document');
231
+ };
232
+
233
+
234
+ /***
235
+ Replaces elements on the current page with corresponding elements
236
+ from a new page fetched from the server.
237
+
238
+ @function up.replace
239
+ @param {string|Element|jQuery} target
240
+ The CSS selector to update. You can also pass a DOM element or jQuery element
241
+ here, in which case a selector will be inferred from the element's class and ID.
242
+ @param {string} url
243
+ The URL to fetch from the server.
244
+ @param {Object} [options]
245
+ See `options` for `up.render()`.
246
+ @return {Promise}
247
+ A promise that fulfills when the page has been updated.
248
+ @deprecated
249
+ Use `up.render()` or `up.navigate()` instead.
250
+ */
251
+
252
+ up.replace = function(target, url, options) {
253
+ up.migrate.deprecated('up.replace(target, url)', 'up.navigate(target, { url })');
254
+ return up.navigate(u.merge(options, {
255
+ target: target,
256
+ url: url
257
+ }));
258
+ };
259
+
260
+
261
+ /***
262
+ Updates a selector on the current page with the
263
+ same selector from the given HTML string.
264
+
265
+ \#\#\# Example
266
+
267
+ Let's say your current HTML looks like this:
268
+
269
+ <div class="one">old one</div>
270
+ <div class="two">old two</div>
271
+
272
+ We now replace the second `<div>`, using an HTML string
273
+ as the source:
274
+
275
+ html = '<div class="one">new one</div>' +
276
+ '<div class="two">new two</div>';
277
+
278
+ up.extract('.two', html)
279
+
280
+ Unpoly looks for the selector `.two` in the strings and updates its
281
+ contents in the current page. The current page now looks like this:
282
+
283
+ <div class="one">old one</div>
284
+ <div class="two">new two</div>
285
+
286
+ Note how only `.two` has changed. The update for `.one` was
287
+ discarded, since it didn't match the selector.
288
+
289
+ @function up.extract
290
+ @param {string|Element|jQuery} target
291
+ @param {string} html
292
+ @param {Object} [options]
293
+ See options for [`up.render()`](/up.render).
294
+ @return {Promise}
295
+ A promise that will be fulfilled when the selector was updated.
296
+ @deprecated
297
+ Use `up.render()` or `up.navigate()` instead.
298
+ */
299
+
300
+ up.extract = function(target, document, options) {
301
+ up.migrate.deprecated('up.extract(target, document)', 'up.navigate(target, { document })');
302
+ return up.navigate(u.merge(options, {
303
+ target: target,
304
+ document: document
305
+ }));
306
+ };
307
+
308
+
309
+ /***
310
+ Returns the first element matching the given selector, but
311
+ ignores elements that are being [destroyed](/up.destroy) or that are being
312
+ removed by a [transition](/up.morph).
313
+
314
+ Returns `undefined` if no element matches these conditions.
315
+
316
+ @function up.fragment.first
317
+ @param {Element|jQuery} [root=document]
318
+ The root element for the search. Only the root's children will be matched.
319
+
320
+ May be omitted to search through all elements in the `document`.
321
+ @param {string} selector
322
+ The selector to match
323
+ @param {string} [options.layer='current']
324
+ The the layer in which to find the element.
325
+
326
+ @see layer-option
327
+ @param {string|Element|jQuery} [options.origin]
328
+ An second element or selector that can be referenced as `:origin` in the first selector:
329
+ @return {Element|undefined}
330
+ The first element that is neither a ghost or being destroyed,
331
+ or `undefined` if no such element was found.
332
+ @deprecated
333
+ Use `up.fragment.get()` instead.
334
+ */
335
+
336
+ up.fragment.first = function() {
337
+ var args, ref;
338
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
339
+ up.migrate.deprecated('up.fragment.first()', 'up.fragment.get()');
340
+ return (ref = up.fragment).get.apply(ref, args);
341
+ };
342
+
343
+ up.first = up.fragment.first;
344
+
345
+ up.migrate.handleScrollOptions = function(options) {
346
+ if (u.isUndefined(options.scroll)) {
347
+ if (u.isString(options.reveal)) {
348
+ up.migrate.deprecated("Option { reveal: '" + options.reveal + "' }", "{ scroll: '" + options.reveal + "' }");
349
+ options.scroll = options.reveal;
350
+ } else if (options.reveal === true) {
351
+ up.migrate.deprecated('Option { reveal: true }', "{ scroll: 'target' }");
352
+ options.scroll = 'target';
353
+ } else if (options.reveal === false) {
354
+ up.migrate.deprecated('Option { reveal: false }', "{ scroll: false }");
355
+ options.scroll = false;
356
+ }
357
+ if (u.isDefined(options.resetScroll)) {
358
+ up.migrate.deprecated('Option { resetScroll: true }', "{ scroll: 'reset' }");
359
+ options.scroll = 'teset';
360
+ }
361
+ if (u.isDefined(options.restoreScroll)) {
362
+ up.migrate.deprecated('Option { restoreScroll: true }', "{ scroll: 'restore' }");
363
+ return options.scroll = 'restore';
364
+ }
365
+ }
366
+ };
367
+
368
+ up.migrate.handleHistoryOption = function(options) {
369
+ if (u.isString(options.history) && options.history !== 'auto') {
370
+ up.migrate.warn("Passing a URL as { history } option is deprecated. Pass it as { location } instead.");
371
+ options.location = options.history;
372
+ return options.history = 'auto';
373
+ }
374
+ };
375
+
376
+ up.migrate.handleRenderOptions = function(options) {
377
+ var i, len, prop, ref, results;
378
+ up.migrate.handleHistoryOption(options);
379
+ ref = ['target', 'origin'];
380
+ results = [];
381
+ for (i = 0, len = ref.length; i < len; i++) {
382
+ prop = ref[i];
383
+ if (u.isJQuery(options[prop])) {
384
+ up.migrate.warn('Passing a jQuery collection as { %s } is deprecated. Pass it as a native element instead.', prop);
385
+ results.push(options[prop] = up.element.get(options[prop]));
386
+ } else {
387
+ results.push(void 0);
388
+ }
389
+ }
390
+ return results;
391
+ };
392
+
393
+ }).call(this);
394
+
395
+ /***
396
+ @module up.history
397
+ */
398
+
399
+ (function() {
400
+ up.migrate.renamedProperty(up.history.config, 'popTargets', 'restoreTargets');
401
+
402
+
403
+ /***
404
+ Returns a normalized URL for the current history entry.
405
+
406
+ @function up.history.url
407
+ @return {string}
408
+ @deprecated Use the `up.history.location` property instead.
409
+ */
410
+
411
+ up.history.url = function() {
412
+ up.migrate.deprecated('up.history.url()', 'up.history.location');
413
+ return up.history.location;
414
+ };
415
+
416
+ up.migrate.renamedEvent('up:history:push', 'up:location:changed');
417
+
418
+ up.migrate.renamedEvent('up:history:pushed', 'up:location:changed');
419
+
420
+ up.migrate.renamedEvent('up:history:restore', 'up:location:changed');
421
+
422
+ up.migrate.renamedEvent('up:history:restored', 'up:location:changed');
423
+
424
+ up.migrate.renamedEvent('up:history:replaced', 'up:location:changed');
425
+
426
+ }).call(this);
427
+
428
+ /***
429
+ @module up.layer
430
+ */
431
+
432
+ (function() {
433
+ up.migrate.handleLayerOptions = function(options) {
434
+ var dimensionKey, i, len, ref;
435
+ up.migrate.fixKey(options, 'flavor', 'mode');
436
+ up.migrate.fixKey(options, 'closable', 'dismissable');
437
+ up.migrate.fixKey(options, 'closeLabel', 'dismissLabel');
438
+ ref = ['width', 'maxWidth', 'height'];
439
+ for (i = 0, len = ref.length; i < len; i++) {
440
+ dimensionKey = ref[i];
441
+ if (options[dimensionKey]) {
442
+ up.migrate.warn("Layer option { " + dimensionKey + " } has been removed. Use { size } or { class } instead.");
443
+ }
444
+ }
445
+ if (options.sticky) {
446
+ up.migrate.warn('Layer option { sticky } has been removed. Give links an [up-peel=false] attribute to prevent layer dismissal on click.');
447
+ }
448
+ if (options.template) {
449
+ up.migrate.warn('Layer option { template } has been removed. Use { class } or modify the layer HTML on up:layer:open.');
450
+ }
451
+ if (options.layer === 'page') {
452
+ up.migrate.warn("Option { layer: 'page' } has been renamed to { layer: 'root' }.");
453
+ options.layer = 'root';
454
+ }
455
+ if (options.layer === 'modal' || options.layer === 'popup') {
456
+ up.migrate.warn("Option { layer: '" + options.layer + "' } has been removed. Did you mean { layer: 'overlay' }?");
457
+ return options.layer = 'overlay';
458
+ }
459
+ };
460
+
461
+ up.migrate.handleTetherOptions = function(options) {
462
+ var align, position, ref;
463
+ ref = options.position.split('-'), position = ref[0], align = ref[1];
464
+ if (align) {
465
+ up.migrate.warn('The position value %o is deprecated. Use %o instead.', options.position, {
466
+ position: position,
467
+ align: align
468
+ });
469
+ options.position = position;
470
+ return options.align = align;
471
+ }
472
+ };
473
+
474
+
475
+ /***
476
+ When this element is clicked, closes a currently open overlay.
477
+
478
+ Does nothing if no overlay is currently open.
479
+
480
+ To make a link that closes the current overlay, but follows to
481
+ a fallback destination on the root layer:
482
+
483
+ <a href="/fallback" up-close>Okay</a>
484
+
485
+ @selector a[up-close]
486
+ @deprecated
487
+ Use `a[up-dismiss]` instead.
488
+ */
489
+
490
+ up.migrate.registerLayerCloser = function(layer) {
491
+ return layer.registerClickCloser('up-close', (function(_this) {
492
+ return function(value, closeOptions) {
493
+ up.migrate.deprecated('[up-close]', '[up-dismiss]');
494
+ return layer.dismiss(value, closeOptions);
495
+ };
496
+ })(this));
497
+ };
498
+
499
+ }).call(this);
500
+ (function() {
501
+ up.migrate.parseFollowOptions = function(parser) {
502
+ parser.string('flavor');
503
+ parser.string('width');
504
+ parser.string('height');
505
+ parser.boolean('closable');
506
+ parser.booleanOrString('reveal');
507
+ parser.boolean('resetScroll');
508
+ return parser.boolean('restoreScroll');
509
+ };
510
+
511
+ }).call(this);
512
+
513
+ /***
514
+ @module up.layer
515
+ */
516
+
517
+ (function() {
518
+ var FLAVORS_ERROR, u;
519
+
520
+ u = up.util;
521
+
522
+ FLAVORS_ERROR = new Error('up.modal.flavors has been removed without direct replacement. You may give new layers a { class } or modify layer elements on up:layer:open.');
523
+
524
+ up.modal = u.literal({
525
+
526
+ /***
527
+ Opens a modal overlay for the given URL.
528
+
529
+ @function up.modal.visit
530
+ @param {string} url
531
+ The URL to load.
532
+ @param {Object} options
533
+ See options for `up.render()`.
534
+ @deprecated
535
+ Use `up.layer.open({ url, mode: "modal" })` instead.
536
+ */
537
+ visit: function(url, options) {
538
+ if (options == null) {
539
+ options = {};
540
+ }
541
+ up.migrate.deprecated('up.modal.visit(url)', 'up.layer.open({ url, mode: "modal" })');
542
+ return up.layer.open(u.merge(options, {
543
+ url: url,
544
+ mode: 'modal'
545
+ }));
546
+ },
547
+
548
+ /***
549
+ Opens the given link's destination in a modal overlay.
550
+
551
+ @function up.modal.follow
552
+ @param {Element|jQuery|string} linkOrSelector
553
+ The link to follow.
554
+ @param {string} [options]
555
+ See options for `up.render()`.
556
+ @return {Promise}
557
+ A promise that will be fulfilled when the modal has been opened.
558
+ @deprecated
559
+ Use `up.follow(link, { layer: "modal" })` instead.
560
+ */
561
+ follow: function(link, options) {
562
+ if (options == null) {
563
+ options = {};
564
+ }
565
+ up.migrate.deprecated('up.modal.follow(link)', 'up.follow(link, { layer: "modal" })');
566
+ return up.follow(link, u.merge(options, {
567
+ layer: 'modal'
568
+ }));
569
+ },
570
+
571
+ /***
572
+ [Extracts](/up.extract) the given CSS selector from the given HTML string and
573
+ opens the results in a modal overlay.
574
+
575
+ @function up.modal.extract
576
+ @param {string} selector
577
+ The CSS selector to extract from the HTML.
578
+ @param {string} document
579
+ The HTML containing the modal content.
580
+ @param {Object} options
581
+ See options for [`up.modal.follow()`](/up.modal.follow).
582
+ @return {Promise}
583
+ A promise that will be fulfilled when the modal has been opened.
584
+ @deprecated
585
+ Use `up.layer.open({ document, mode: "modal" })` instead.
586
+ */
587
+ extract: function(target, html, options) {
588
+ if (options == null) {
589
+ options = {};
590
+ }
591
+ up.migrate.deprecated('up.modal.extract(target, document)', 'up.layer.open({ document, mode: "modal" })');
592
+ return up.layer.open(u.merge(options, {
593
+ target: target,
594
+ html: html,
595
+ layer: 'modal'
596
+ }));
597
+ },
598
+
599
+ /***
600
+ Closes a currently open overlay.
601
+
602
+ @function up.modal.close
603
+ @param {Object} options
604
+ @return {Promise}
605
+ @deprecated
606
+ Use `up.layer.dismiss()` instead.
607
+ */
608
+ close: function(options) {
609
+ if (options == null) {
610
+ options = {};
611
+ }
612
+ up.migrate.deprecated('up.modal.close()', 'up.layer.dismiss()');
613
+ up.layer.dismiss(null, options);
614
+ return up.migrate.formerlyAsync('up.layer.dismiss()');
615
+ },
616
+
617
+ /***
618
+ Returns the location URL of the fragment displayed in the current overlay.
619
+
620
+ @function up.modal.url
621
+ @return {string}
622
+ @deprecated
623
+ Use `up.layer.location` instead.
624
+ */
625
+ url: function() {
626
+ up.migrate.deprecated('up.modal.url()', 'up.layer.location');
627
+ return up.layer.location;
628
+ },
629
+
630
+ /***
631
+ Returns the location URL of the layer behind the current overlay.
632
+
633
+ @function up.modal.coveredUrl
634
+ @return {string}
635
+ @deprecated
636
+ Use `up.layer.parent.location` instead.
637
+ */
638
+ coveredUrl: function() {
639
+ var ref;
640
+ up.migrate.deprecated('up.modal.coveredUrl()', 'up.layer.parent.location');
641
+ return (ref = up.layer.parent) != null ? ref.location : void 0;
642
+ },
643
+
644
+ /***
645
+ Sets default options for future modal overlays.
646
+
647
+ @property up.modal.config
648
+ @deprecated
649
+ Use `up.layer.config.modal` instead.
650
+ */
651
+ get_config: function() {
652
+ up.migrate.deprecated('up.modal.config', 'up.layer.config.modal');
653
+ return up.layer.config.modal;
654
+ },
655
+
656
+ /***
657
+ Returns whether the given element or selector is contained
658
+ within the current layer.
659
+
660
+ @function up.modal.contains
661
+ @param {string} elementOrSelector
662
+ The element to test
663
+ @return {boolean}
664
+ @deprecated
665
+ Use `up.layer.contains()` instead.
666
+ */
667
+ contains: function(element) {
668
+ up.migrate.deprecated('up.modal.contains()', 'up.layer.contains()');
669
+ return up.layer.contains(element);
670
+ },
671
+
672
+ /***
673
+ Returns whether an overlay is currently open.
674
+
675
+ @function up.modal.isOpen
676
+ @return {boolean}
677
+ @deprecated
678
+ Use `up.layer.isOverlay()` instead.
679
+ */
680
+ isOpen: function() {
681
+ up.migrate.deprecated('up.modal.isOpen()', 'up.layer.isOverlay()');
682
+ return up.layer.isOverlay();
683
+ },
684
+ get_flavors: function() {
685
+ throw FLAVORS_ERROR;
686
+ },
687
+ flavor: function() {
688
+ throw FLAVORS_ERROR;
689
+ }
690
+ });
691
+
692
+ up.migrate.renamedEvent('up:modal:open', 'up:layer:open');
693
+
694
+ up.migrate.renamedEvent('up:modal:opened', 'up:layer:opened');
695
+
696
+ up.migrate.renamedEvent('up:modal:close', 'up:layer:dismiss');
697
+
698
+ up.migrate.renamedEvent('up:modal:closed', 'up:layer:dismissed');
699
+
700
+
701
+ /***
702
+ Clicking this link will load the destination via AJAX and open
703
+ the given selector in a modal overlay.
704
+
705
+ @selector a[up-modal]
706
+ @params-note
707
+ All attributes for `a[up-layer=new]` may also be used.
708
+ @param {string} up-modal
709
+ The CSS selector that will be extracted from the response and displayed in a modal dialog.
710
+ @deprecated
711
+ Use `a[up-layer=modal]` instead.
712
+ */
713
+
714
+ up.link.targetMacro('up-modal', {
715
+ 'up-layer': 'modal'
716
+ }, function() {
717
+ return up.migrate.deprecated('a[up-modal]', 'a[up-layer=modal]');
718
+ });
719
+
720
+
721
+ /***
722
+ Clicking this link will load the destination via AJAX and open
723
+ the given selector in a modal drawer that slides in from the edge of the screen.
724
+
725
+ @selector a[up-drawer]
726
+ @params-note
727
+ All attributes for `a[up-layer=new]` may also be used.
728
+ @param {string} up-drawer
729
+ The CSS selector that will be extracted from the response and displayed in a modal dialog.
730
+ @deprecated
731
+ Use `a[up-layer=drawer]` instead.
732
+ */
733
+
734
+ up.link.targetMacro('up-drawer', {
735
+ 'up-layer': 'drawer'
736
+ }, function() {
737
+ return up.migrate.deprecated('a[up-drawer]', 'a[up-layer=drawer]');
738
+ });
739
+
740
+ }).call(this);
741
+ (function() {
742
+ var preloadDelayMoved, u,
743
+ slice = [].slice;
744
+
745
+ u = up.util;
746
+
747
+
748
+ /***
749
+ @module up.network
750
+ */
751
+
752
+ up.migrate.renamedPackage('proxy', 'network');
753
+
754
+ up.migrate.renamedEvent('up:proxy:load', 'up:request:load');
755
+
756
+ up.migrate.renamedEvent('up:proxy:received', 'up:request:loaded');
757
+
758
+ up.migrate.renamedEvent('up:proxy:loaded', 'up:request:loaded');
759
+
760
+ up.migrate.renamedEvent('up:proxy:fatal', 'up:request:fatal');
761
+
762
+ up.migrate.renamedEvent('up:proxy:aborted', 'up:request:aborted');
763
+
764
+ up.migrate.renamedEvent('up:proxy:slow', 'up:request:late');
765
+
766
+ up.migrate.renamedEvent('up:proxy:recover', 'up:request:recover');
767
+
768
+ preloadDelayMoved = function() {
769
+ return up.migrate.deprecated('up.proxy.config.preloadDelay', 'up.link.config.preloadDelay');
770
+ };
771
+
772
+ Object.defineProperty(up.network.config, 'preloadDelay', {
773
+ get: function() {
774
+ preloadDelayMoved();
775
+ return up.link.config.preloadDelay;
776
+ },
777
+ set: function(value) {
778
+ preloadDelayMoved();
779
+ return up.link.config.preloadDelay = value;
780
+ }
781
+ });
782
+
783
+ up.migrate.renamedProperty(up.network.config, 'maxRequests', 'concurrency');
784
+
785
+ up.migrate.renamedProperty(up.network.config, 'slowDelay', 'badResponseTime');
786
+
787
+ up.migrate.handleNetworkPreloadArgs = function() {
788
+ var args, ref;
789
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
790
+ if (u.isElementish(args[0])) {
791
+ up.migrate.warn('up.proxy.preload(link) has been renamed to up.link.preload(link)');
792
+ return (ref = up.link).preload.apply(ref, args);
793
+ }
794
+ };
795
+
796
+ up.migrate.handleRequestOptions = function(options) {
797
+ return up.migrate.fixKey(options, 'data', 'params');
798
+ };
799
+
800
+
801
+ /***
802
+ Makes an AJAX request to the given URL and caches the response.
803
+
804
+ The function returns a promise that fulfills with the response text.
805
+
806
+ \#\#\# Example
807
+
808
+ up.request('/search', { params: { query: 'sunshine' } }).then(function(text) {
809
+ console.log('The response text is %o', text)
810
+ }).catch(function() {
811
+ console.error('The request failed')
812
+ })
813
+
814
+ @function up.ajax
815
+ @param {string} [url]
816
+ The URL for the request.
817
+
818
+ Instead of passing the URL as a string argument, you can also pass it as an `{ url }` option.
819
+ @param {Object} [options]
820
+ See options for `up.request()`.
821
+ @return {Promise<string>}
822
+ A promise for the response text.
823
+ @deprecated
824
+ Use `up.request()` instead.
825
+ */
826
+
827
+ up.ajax = function() {
828
+ var args, pickResponseText;
829
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
830
+ up.migrate.deprecated('up.ajax()', 'up.request()');
831
+ pickResponseText = function(response) {
832
+ return response.text;
833
+ };
834
+ return up.request.apply(up, args).then(pickResponseText);
835
+ };
836
+
837
+
838
+ /***
839
+ Removes all cache entries.
840
+
841
+ @function up.proxy.clear
842
+ @deprecated
843
+ Use `up.cache.clear()` instead.
844
+ */
845
+
846
+ up.network.clear = function() {
847
+ up.migrate.deprecated('up.proxy.clear()', 'up.cache.clear()');
848
+ return up.cache.clear();
849
+ };
850
+
851
+
852
+ /***
853
+ @class up.Request
854
+ */
855
+
856
+ up.Request.prototype.navigate = function() {
857
+ up.migrate.deprecated('up.Request#navigate()', 'up.Request#loadPage()');
858
+ return this.loadPage();
859
+ };
860
+
861
+
862
+ /***
863
+ @class up.Response
864
+ */
865
+
866
+
867
+ /***
868
+ Returns whether the server responded with a 2xx HTTP status.
869
+
870
+ @function up.Response#isSuccess
871
+ @return {boolean}
872
+ @deprecated
873
+ Use `up.Response#ok` instead.
874
+ */
875
+
876
+ up.Response.prototype.isSuccess = function() {
877
+ up.migrate.deprecated('up.Response#isSuccess()', 'up.Response#ok');
878
+ return this.ok;
879
+ };
880
+
881
+
882
+ /***
883
+ Returns whether the response was not [successful](/up.Response.prototype.ok).
884
+
885
+ @function up.Response#isError
886
+ @return {boolean}
887
+ @deprecated
888
+ Use `!up.Response#ok` instead.
889
+ */
890
+
891
+ up.Response.prototype.isError = function() {
892
+ up.migrate.deprecated('up.Response#isError()', '!up.Response#ok');
893
+ return !this.ok;
894
+ };
895
+
896
+ }).call(this);
897
+ (function() {
898
+ var e, u;
899
+
900
+ u = up.util;
901
+
902
+ e = up.element;
903
+
904
+ up.popup = u.literal({
905
+
906
+ /***
907
+ Attaches a popup overlay to the given element or selector.
908
+
909
+ @function up.popup.attach
910
+ @param {Element|jQuery|string} anchor
911
+ The element to which the popup will be attached.
912
+ @param {Object} [options]
913
+ See options for `up.render()`.
914
+ @return {Promise}
915
+ @deprecated
916
+ Use `up.layer.open({ origin, layer: 'popup' })` instead.
917
+ */
918
+ attach: function(origin, options) {
919
+ if (options == null) {
920
+ options = {};
921
+ }
922
+ origin = up.fragment.get(origin);
923
+ up.migrate.deprecated('up.popup.attach(origin)', "up.layer.open({ origin, layer: 'popup' })");
924
+ return up.layer.open(u.merge(options, {
925
+ origin: origin,
926
+ layer: 'popup'
927
+ }));
928
+ },
929
+
930
+ /***
931
+ Closes a currently open overlay.
932
+
933
+ @function up.popup.close
934
+ @param {Object} options
935
+ @return {Promise}
936
+ @deprecated
937
+ Use `up.layer.dismiss()` instead.
938
+ */
939
+ close: function(options) {
940
+ if (options == null) {
941
+ options = {};
942
+ }
943
+ up.migrate.deprecated('up.popup.close()', 'up.layer.dismiss()');
944
+ return up.layer.dismiss(null, options);
945
+ },
946
+
947
+ /***
948
+ Returns the location URL of the fragment displayed in the current overlay.
949
+
950
+ @function up.popup.url
951
+ @return {string}
952
+ @deprecated
953
+ Use `up.layer.location` instead.
954
+ */
955
+ url: function() {
956
+ up.migrate.deprecated('up.popup.url()', 'up.layer.location');
957
+ return up.layer.location;
958
+ },
959
+
960
+ /***
961
+ Returns the location URL of the layer behind the current overlay.
962
+
963
+ @function up.popup.coveredUrl
964
+ @return {string}
965
+ @deprecated
966
+ Use `up.layer.parent.location` instead.
967
+ */
968
+ coveredUrl: function() {
969
+ var ref;
970
+ up.migrate.deprecated('up.popup.coveredUrl()', 'up.layer.parent.location');
971
+ return (ref = up.layer.parent) != null ? ref.location : void 0;
972
+ },
973
+
974
+ /***
975
+ Sets default options for future popup overlays.
976
+
977
+ @property up.popup.config
978
+ @deprecated
979
+ Use `up.layer.config.popup` instead.
980
+ */
981
+ get_config: function() {
982
+ up.migrate.deprecated('up.popup.config', 'up.layer.config.popup');
983
+ return up.layer.config.popup;
984
+ },
985
+
986
+ /***
987
+ Returns whether the given element or selector is contained
988
+ within the current layer.
989
+
990
+ @function up.popup.contains
991
+ @param {string} elementOrSelector
992
+ The element to test
993
+ @return {boolean}
994
+ @deprecated
995
+ Use `up.layer.contains()` instead.
996
+ */
997
+ contains: function(element) {
998
+ up.migrate.deprecated('up.popup.contains()', 'up.layer.contains()');
999
+ return up.layer.contains(element);
1000
+ },
1001
+
1002
+ /***
1003
+ Returns whether an overlay is currently open.
1004
+
1005
+ @function up.popup.isOpen
1006
+ @return {boolean}
1007
+ @deprecated
1008
+ Use `up.layer.isOverlay()` instead.
1009
+ */
1010
+ isOpen: function() {
1011
+ up.migrate.deprecated('up.popup.isOpen()', 'up.layer.isOverlay()');
1012
+ return up.layer.isOverlay();
1013
+ },
1014
+ sync: function() {
1015
+ up.migrate.deprecated('up.popup.sync()', 'up.layer.sync()');
1016
+ return up.layer.sync();
1017
+ }
1018
+ });
1019
+
1020
+ up.migrate.renamedEvent('up:popup:open', 'up:layer:open');
1021
+
1022
+ up.migrate.renamedEvent('up:popup:opened', 'up:layer:opened');
1023
+
1024
+ up.migrate.renamedEvent('up:popup:close', 'up:layer:dismiss');
1025
+
1026
+ up.migrate.renamedEvent('up:popup:closed', 'up:layer:dismissed');
1027
+
1028
+ up.link.targetMacro('up-popup', {
1029
+ 'up-layer': 'popup'
1030
+ }, function() {
1031
+ return up.migrate.deprecated('[up-popup]', '[up-layer=popup]');
1032
+ });
1033
+
1034
+ }).call(this);
1035
+
1036
+ /***
1037
+ @module up.radio
1038
+ */
1039
+
1040
+ (function() {
1041
+ up.migrate.renamedProperty(up.radio.config, 'hungry', 'hungrySelectors');
1042
+
1043
+ }).call(this);
1044
+
1045
+ /***
1046
+ Tooltips
1047
+ ========
1048
+
1049
+ Unpoly used to come with a basic tooltip implementation.
1050
+ This feature is now deprecated.
1051
+
1052
+ @module up.tooltip
1053
+ */
1054
+
1055
+ (function() {
1056
+ up.tooltip = (function() {
1057
+ return up.macro('[up-tooltip]', function(opener) {
1058
+ up.migrate.warn('[up-tooltip] has been deprecated. A [title] was set instead.');
1059
+ return up.element.setMissingAttr(opener, 'title', opener.getAttribute('up-tooltip'));
1060
+ });
1061
+ })();
1062
+
1063
+ }).call(this);
1064
+
1065
+ /***
1066
+ @module up.util
1067
+ */
1068
+
1069
+
1070
+ /***
1071
+ Returns a copy of the given object that only contains
1072
+ the given keys.
1073
+
1074
+ @function up.util.only
1075
+ @param {Object} object
1076
+ @param {Array} ...keys
1077
+ @deprecated
1078
+ Use `up.util.pick()` instead.
1079
+ */
1080
+
1081
+ (function() {
1082
+ var slice = [].slice;
1083
+
1084
+ up.util.only = function() {
1085
+ var keys, object;
1086
+ object = arguments[0], keys = 2 <= arguments.length ? slice.call(arguments, 1) : [];
1087
+ up.migrate.deprecated('up.util.only(object, ...keys)', 'up.util.pick(object, keys)');
1088
+ return up.util.pick(object, keys);
1089
+ };
1090
+
1091
+
1092
+ /***
1093
+ Returns a copy of the given object that contains all except
1094
+ the given keys.
1095
+
1096
+ @function up.util.except
1097
+ @param {Object} object
1098
+ @param {Array} ...keys
1099
+ @deprecated
1100
+ Use `up.util.omit(object, keys)` (with an array argument) instead of `up.util.object(...keys)` (with rest arguments).
1101
+ */
1102
+
1103
+ up.util.except = function() {
1104
+ var keys, object;
1105
+ object = arguments[0], keys = 2 <= arguments.length ? slice.call(arguments, 1) : [];
1106
+ up.migrate.deprecated('up.util.except(object, ...keys)', 'up.util.omit(object, keys)');
1107
+ return up.util.omit(object, keys);
1108
+ };
1109
+
1110
+ up.util.parseUrl = function() {
1111
+ var args, ref;
1112
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
1113
+ up.migrate.warn('up.util.parseUrl() has been renamed to up.util.parseURL()');
1114
+ return (ref = up.util).parseURL.apply(ref, args);
1115
+ };
1116
+
1117
+ up.util.any = function() {
1118
+ var args;
1119
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
1120
+ up.migrate.warn('up.util.any() has been renamed to up.util.some()');
1121
+ return some.apply(null, args);
1122
+ };
1123
+
1124
+ up.util.all = function() {
1125
+ var args, ref;
1126
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
1127
+ up.migrate.warn('up.util.all() has been renamed to up.util.every()');
1128
+ return (ref = up.util).every.apply(ref, args);
1129
+ };
1130
+
1131
+ up.util.detect = function() {
1132
+ var args, ref;
1133
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
1134
+ up.migrate.warn('up.util.detect() has been renamed to up.util.find()');
1135
+ return (ref = up.util).find.apply(ref, args);
1136
+ };
1137
+
1138
+ up.util.select = function() {
1139
+ var args, ref;
1140
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
1141
+ up.migrate.warn('up.util.select() has been renamed to up.util.filter()');
1142
+ return (ref = up.util).filter.apply(ref, args);
1143
+ };
1144
+
1145
+ up.util.setTimer = function() {
1146
+ var args, ref;
1147
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
1148
+ up.migrate.warn('up.util.setTimer() has been renamed to up.util.timer()');
1149
+ return (ref = up.util).timer.apply(ref, args);
1150
+ };
1151
+
1152
+ up.util.escapeHtml = function() {
1153
+ var args, ref;
1154
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
1155
+ up.migrate.deprecated('up.util.escapeHtml', 'up.util.escapeHTML');
1156
+ return (ref = up.util).escapeHTML.apply(ref, args);
1157
+ };
1158
+
1159
+ up.util.selectorForElement = function() {
1160
+ var args, ref;
1161
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
1162
+ up.migrate.warn('up.util.selectorForElement() has been renamed to up.fragment.toTarget()');
1163
+ return (ref = up.fragment).toTarget.apply(ref, args);
1164
+ };
1165
+
1166
+ up.util.nextFrame = function() {
1167
+ var args, ref;
1168
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
1169
+ up.migrate.warn('up.util.nextFrame() has been renamed to up.util.task()');
1170
+ return (ref = up.util).task.apply(ref, args);
1171
+ };
1172
+
1173
+ }).call(this);
1174
+
1175
+ /***
1176
+ @module up.viewport
1177
+ */
1178
+
1179
+ (function() {
1180
+ var slice = [].slice;
1181
+
1182
+ up.migrate.renamedPackage('layout', 'viewport');
1183
+
1184
+ up.migrate.renamedProperty(up.viewport.config, 'viewports', 'viewportSelectors');
1185
+
1186
+ up.migrate.renamedProperty(up.viewport.config, 'snap', 'revealSnap');
1187
+
1188
+
1189
+ /***
1190
+ Returns the scrolling container for the given element.
1191
+
1192
+ Returns the [document's scrolling element](/up.viewport.root)
1193
+ if no closer viewport exists.
1194
+
1195
+ @function up.viewport.get
1196
+ @param {string|Element|jQuery} target
1197
+ @return {Element}
1198
+ @deprecated
1199
+ Use `up.viewport.get()` instead.
1200
+ */
1201
+
1202
+ up.viewport.closest = function() {
1203
+ var args, ref;
1204
+ args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
1205
+ up.migrate.deprecated('up.viewport.closest()', 'up.viewport.get()');
1206
+ return (ref = up.viewport).get.apply(ref, args);
1207
+ };
1208
+
1209
+ }).call(this);
1210
+ (function() {
1211
+
1212
+
1213
+ }).call(this);