upjs-rails 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/dist/up.js +71 -23
  3. data/dist/up.min.js +1 -1
  4. data/lib/assets/javascripts/up/form.js.coffee +50 -16
  5. data/lib/assets/javascripts/up/modal.js.coffee +22 -8
  6. data/lib/assets/javascripts/up/proxy.js.coffee +1 -1
  7. data/lib/upjs/rails/version.rb +1 -1
  8. metadata +3 -40
  9. data/doc/theme/Gruntfile.js +0 -25
  10. data/doc/theme/README.md +0 -29
  11. data/doc/theme/assets/css/external-small.png +0 -0
  12. data/doc/theme/assets/css/logo.png +0 -0
  13. data/doc/theme/assets/css/main.css +0 -859
  14. data/doc/theme/assets/css/main.less +0 -897
  15. data/doc/theme/assets/favicon.png +0 -0
  16. data/doc/theme/assets/img/bgscreen.png +0 -0
  17. data/doc/theme/assets/img/spinner.gif +0 -0
  18. data/doc/theme/assets/index.html +0 -10
  19. data/doc/theme/assets/js/api-filter.js +0 -52
  20. data/doc/theme/assets/js/api-list.js +0 -251
  21. data/doc/theme/assets/js/api-search.js +0 -98
  22. data/doc/theme/assets/js/apidocs.js +0 -369
  23. data/doc/theme/assets/js/yui-prettify.js +0 -17
  24. data/doc/theme/assets/vendor/prettify/CHANGES.html +0 -130
  25. data/doc/theme/assets/vendor/prettify/COPYING +0 -202
  26. data/doc/theme/assets/vendor/prettify/README.html +0 -203
  27. data/doc/theme/assets/vendor/prettify/prettify-min.css +0 -1
  28. data/doc/theme/assets/vendor/prettify/prettify-min.js +0 -1
  29. data/doc/theme/layouts/main.handlebars +0 -54
  30. data/doc/theme/layouts/xhr.handlebars +0 -7
  31. data/doc/theme/package.json +0 -53
  32. data/doc/theme/partials/attrs.handlebars +0 -141
  33. data/doc/theme/partials/classes.handlebars +0 -210
  34. data/doc/theme/partials/events.handlebars +0 -145
  35. data/doc/theme/partials/exampleurl.handlebars +0 -8
  36. data/doc/theme/partials/files.handlebars +0 -7
  37. data/doc/theme/partials/index.handlebars +0 -18
  38. data/doc/theme/partials/method.handlebars +0 -201
  39. data/doc/theme/partials/module.handlebars +0 -92
  40. data/doc/theme/partials/options.handlebars +0 -23
  41. data/doc/theme/partials/props.handlebars +0 -128
  42. data/doc/theme/partials/sidebar.handlebars +0 -27
  43. data/doc/theme/theme.json +0 -4
  44. data/doc/yuidoc-helpers.js +0 -0
  45. data/doc/yuidoc.json +0 -15
  46. /data/{doc/theme/api/.keep → design/rename.txt} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c2ccc0f23f73c4e313d6da1023c151416f390e65
4
- data.tar.gz: 5af51cde5c82b8c0166560269f9a85a151b29ee8
3
+ metadata.gz: acd6c7ba7dee5f9bdd4360379ab63b53b1163dd5
4
+ data.tar.gz: d8c8b8aa8681ef93a4fb0d9aab00ea185bb042a4
5
5
  SHA512:
6
- metadata.gz: 1d68bb1397e550830d90f5163f0cdaecedb479c3d311174b45062b3ef2b5054eff94ef6d049d82618f020ddfea6f96156a7ef1b3404930ecbd3ed768355839f3
7
- data.tar.gz: 4d389eb3cbe0ab518058375247df955f4abf32584480117c15c765aaefc348b6658aadfafafd60a85c07f8470f358fccf1b49965713d70dd2d9f8a3eca10e9df
6
+ metadata.gz: 194e5bae707530f8180988b884b0dedcf5cd6d96b238a12c061c3163044dbef8ba2dce5ca25936fbd3ca956fb402819ed131df6b3cde565589b7f94f35bb45ba
7
+ data.tar.gz: fde01ee35511b33d5d2e356335539f237b1457da006cc052820ed35215c1190b35c7ab6d2bee994f44ad8c9a6db681230f52e8b9128104bf6d7585d1f34e0453
data/dist/up.js CHANGED
@@ -2697,7 +2697,7 @@ response will already be cached when the user performs the click.
2697
2697
  if (!isIdempotent(request) && !forceCache) {
2698
2698
  clear();
2699
2699
  promise = u.ajax(request);
2700
- } else if (promise = get(request) && !ignoreCache) {
2700
+ } else if ((promise = get(request)) && !ignoreCache) {
2701
2701
  promise;
2702
2702
  } else {
2703
2703
  promise = u.ajax(request);
@@ -3225,10 +3225,10 @@ We need to work on this page:
3225
3225
  Defaults to the form's `up-method`, `data-method` or `method` attribute, or to `'post'`
3226
3226
  if none of these attributes are given.
3227
3227
  @param {String} [options.target]
3228
- The selector to update when the form submission succeeds.
3228
+ The selector to update when the form submission succeeds (server responds with status 200).
3229
3229
  Defaults to the form's `up-target` attribute, or to `'body'`.
3230
3230
  @param {String} [options.failTarget]
3231
- The selector to update when the form submission succeeds.
3231
+ The selector to update when the form submission fails (server responds with non-200 status).
3232
3232
  Defaults to the form's `up-fail-target` attribute, or to an auto-generated
3233
3233
  selector that matches the form itself.
3234
3234
  @param {Boolean|String} [options.history=true]
@@ -3306,15 +3306,37 @@ We need to work on this page:
3306
3306
  };
3307
3307
 
3308
3308
  /**
3309
- Observes an input field and executes code when its value changes.
3309
+ Observes a form field and runs a callback when its value changes.
3310
+ This is useful for observing text fields while the user is typing.
3311
+
3312
+ For instance, the following would submit the form whenever the
3313
+ text field value changes:
3310
3314
 
3311
3315
  up.observe('input', { change: function(value, $input) {
3312
3316
  up.submit($input)
3313
3317
  } });
3314
3318
 
3315
- This is useful for observing text fields while the user is typing,
3316
- since browsers will only fire a `change` event once the user
3317
- blurs the text field.
3319
+ \#\#\#\# Preventing concurrency
3320
+
3321
+ Firing asynchronous code after a form field can cause
3322
+ [concurrency issues](https://makandracards.com/makandra/961-concurrency-issues-with-find-as-you-type-boxes).
3323
+
3324
+ To mitigate this, `up.observe` will try to never run a callback
3325
+ before the previous callback has completed.
3326
+ To take advantage of this, your callback code must return a promise.
3327
+ Note that all asynchronous Up.js functions return promises.
3328
+
3329
+ \#\#\#\# Throttling
3330
+
3331
+ If you are concerned about fast typists causing too much
3332
+ load on your server, you can use a `delay` option to wait before
3333
+ executing the callback:
3334
+
3335
+ up.observe('input', {
3336
+ delay: 100,
3337
+ change: function(value, $input) { up.submit($input) }
3338
+ });
3339
+
3318
3340
 
3319
3341
  @method up.observe
3320
3342
  @param {Element|jQuery|String} fieldOrSelector
@@ -3401,14 +3423,15 @@ We need to work on this page:
3401
3423
  @method form[up-target]
3402
3424
  @ujs
3403
3425
  @param {String} up-target
3426
+ The selector to replace if the form submission is successful (200 status code).
3404
3427
  @param {String} [up-fail-target]
3405
3428
  @param {String} [up-transition]
3406
3429
  @param {String} [up-fail-transition]
3407
3430
  @param {String} [up-history]
3408
3431
  @param {String} [up-method]
3409
- The HTTP method to be used to submit the form
3410
- (`get`, `post`, `put`, `delete`, `patch`).
3411
- Alternately you can use an attribute `data-method` (Rails UJS)
3432
+ The HTTP method to be used to submit the form (`get`, `post`, `put`, `delete`, `patch`).
3433
+ Alternately you can use an attribute `data-method`
3434
+ ([Rails UJS](https://github.com/rails/jquery-ujs/wiki/Unobtrusive-scripting-support-for-jQuery))
3412
3435
  or `method` (vanilla HTML) for the same purpose.
3413
3436
  */
3414
3437
  up.on('submit', 'form[up-target]', function(event, $form) {
@@ -3417,18 +3440,29 @@ We need to work on this page:
3417
3440
  });
3418
3441
 
3419
3442
  /**
3420
- Observes this form control by periodically polling its value.
3421
- Executes the given Javascript if the value changes:
3443
+ Observes this form field and runs the given script
3444
+ when its value changes. This is useful for observing text fields
3445
+ while the user is typing.
3446
+
3447
+ For instance, the following would submit the form whenever the
3448
+ text field value changes:
3422
3449
 
3423
3450
  <form method="GET" action="/search">
3424
3451
  <input type="query" up-observe="up.form.submit(this)">
3425
3452
  </form>
3426
3453
 
3427
- This is useful for observing text fields while the user is typing,
3428
- since browsers will only fire a `change` event once the user
3429
- blurs the text field.
3454
+ The script given with `up-observe` runs with the following context:
3455
+
3456
+ | Name | Type | Description |
3457
+ | -------- | --------- | ------------------------------------- |
3458
+ | `value` | `String` | The current value of the field |
3459
+ | `this` | `Element` | The form field |
3460
+ | `$field` | `jQuery` | The form field as a jQuery collection |
3461
+
3462
+ See up.observe.
3430
3463
 
3431
3464
  @method input[up-observe]
3465
+ The code to run when the field's value changes.
3432
3466
  @ujs
3433
3467
  @param {String} up-observe
3434
3468
  */
@@ -3771,10 +3805,10 @@ For small popup overlays ("dropdowns") see [up.popup](/up.popup) instead.
3771
3805
 
3772
3806
  @method up.modal.defaults
3773
3807
  @param {Number} [options.width='auto']
3774
- The width of the dialog.
3808
+ The width of the dialog in pixels.
3775
3809
  Defaults to `'auto'`, meaning that the dialog will grow to fit its contents.
3776
3810
  @param {Number} [options.height='auto']
3777
- The height of the dialog.
3811
+ The height of the dialog in pixels.
3778
3812
  Defaults to `'auto'`, meaning that the dialog will grow to fit its contents.
3779
3813
  @param {String|Function(config)} [options.template]
3780
3814
  A string containing the HTML structure of the modal.
@@ -3855,17 +3889,31 @@ For small popup overlays ("dropdowns") see [up.popup](/up.popup) instead.
3855
3889
 
3856
3890
  You can also open a URL directly like this:
3857
3891
 
3858
- up.modal.open({ url: '/foo' })
3892
+ up.modal.open({ url: '/foo', target: '.list' })
3893
+
3894
+ This will request `/foo`, extract the `.list` selector from the response
3895
+ and open the selected container in a modal dialog.
3859
3896
 
3860
3897
  @method up.modal.open
3861
- @param {Element|jQuery|String} elementOrSelector
3898
+ @param {Element|jQuery|String} [elementOrSelector]
3899
+ The link to follow.
3900
+ Can be omitted if you give `options.url` instead.
3862
3901
  @param {String} [options.url]
3902
+ The URL to open.
3903
+ Can be omitted if you give `elementOrSelector` instead.
3904
+ @param {String} [options.target]
3905
+ The selector to extract from the response and open in a modal dialog.
3863
3906
  @param {Number} [options.width]
3907
+ The width of the dialog in pixels.
3908
+ By [default](#up.modal.defaults) the dialog will grow to fit its contents.
3864
3909
  @param {Number} [options.height]
3910
+ The width of the dialog in pixels.
3911
+ By [default](#up.modal.defaults) the dialog will grow to fit its contents.
3865
3912
  @param {Boolean} [options.sticky=false]
3866
3913
  If set to `true`, the modal remains
3867
3914
  open even if the page changes in the background.
3868
3915
  @param {Object} [options.history=true]
3916
+ Whether to add a browser history entry for the modal's source URL.
3869
3917
  @param {String} [options.animation]
3870
3918
  The animation to use when opening the modal.
3871
3919
  @param {Number} [options.duration]
@@ -3907,9 +3955,8 @@ For small popup overlays ("dropdowns") see [up.popup](/up.popup) instead.
3907
3955
  };
3908
3956
 
3909
3957
  /**
3910
- Returns the source URL for the fragment displayed
3911
- in the current modal overlay, or `undefined` if no
3912
- modal is open.
3958
+ Returns the source URL for the fragment displayed in the current modal overlay,
3959
+ or `undefined` if no modal is currently open.
3913
3960
 
3914
3961
  @method up.modal.source
3915
3962
  @return {String}
@@ -3960,7 +4007,7 @@ For small popup overlays ("dropdowns") see [up.popup](/up.popup) instead.
3960
4007
 
3961
4008
  Clicking would request the path `/blog` and select `.blog-list` from
3962
4009
  the HTML response. Up.js will dim the page with an overlay
3963
- and place the matching `.blog_list` tag will be placed in
4010
+ and place the matching `.blog-list` tag will be placed in
3964
4011
  a modal dialog.
3965
4012
 
3966
4013
 
@@ -4040,6 +4087,7 @@ For small popup overlays ("dropdowns") see [up.popup](/up.popup) instead.
4040
4087
 
4041
4088
  /**
4042
4089
  When this element is clicked, closes a currently open dialog.
4090
+ Does nothing if no modal is currently open.
4043
4091
 
4044
4092
  @method [up-close]
4045
4093
  @ujs
data/dist/up.min.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(){window.up={}}).call(this),function(){var t=[].slice;up.util=function(){var n,e,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g,y,b,w,k,C,T,x,S,E,A,P,D,F,U,O,j,z,M,N,q,H,I,W,G,L,X,J,R,V,B,_,K,Q,Z,Y,tn,nn,en,rn,on,un,an,sn,ln,cn,pn,fn,dn,mn,hn,vn,gn,yn,bn;return x=function(t,n){return n=n||{},n.url=t,o(n)},o=function(t){return t.selector&&(t.headers={"X-Up-Selector":t.selector}),$.ajax(t)},W=function(t,n){return(""===n||"80"===n)&&"http:"===t||"443"===n&&"https:"===t},tn=function(t,n){var e,r,o;return e=null,G(t)?(e=$("<a>").attr({href:t}).get(0),A(e.hostname)&&(e.href=e.href)):e=bn(t),r=e.protocol+"//"+e.hostname,W(e.protocol,e.port)||(r+=":"+e.port),o=e.pathname,"/"!==o[0]&&(o="/"+o),(null!=n?n.stripTrailingSlash:void 0)===!0&&(o=o.replace(/\/$/,"")),r+=o,(null!=n?n.hash:void 0)===!0&&(r+=e.hash),(null!=n?n.search:void 0)!==!1&&(r+=e.search),r},Y=function(t){return t?t.toUpperCase():"GET"},n=function(t){var n,e,r,o,u,i,a,s,l,c,p,f,d,m,h,v;for(p=t.split(/[ >]/),r=null,c=d=0,h=p.length;h>d;c=++d){for(i=p[c],u=i.match(/(^|\.|\#)[A-Za-z0-9\-_]+/g),f="div",o=[],l=null,m=0,v=u.length;v>m;m++)switch(a=u[m],a[0]){case".":o.push(a.substr(1));break;case"#":l=a.substr(1);break;default:f=a}s="<"+f,o.length&&(s+=' class="'+o.join(" ")+'"'),l&&(s+=' id="'+l+'"'),s+=">",n=$(s),e&&n.appendTo(e),0===c&&(r=n),e=n}return r},p=function(t,n){var e;return e=document.createElement(t),H(n)&&(e.innerHTML=n),e},h=function(){var n,e,o,u,i,a;if(n=1<=arguments.length?t.call(arguments,0):[],n=gn(n),o=n.shift(),o="[UP] "+o,u=(null!=(a=o.match(r))?a.length:void 0)||0,U(V(n))&&u<n.length&&(e=n.pop()),i=console.debug.apply(console,[o].concat(t.call(n))),e){console.groupCollapsed();try{i=e()}finally{console.groupEnd()}}return i},y=function(){var n,e,r;throw e=1<=arguments.length?t.call(arguments,0):[],e[0]="[UP] "+e[0],console.error.apply(console,e),r=hn(e),n=an($(".up-error"))||$('<div class="up-error"></div>').prependTo("body"),n.addClass("up-error"),n.text(r),r},r=/\%[odisf]/g,hn=function(t){var n,e,o;return o=t[0],n=0,e=30,o.replace(r,function(){var r,o;return n+=1,r=t[n],o=typeof r,"string"===o?(r=r.replace(/\s+/g," "),r.length>e&&(r=r.substr(0,e)+"\u2026"),'"'+r+'"'):"number"===o?r.toString():"("+o+")"})},d=function(t){var n,e,r,o,u,i,a;for(h("Creating selector from element %o",t),e=(n=t.attr("class"))?n.split(" "):[],r=t.attr("id"),u=t.prop("tagName").toLowerCase(),r&&(u+="#"+r),i=0,a=e.length;a>i;i++)o=e[i],u+="."+o;return u},f=function(t){var n,e,r,o,u,i,a,s,l,c,f,d;return l=function(t){return"<"+t+"(?: [^>]*)?>"},i=function(t){return"</"+t+">"},n="(?:.|\\n)*?",u=function(t){return"("+t+")"},d=new RegExp(l("head")+n+l("title")+u(n)+i("title")+n+i("body"),"i"),o=new RegExp(l("body")+u(n)+i("body"),"i"),(r=t.match(o))?(s=document.createElement("html"),e=p("body",r[1]),s.appendChild(e),(f=t.match(d))&&(a=p("head"),s.appendChild(a),c=p("title",f[1]),a.appendChild(c)),s):p("div",t)},w=$.extend,yn=$.trim,R=Object.keys||function(t){var n,e,r,o;for(e=[],r=0,o=t.length;o>r;r++)n=t[r],t.hasOwnProperty(n)&&e.push(n);return e},g=function(t,n){var e,r,o,u,i;for(i=[],e=o=0,u=t.length;u>o;e=++o)r=t[e],i.push(n(r,e));return i},N=function(t){return null===t},L=function(t){return void 0===t},D=function(t){return!L(t)},M=function(t){return L(t)||N(t)},O=function(t){return!M(t)},A=function(t){return M(t)||q(t)&&0===R(t).length||0===t.length},an=function(t,n){return null==n&&(n=H),n(t)?t:null},H=function(t){return!A(t)},U=function(t){return"function"==typeof t},G=function(t){return"string"==typeof t},j=function(t){return"object"==typeof t&&!!t},q=function(t){return j(t)||"function"==typeof t},F=function(t){return!(!t||1!==t.nodeType)},z=function(t){return t instanceof jQuery},I=function(t){return q(t)&&U(t.then)},P=function(t){return I(t)&&U(t.resolve)},S=function(t){return O(t)?t:void 0},E=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},gn=function(t){return Array.prototype.slice.call(t)},l=function(t){return E(t)?t.slice():w({},t)},bn=function(t){return z(t)?t.get(0):t},K=function(t,n){return w(l(t),n)},on=function(t,n){var e,r,o,u;if(o=t?l(t):{},n)for(r in n)e=n[r],u=o[r],O(u)?q(e)&&q(u)&&(o[r]=on(u,e)):o[r]=e;return o},rn=function(){var n,e,r,o,u,i;for(e=1<=arguments.length?t.call(arguments,0):[],r=null,u=0,i=e.length;i>u;u++)if(n=e[u],o=n,U(o)&&(o=o()),O(o)){r=o;break}return r},v=function(t,n){var e,r,o,u;for(r=null,o=0,u=t.length;u>o;o++)if(e=t[o],n(e)){r=e;break}return r},fn=function(t,n){var e;return e=[],g(t,function(t){return n(t)?e.push(t):void 0}),e},sn=function(){var n,e,r,o;return n=arguments[0],r=2<=arguments.length?t.call(arguments,1):[],o=function(){var t,o,u;for(u=[],t=0,o=r.length;o>t;t++)e=r[t],u.push(n.attr(e));return u}(),v(o,H)},Z=function(t){return setTimeout(t,0)},V=function(t){return t[t.length-1]},a=function(){var t;return t=document.documentElement,{width:t.clientWidth,height:t.clientHeight}},vn=function(t,n,e){var r,o;return o=t.css(R(n)),t.css(n),r=function(){return t.css(o)},e?(e(),r()):r},T=function(t){var n,e;return e=t.css(["transform","-webkit-transform"]),A(e)?(n=function(){return t.css(e)},t.css({transform:"translateZ(0)","-webkit-transform":"translateZ(0)"})):n=function(){},n},m=function(t,n,r){var o,u,i,a,s,l;return o=$(t),up.browser.canCssAnimation()?(r=on(r,{duration:300,delay:0,easing:"ease"}),u=$.Deferred(),a={"transition-property":R(n).join(", "),"transition-duration":r.duration+"ms","transition-delay":r.delay+"ms","transition-timing-function":r.easing},s=T(o),l=vn(o,a),o.css(n),u.then(s),u.then(l),o.data(e,u),u.then(function(){return o.removeData(e)}),i=setTimeout(function(){return u.resolve()},r.duration+r.delay),u.then(function(){return clearTimeout(i)}),u):(o.css(n),pn())},e="up-animation-promise",C=function(t){return $(t).each(function(){var t;return(t=$(this).data(e))?t.resolve():void 0})},_=function(t,n){var e,r,o;return r=(null!=n?n.relative:void 0)?t.position():t.offset(),e={left:r.left,top:r.top},(null!=n?n.inner:void 0)?(e.width=t.width(),e.height=t.height()):(e.width=t.outerWidth(),e.height=t.outerHeight()),(null!=n?n.full:void 0)&&(o=a(),e.right=o.width-(e.left+e.width),e.bottom=o.height-(e.top+e.height)),e},c=function(t,n){var e,r,o,u,i;for(u=t.get(0).attributes,i=[],r=0,o=u.length;o>r;r++)e=u[r],i.push(e.specified?n.attr(e.name,e.value):void 0);return i},un=function(t){var n,e;return e=_(t,{relative:!0,inner:!0}),n=t.clone(),n.find("script").remove(),n.css({right:"",bottom:"",position:"absolute"}),n.css(e),n.addClass("up-ghost"),n.insertBefore(t)},k=function(t,n){return t.find(n).addBack(n)},b=function(t){return 27===t.keyCode},s=function(t,n){return t.indexOf(n)>=0},i=function(t){return"true"===String(t)},u=function(t){return"false"===String(t)},B=function(t){return t.getResponseHeader("X-Up-Location")},Q=function(t){return t.getResponseHeader("X-Up-Method")},en=function(){var n,e,r,o,u,i;for(o=arguments[0],r=2<=arguments.length?t.call(arguments,1):[],n={},u=0,i=r.length;i>u;u++)e=r[u],o.hasOwnProperty(e)&&(n[e]=o[e]);return n},X=function(t){return!(t.metaKey||t.shiftKey||t.ctrlKey)},J=function(t){return 0===t.button&&X(t)},cn=function(){var t;return t=$.Deferred(),t.resolve(),t},pn=function(){return cn().promise()},nn=function(){return{is:function(){return!1},attr:function(){},find:function(){return[]}}},ln=function(){var n,e;return n=1<=arguments.length?t.call(arguments,0):[],e=$.when.apply($,n),e.resolve=function(){return g(n,function(t){return"function"==typeof t.resolve?t.resolve():void 0})},e},dn=function(t,n){var e,r,o;o=[];for(e in n)r=n[e],o.push(M(t.attr(e))?t.attr(e,r):void 0);return o},mn=function(t){var n,e,r,o,u,i,a,s;for(u={},n=function(t){return u[r(t)]},e=function(t){return v(t,n)},o=function(t){return u[r(t)]=!0},r=function(t){return"_"+t},a=0,s=t.length;s>a;a++)i=t[a],o(i);return{put:o,includes:n,includesAny:e}},{presentAttr:sn,createElement:p,normalizeUrl:tn,normalizeMethod:Y,createElementFromHtml:f,$createElementFromSelector:n,createSelectorFromElement:d,get:x,ajax:o,extend:w,copy:l,merge:K,options:on,option:rn,error:y,debug:h,each:g,detect:v,select:fn,last:V,isNull:N,isDefined:D,isUndefined:L,isGiven:O,isMissing:M,isPresent:H,isBlank:A,presence:an,isObject:q,isFunction:U,isString:G,isElement:F,isJQuery:z,isPromise:I,isDeferred:P,isHash:j,ifGiven:S,isUnmodifiedKeyEvent:X,isUnmodifiedMouseEvent:J,nullJquery:nn,unwrap:bn,nextFrame:Z,measure:_,temporaryCss:vn,cssAnimate:m,finishCssAnimate:C,forceCompositing:T,prependGhost:un,escapePressed:b,copyAttributes:c,findWithSelf:k,contains:s,isArray:E,toArray:gn,castsToTrue:i,castsToFalse:u,locationFromXhr:B,methodFromXhr:Q,clientSize:a,only:en,trim:yn,keys:R,resolvedPromise:pn,resolvedDeferred:cn,resolvableWhen:ln,setMissingAttrs:dn,stringSet:mn}}()}.call(this),function(){var t=[].slice;up.browser=function(){var n,e,r,o,u,i,a,s,l,c;return l=up.util,a=function(t,n){var e,r,o,u,i,a;return null==n&&(n={}),i=l.option(n.method,"get").toLowerCase(),"get"===i?location.href=t:$.rails?(a=n.target,o=$.rails.csrfToken(),r=$.rails.csrfParam(),e=$("<form method='post' action='"+t+"'></form>"),u="<input name='_method' value='"+i+"' type='hidden' />",l.isDefined(r)&&l.isDefined(o)&&(u+="<input name='"+r+"' value='"+o+"' type='hidden' />"),a&&e.attr("target",a),e.hide().append(u).appendTo("body"),e.submit()):error("Can't fake a "+i.toUpperCase()+" request without Rails UJS")},c=function(){return location.href},o=function(){var t,n,e,r,o,u,i,a;return window.console||(window.console={}),t=function(){},(n=window.console).log||(n.log=t),(e=window.console).info||(e.info=t),(r=window.console).error||(r.error=t),(o=window.console).debug||(o.debug=t),(u=window.console).group||(u.group=t),(i=window.console).groupCollapsed||(i.groupCollapsed=t),(a=window.console).groupEnd||(a.groupEnd=t)},s=function(n){var e,r;return e=void 0,r=!1,function(){var o;return o=1<=arguments.length?t.call(arguments,0):[],r?e:(r=!0,e=n.apply(null,o))}},r=s(function(){return l.isDefined(history.pushState)}),n=s(function(){return"transition"in document.documentElement.style}),e=s(function(){return"oninput"in document.createElement("input")}),u=function(){var t,n,e,r,o;return o=$.fn.jquery,r=o.split("."),n=parseInt(r[0]),e=parseInt(r[1]),t=n>=2||1===n&&e>=9,t||l.error("jQuery %o found, but Up.js requires 1.9+",o)},i=s(function(){return l.isDefined(document.addEventListener)}),{url:c,ensureConsoleExists:o,loadPage:a,canPushState:r,canCssAnimation:n,canInputEvent:e,isSupported:i,ensureRecentJquery:u}}()}.call(this),function(){var t=[].slice;up.bus=function(){var n,e,r,o,u,i,a,s;return s=up.util,n={},r={},e=function(t){return n[t]||(n[t]=[])},a=function(){var t,e,o;r={},o=[];for(e in n)t=n[e],o.push(r[e]=s.copy(t));return o},i=function(){return n=s.copy(r)},u=function(t,n){return e(t).push(n)},o=function(){var n,r,o;return o=arguments[0],n=2<=arguments.length?t.call(arguments,1):[],s.debug("Emitting event %o with args %o",o,n),r=e(o),s.each(r,function(t){return t.apply(null,n)})},u("framework:ready",a),u("framework:reset",i),{on:u,emit:o}}()}.call(this),function(){up.viewport=function(){var t,n,e,r,o,u,i;return i=up.util,n={duration:0,view:"body",easing:"swing"},e=function(t){return i.extend(n,t)},t="up-scroll-promise",u=function(e,o,u){var a,s,l,c,p;return a=$(e),u=i.options(u),l=i.option(u.duration,n.duration),c=i.option(u.easing,n.easing),r(a),l>0?(s=$.Deferred(),a.data(t,s),s.then(function(){return a.removeData(t),a.finish()}),p={scrollTop:o},a.animate(p,{duration:l,easing:c,complete:function(){return s.resolve()}}),s):(a.scrollTop(o),i.resolvedDeferred())},r=function(n){return $(n).each(function(){var n;return(n=$(this).data(t))?n.resolve():void 0})},o=function(t,e){var r,o,a,s,l,c,p,f,d,m,h;return e=i.options(e),m=i.option(e.view,n.view),f=i.option(e.padding,n.padding),r=$(t),o=$(m),h=o.height(),d=o.scrollTop(),c=d,p=d+h,l=r.position().top,a=c>l-f,s=l>p-f,a||s?(d=l-f,d=Math.max(d,0),d=Math.min(d,h-1),u(o,d,e)):i.resolvedDeferred()},{reveal:o,scroll:u,finishScrolling:r,defaults:e}}(),up.scroll=up.viewport.scroll,up.reveal=up.viewport.reveal}.call(this),function(){up.flow=function(){var t,n,e,r,o,u,i,a,s,l,c,p,f,d,m,h;return h=up.util,f=function(t,n){var e;return e=$(t),h.isPresent(n)&&(n=h.normalizeUrl(n)),e.attr("up-source",n)},d=function(t){var n;return n=$(t).closest("[up-source]"),h.presence(n.attr("up-source"))||up.browser.url()},l=function(t,n,e){var r,u,i;return e=h.options(e),i=h.presence(t)?t:h.createSelectorFromElement($(t)),up.browser.canPushState()||h.castsToFalse(e.history)?(u={url:n,method:e.method,selector:i,cache:e.cache},r=up.proxy.ajax(u),r.done(function(t,r,a){var s,l;return(s=h.locationFromXhr(a))&&(h.debug("Location from server: %o",s),l={url:s,method:h.methodFromXhr(a),selector:i},up.proxy.alias(u,l),n=s),(h.isMissing(e.history)||h.castsToTrue(e.history))&&(e.history=n),(h.isMissing(e.source)||h.castsToTrue(e.source))&&(e.source=n),e.preload?void 0:o(i,t,e)}),r.fail(h.error),r):void(e.preload||up.browser.loadPage(n,h.only(e,"method")))},o=function(t,n,e){var o,s,l,c,p,f,d,v;for(e=h.options(e,{historyMethod:"push"}),h.castsToFalse(e.history)&&(e.history=null),h.castsToFalse(e.scroll)&&(e.scroll=null),e.source=h.option(e.source,e.history),l=i(n),e.title||(e.title=l.title()),d=u(t,e),v=[],p=0,f=d.length;f>p;p++)c=d[p],s=r(c.selector),o=l.find(c.selector),v.push(a(s,e).then(function(){return m(s,o,c.pseudoClass,c.transition,e)}));return v},r=function(t){var n;return n=t+":not(.up-ghost, .up-destroying)",h.presence($(".up-popup "+n))||h.presence($(".up-modal "+n))||h.presence($(n))||h.error("Could not find selector %o in current body HTML",t)},i=function(t){var n;return n=h.createElementFromHtml(t),{title:function(){var t;return null!=(t=n.querySelector("title"))?t.textContent:void 0},find:function(e){var r;return(r=n.querySelector(e))?$(r):h.error("Could not find selector %o in response %o",e,t)}}},a=function(t,n){return up.motion.finish(t),p(t,n.scroll)},p=function(t,n){return n?up.reveal(t,{view:n}):h.resolvedDeferred()},e=function(n,e){return"function"==typeof e.insert&&e.insert(n),e.history&&(e.title&&(document.title=e.title),up.history[e.historyMethod](e.history)),f(n,e.source),t(n),up.ready(n)},m=function(t,r,o,u,i){var a,s;return u||(u="none"),o?(s="before"===o?"prepend":"append",a=r.children(),t[s](r.contents()),h.copyAttributes(r,t),e(a,i),up.animate(r,u,i)):n(t,{animation:function(){return r.insertBefore(t),e(r,i),t.is("body")&&"none"!==u&&h.error("Cannot apply transitions to body-elements (%o)",u),up.morph(t,r,u,i)}})},u=function(t,n){var e,r,o,u,i,a,s,l,c,p,f;for(s=n.transition||n.animation||"none",e=/\ *,\ */,r=t.split(e),h.isPresent(s)&&(l=s.split(e)),f=[],o=c=0,p=r.length;p>c;o=++c)u=r[o],i=u.match(/^(.+?)(?:\:(before|after))?$/),a=l[o]||h.last(l),f.push({selector:i[1],pseudoClass:i[2],transition:a});return f},t=function(t){var n,e;return e="[autofocus]:last",n=h.findWithSelf(t,e),n.length&&n.get(0)!==document.activeElement?n.focus():void 0},n=function(t,n){var e,r,o;return e=$(t),n=h.options(n,{animation:"none"}),r=up.motion.animateOptions(n),e.addClass("up-destroying"),h.isPresent(n.url)&&up.history.push(n.url),h.isPresent(n.title)&&(document.title=n.title),up.bus.emit("fragment:destroy",e),o=h.presence(n.animation,h.isPromise)||up.motion.animate(e,n.animation,r),o.then(function(){return e.remove()})},s=function(t,n){var e;return n=h.options(n,{cache:!1}),e=n.url||d(t),l(t,e,n)},c=function(){return up.bus.emit("framework:reset")},up.bus.on("app:ready",function(){return f(document.body,up.browser.url())}),{replace:l,reload:s,destroy:n,implant:o,reset:c}}(),up.replace=up.flow.replace,up.reload=up.flow.reload,up.destroy=up.flow.destroy,up.reset=up.flow.reset}.call(this),function(){var t=[].slice;up.magic=function(){var n,e,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g;return g=up.util,n="up-destroyable",e="up-destroyer",f=[],l=null,p=function(t,n,e){var r,o;if(up.browser.isSupported())return r=[t,n,function(t){return e.apply(this,[t,$(this),a(this)])}],f.push(r),(o=$(document)).on.apply(o,r)},u=[],s=null,o=function(){var n,e,r,o;return o=arguments[0],n=2<=arguments.length?t.call(arguments,1):[],up.browser.isSupported()?(e=n.pop(),r=g.options(n[0],{batch:!1}),u.push({selector:o,callback:e,batch:r.batch})):void 0},r=function(t,r,o){var u;return g.debug("Applying awakener %o on %o",t.selector,o),u=t.callback.apply(o,[r,a(r)]),g.isFunction(u)?(r.addClass(n),r.data(e,u)):void 0},i=function(t){var n,e,o,i,a;for(g.debug("Compiling fragment %o",t),a=[],o=0,i=u.length;i>o;o++)e=u[o],n=g.findWithSelf(t,e.selector),a.push(n.length?e.batch?r(e,n,n.get()):n.each(function(){return r(e,$(this),this)}):void 0);return a},c=function(t){return g.findWithSelf(t,"."+n).each(function(){var t,n;return t=$(this),(n=t.data(e))()})},a=function(t){var n,e;return n=$(t),e=n.attr("up-data"),g.isString(e)&&""!==g.trim(e)?JSON.parse(e):{}},v=function(){return l=g.copy(f),s=g.copy(u)},h=function(){var t,n,e,r;for(n=0,e=f.length;e>n;n++)t=f[n],g.contains(l,t)||(r=$(document)).off.apply(r,t);return f=g.copy(l),u=g.copy(s)},m=function(t){var n;return n=$(t),up.bus.emit("fragment:ready",n),n},d=function(t){return p("keydown","body",function(n){return g.escapePressed(n)?t(n):void 0})},up.bus.on("app:ready",function(){return m(document.body)}),up.bus.on("fragment:ready",i),up.bus.on("fragment:destroy",c),up.bus.on("framework:ready",v),up.bus.on("framework:reset",h),{awaken:o,on:p,ready:m,onEscape:d,data:a}}(),up.awaken=up.magic.awaken,up.on=up.magic.on,up.ready=up.magic.ready}.call(this),function(){up.history=function(){var t,n,e,r,o,u;return u=up.util,t=function(t){return u.normalizeUrl(t,{hash:!0})===u.normalizeUrl(up.browser.url(),{hash:!0})},o=function(e,r){return r=u.options(r,{force:!1}),r.force||!t(e)?n("replace",e):void 0},r=function(e){return t(e)?void 0:n("push",e)},n=function(t,n){return up.browser.canPushState()?(t+="State",window.history[t]({fromUp:!0},"",n)):u.error("This browser doesn't support history.pushState")},e=function(t){var n;return n=t.originalEvent.state,(null!=n?n.fromUp:void 0)?(u.debug("Restoring state %o (now on "+up.browser.url()+")",n),up.visit(up.browser.url(),{historyMethod:"replace"})):u.debug("Discarding unknown state %o",n)},up.browser.canPushState()&&setTimeout(function(){return $(window).on("popstate",e),o(up.browser.url(),{force:!0})},200),{push:r,replace:o}}()}.call(this),function(){up.motion=function(){var t,n,e,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g,y,b,w,k;return w=up.util,o={},a={},b={},s={},i={duration:300,delay:0,easing:"ease"},l=function(t){return w.extend(i,t)},n=function(t,r,o){var i;return i=$(t),p(i),o=e(o),w.isFunction(r)?u(r(i,o),r):w.isString(r)?n(i,c(r),o):w.isHash(r)?w.cssAnimate(i,r,o):w.error("Unknown animation type %o",r)},e=function(t,n){var e;return null==n&&(n=null),t=w.options(t),e={},e.easing=w.option(t.easing,null!=n?n.attr("up-easing"):void 0,i.easing),e.duration=Number(w.option(t.duration,null!=n?n.attr("up-duration"):void 0,i.duration)),e.delay=Number(w.option(t.delay,null!=n?n.attr("up-delay"):void 0,i.delay)),e},c=function(t){return o[t]||w.error("Unknown animation %o",r)},t="up-ghosting-promise",k=function(n,e,r){var o,u,i,a;return u=null,o=null,w.temporaryCss(e,{display:"none"},function(){return u=w.prependGhost(n).addClass("up-destroying")}),w.temporaryCss(n,{display:"none"},function(){return o=w.prependGhost(e)}),n.css({visibility:"hidden"}),a=w.temporaryCss(e,{display:"none"}),i=r(u,o),n.data(t,i),e.data(t,i),i.then(function(){return n.removeData(t),e.removeData(t),u.remove(),o.remove(),n.css({display:"none"}),a()}),i},p=function(t){return $(t).each(function(){var t;return t=$(this),w.finishCssAnimate(t),f(t)})},f=function(n){var e;return(e=n.data(t))?(w.debug("Canceling existing ghosting on %o",n),"function"==typeof e.resolve?e.resolve():void 0):void 0},u=function(t,n){return w.isDeferred(t)?t:w.error("Did not return a promise with .then and .resolve methods: %o",n)},d=function(t,r,i,a){var s,l,c,f,h;return up.browser.canCssAnimation()?(a=e(a),l=$(t),s=$(r),p(l),p(s),"none"===i?m():(h=w.presence(i,w.isFunction)||b[i])?k(l,s,function(t,n){return u(h(t,n,a),i)}):(c=o[i])?(l.hide(),n(s,c,a)):w.isString(i)&&i.indexOf("/")>=0?(f=i.split("/"),h=function(t,e,r){return v(n(t,f[0],r),n(e,f[1],r))},d(l,s,h,a)):w.error("Unknown transition %o",i)):w.resolvedDeferred()},y=function(t,n){return b[t]=n},r=function(t,n){return o[t]=n},g=function(){return a=w.copy(o),s=w.copy(b)},h=function(){return o=w.copy(a),b=w.copy(s)},v=w.resolvableWhen,m=w.resolvedDeferred,r("none",m),r("fade-in",function(t,e){return t.css({opacity:0}),n(t,{opacity:1},e)}),r("fade-out",function(t,e){return t.css({opacity:1}),n(t,{opacity:0},e)}),r("move-to-top",function(t,e){var r,o;return r=w.measure(t),o=r.top+r.height,t.css({"margin-top":"0px"}),n(t,{"margin-top":"-"+o+"px"},e)}),r("move-from-top",function(t,e){var r,o;return r=w.measure(t),o=r.top+r.height,t.css({"margin-top":"-"+o+"px"}),n(t,{"margin-top":"0px"},e)}),r("move-to-bottom",function(t,e){var r,o;return r=w.measure(t),o=w.clientSize().height-r.top,t.css({"margin-top":"0px"}),n(t,{"margin-top":o+"px"},e)}),r("move-from-bottom",function(t,e){var r,o;return r=w.measure(t),o=w.clientSize().height-r.top,t.css({"margin-top":o+"px"}),n(t,{"margin-top":"0px"},e)}),r("move-to-left",function(t,e){var r,o;return r=w.measure(t),o=r.left+r.width,t.css({"margin-left":"0px"}),n(t,{"margin-left":"-"+o+"px"},e)}),r("move-from-left",function(t,e){var r,o;return r=w.measure(t),o=r.left+r.width,t.css({"margin-left":"-"+o+"px"}),n(t,{"margin-left":"0px"},e)}),r("move-to-right",function(t,e){var r,o;return r=w.measure(t),o=w.clientSize().width-r.left,t.css({"margin-left":"0px"}),n(t,{"margin-left":o+"px"},e)}),r("move-from-right",function(t,e){var r,o;return r=w.measure(t),o=w.clientSize().width-r.left,t.css({"margin-left":o+"px"}),n(t,{"margin-left":"0px"},e)}),r("roll-down",function(t,e){var r,o;return r=t.height(),o=w.temporaryCss(t,{height:"0px",overflow:"hidden"}),n(t,{height:r+"px"},e).then(o)}),y("none",m),y("move-left",function(t,e,r){return v(n(t,"move-to-left",r),n(e,"move-from-right",r))}),y("move-right",function(t,e,r){return v(n(t,"move-to-right",r),n(e,"move-from-left",r))}),y("move-up",function(t,e,r){return v(n(t,"move-to-top",r),n(e,"move-from-bottom",r))}),y("move-down",function(t,e,r){return v(n(t,"move-to-bottom",r),n(e,"move-from-top",r))}),y("cross-fade",function(t,e,r){return v(n(t,"fade-out",r),n(e,"fade-in",r))}),up.bus.on("framework:ready",g),up.bus.on("framework:reset",h),{morph:d,animate:n,animateOptions:e,finish:p,transition:y,animation:r,defaults:l,none:m,when:v}}(),up.transition=up.motion.transition,up.animation=up.motion.animation,up.morph=up.motion.morph,up.animate=up.motion.animate}.call(this),function(){up.proxy=function(){var t,n,e,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g,y,b,w,k,$,C,T;return l={preloadDelay:75,cacheSize:70,cacheExpiry:3e5},c=function(t){return T.extend(l,t)},o={},T=up.util,t=null,p=null,u=function(t){return v(t),[t.url,t.method,t.selector].join("|")},C=function(){var t,n,e;return t=T.keys(o),t.length>l.cacheSize&&(n=null,e=null,T.each(t,function(t){var r,u;return r=o[t],u=r.timestamp,!e||e>u?(n=t,e=u):void 0}),n)?delete o[n]:void 0},$=function(){return(new Date).valueOf()},v=function(t){return!T.isHash(t),t._requestNormalized||(t.method=T.normalizeMethod(t.method),t.url&&(t.url=T.normalizeUrl(t.url)),t.selector||(t.selector="body"),t._requestNormalized=!0),t},r=function(t,n){var e;return T.debug("Aliasing %o to %o",t,n),(e=d(t))?w(n,e):void 0},e=function(t){var n,e,r,o;return n=T.castsToTrue(t.cache),e=T.castsToFalse(t.cache),o=T.only(t,"url","method","selector"),h(o)||n?(r=d(o)&&!e)||(r=T.ajax(o),w(o,r)):(s(),r=T.ajax(o)),r},n=["GET","OPTIONS","HEAD"],h=function(t){return v(t),T.contains(n,t.method)},f=function(t){return h(t)||T.error("Won't preload non-GET request %o",t)},m=function(t){var n;return n=$()-t.timestamp,n<l.cacheExpiry},d=function(t){var n,e;return n=u(t),(e=o[n])?m(e)?(T.debug("Cache hit for %o (%o)",t.url,t),e):(T.debug("Discarding stale cache entry for %o (%o)",t.url,t),void y(t)):void T.debug("Cache miss for %o (%o)",t.url,t)},w=function(t,n){var e;return C(),e=u(t),n.timestamp=$(),o[e]=n,n},y=function(t){var n;return n=u(t),delete o[n]},s=function(){return o={}},a=function(n){var e,r;return r=parseInt(T.presentAttr(n,"up-delay"))||l.preloadDelay,n.is(t)?void 0:(t=n,i(),e=function(){return g(n)},k(e,r))},k=function(t,n){return p=setTimeout(t,n)},i=function(){return clearTimeout(p),p=null},g=function(t,n){return n=T.options(),f(n),T.debug("Preloading %o",t),n.preload=!0,up.link.follow(t,n)},b=function(){return i(),o={}},up.bus.on("framework:reset",b),up.on("mouseover mousedown touchstart","[up-preload]",function(t,n){return up.link.childClicked(t,n)?void 0:a(up.link.resolve(n))}),{preload:g,ajax:e,get:d,set:w,alias:r,clear:s,remove:y,defaults:c}}()}.call(this),function(){up.link=function(){var t,n,e,r,o,u;return o=up.util,u=function(t,n){return o.debug("Visiting "+t),up.replace("body",t,n)},e=function(t,n){var e,r,u;return e=$(t),n=o.options(n),u=o.option(e.attr("href"),e.attr("up-follow")),r=o.option(n.target,e.attr("up-target"),"body"),n.transition=o.option(n.transition,e.attr("up-transition"),e.attr("up-animation")),n.history=o.option(n.history,e.attr("up-history")),n.scroll=o.option(n.scroll,e.attr("up-scroll"),"body"),n.cache=o.option(n.cache,e.attr("up-cache")),n=o.merge(n,up.motion.animateOptions(n,e)),up.replace(r,u,n)},r=function(t){var n,e;return n=$(t),e=n.attr("up-follow"),n.is("a")||o.isPresent(e)&&!o.castsToTrue(e)?n:n.find("a:first")},up.on("click","a[up-target]",function(t,n){return t.preventDefault(),n.is("[up-instant]")?void 0:e(n)}),up.on("mousedown","a[up-target][up-instant]",function(n,e){return t(n,e)?(n.preventDefault(),up.follow(e)):void 0}),n=function(t,n){var e,r;return e=$(t.target),r=e.closest("a, [up-follow]"),r.length&&n.find(r).length},t=function(t,e){return o.isUnmodifiedMouseEvent(t)&&!n(t,e)},up.on("click","[up-follow]",function(t,o){return n(t,o)||(t.preventDefault(),o.is("[up-instant]"))?void 0:e(r(o))}),up.on("mousedown","[up-follow][up-instant]",function(n,e){return t(n,e)?(n.preventDefault(),up.follow(r(e))):void 0}),up.awaken("[up-dash]",function(t){var n,e;return e=t.attr("up-dash"),n={"up-preload":"true","up-instant":"true"},o.isBlank(e)||o.castsToTrue(e)?n["up-follow"]="":n["up-target"]=e,o.setMissingAttrs(t,n),t.removeAttr("up-dash")}),{visit:u,follow:e,resolve:r,childClicked:n}}(),up.visit=up.link.visit,up.follow=up.link.follow}.call(this),function(){up.form=function(){var observe,submit,u;return u=up.util,submit=function(t,n){var e,r,o,i,a,s,l,c,p,f,d,m;return e=$(t).closest("form"),n=u.options(n),c=u.option(n.target,e.attr("up-target"),"body"),o=u.option(n.failTarget,e.attr("up-fail-target"),function(){return u.createSelectorFromElement(e)}),a=u.option(n.history,e.attr("up-history"),!0),p=u.option(n.transition,e.attr("up-transition")),i=u.option(n.failTransition,e.attr("up-fail-transition"),p),s=u.option(n.method,e.attr("up-method"),e.attr("data-method"),e.attr("method"),"post").toUpperCase(),r=up.motion.animateOptions(n,e),m=u.option(n.cache,e.attr("up-cache")),d=u.option(n.url,e.attr("action"),up.browser.url()),e.addClass("up-active"),up.browser.canPushState()||u.castsToFalse(a)?(l={url:d,type:s,data:e.serialize(),selector:c,cache:m},f=function(t){var n;return d=a?u.castsToFalse(a)?!1:u.isString(a)?a:(n=u.locationFromXhr(t))?n:"GET"===l.type?l.url+"?"+l.data:void 0:void 0,u.option(d,!1)},u.ajax(l).always(function(){return e.removeClass("up-active")}).done(function(t,n,e){var o;return o=u.merge(r,{history:f(e),transition:p}),up.flow.implant(c,t,o)}).fail(function(t){var n,e;return e=t.responseText,n=u.merge(r,{transition:i}),up.flow.implant(o,e,n)})):void e.get(0).submit()},observe=function(fieldOrSelector,options){var $field,callback,callbackPromise,callbackTimer,changeEvents,check,clearTimer,codeOnChange,delay,knownValue,nextCallback,runNextCallback;return $field=$(fieldOrSelector),options=u.options(options),delay=u.option($field.attr("up-delay"),options.delay,0),delay=parseInt(delay),knownValue=null,callback=null,callbackTimer=null,(codeOnChange=$field.attr("up-observe"))?callback=function(value,$field){return eval(codeOnChange)}:options.change?callback=options.change:u.error("up.observe: No change callback given"),callbackPromise=u.resolvedPromise(),nextCallback=null,runNextCallback=function(){var t;return nextCallback?(t=nextCallback(),nextCallback=null,t):void 0},check=function(){var t,n;return n=$field.val(),t=u.isNull(knownValue),knownValue===n||(knownValue=n,t)?void 0:(clearTimer(),nextCallback=function(){return callback.apply($field.get(0),[n,$field])},callbackTimer=setTimeout(function(){return callbackPromise.then(function(){var t;return t=runNextCallback(),callbackPromise=u.isPromise(t)?t:u.resolvedPromise()})},delay))},clearTimer=function(){return clearTimeout(callbackTimer)},changeEvents=up.browser.canInputEvent()?"input change":"input change keypress paste cut click propertychange",$field.on(changeEvents,check),check(),clearTimer},up.on("submit","form[up-target]",function(t,n){return t.preventDefault(),submit(n)}),up.awaken("[up-observe]",function(t){return observe(t)}),{submit:submit,observe:observe}}(),up.submit=up.form.submit,up.observe=up.form.observe}.call(this),function(){up.popup=function(){var t,n,e,r,o,u,i,a,s,l,c,p,f;return p=up.util,e={openAnimation:"fade-in",closeAnimation:"fade-out",origin:"bottom-right"},o=function(t){return p.extend(e,t)},s=function(t,n,e){var r,o;return o=p.measure(t,{full:!0}),r=function(){switch(e){case"bottom-right":return{right:o.right,top:o.top+o.height};case"bottom-left":return{left:o.left,top:o.bottom+o.height};case"top-right":return{right:o.right,bottom:o.top};case"top-left":return{left:o.left,bottom:o.top};default:return p.error("Unknown origin %o",e)}}(),n.attr("up-origin",e),n.css(r),i(n)},i=function(t){var n,e,r,o,u,i,a;if(e=p.measure(t,{full:!0}),r=null,o=null,e.right<0&&(r=-e.right),e.bottom<0&&(o=-e.bottom),e.left<0&&(r=e.left),e.top<0&&(o=e.top),r&&((u=parseInt(t.css("left")))?t.css("left",u-r):(i=parseInt(t.css("right")))&&t.css("right",i+r)),o){if(a=parseInt(t.css("top")))return t.css("top",a-o);if(n=parseInt(t.css("bottom")))return t.css("bottom",n+o)}},l=function(){var t;return t=$(".up-popup"),t.attr("up-previous-url",up.browser.url()),t.attr("up-previous-title",document.title)},u=function(){var t;return t=$(".up-popup"),t.removeAttr("up-previous-url"),t.removeAttr("up-previous-title")},r=function(t,n,e){var r,o;return o=p.$createElementFromSelector(".up-popup"),e&&o.attr("up-sticky",""),r=p.$createElementFromSelector(n),r.appendTo(o),o.appendTo(document.body),l(),o.hide(),o},f=function(t,n,e,r,o){return n.show(),s(t,n,e),up.animate(n,r,o)},a=function(t,o){var u,i,a,s,l,c,d,m,h;return u=$(t),o=p.options(o),h=p.option(o.url,u.attr("href")),d=p.option(o.target,u.attr("up-popup"),"body"),c=p.option(o.origin,u.attr("up-origin"),e.origin),s=p.option(o.animation,u.attr("up-animation"),e.openAnimation),m=p.option(o.sticky,u.is("[up-sticky]")),l=up.browser.canPushState()?p.option(o.history,u.attr("up-history"),!1):!1,a=up.motion.animateOptions(o,u),n(),i=r(u,d,m),up.replace(d,h,{history:l,insert:function(){return f(u,i,c,s,a)}})},c=function(){var t;return t=$(".up-popup"),t.is(".up-destroying")?void 0:t.find("[up-source]").attr("up-source")},n=function(t){var n;return n=$(".up-popup"),n.length?(t=p.options(t,{animation:e.closeAnimation,url:n.attr("up-previous-url"),title:n.attr("up-previous-title")}),up.destroy(n,t)):void 0},t=function(){return $(".up-popup").is("[up-sticky]")?void 0:n()},up.on("click","a[up-popup]",function(t,e){return t.preventDefault(),e.is(".up-current")?n():a(e)}),up.on("click","body",function(t){var e;return e=$(t.target),e.closest(".up-popup").length||e.closest("[up-popup]").length?void 0:n()}),up.bus.on("fragment:ready",function(n){return n.closest(".up-popup").length?void 0:(u(),t())}),up.magic.onEscape(function(){return n()}),up.on("click","[up-close]",function(t,e){return e.closest(".up-popup")?n():void 0}),up.bus.on("framework:reset",n),{open:a,close:n,source:c,defaults:o}}()}.call(this),function(){var t=[].slice;up.modal=function(){var n,e,r,o,u,i,a,s,l,c,p,f;return p=up.util,r={width:"auto",height:"auto",openAnimation:"fade-in",closeAnimation:"fade-out",closeLabel:"X",template:function(t){return'<div class="up-modal">\n <div class="up-modal-dialog">\n <div class="up-modal-close" up-close>'+t.closeLabel+'</div>\n <div class="up-modal-content"></div>\n </div>\n</div>'}},u=function(t){return p.extend(r,t)},c=function(){var t;return t=r.template,p.isFunction(t)?t(r):t},s=function(){var t;return t=$(".up-modal"),t.attr("up-previous-url",up.browser.url()),t.attr("up-previous-title",document.title)},i=function(){var t;return t=$(".up-modal"),t.removeAttr("up-previous-url"),t.removeAttr("up-previous-title")
1
+ (function(){window.up={}}).call(this),function(){var t=[].slice;up.util=function(){var n,e,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g,y,b,w,k,C,T,x,S,E,A,P,D,F,U,O,j,z,M,N,q,H,I,W,G,L,X,J,R,V,B,_,K,Q,Z,Y,tn,nn,en,rn,on,un,an,sn,ln,cn,pn,fn,dn,mn,hn,vn,gn,yn,bn;return x=function(t,n){return n=n||{},n.url=t,o(n)},o=function(t){return t.selector&&(t.headers={"X-Up-Selector":t.selector}),$.ajax(t)},W=function(t,n){return(""===n||"80"===n)&&"http:"===t||"443"===n&&"https:"===t},tn=function(t,n){var e,r,o;return e=null,G(t)?(e=$("<a>").attr({href:t}).get(0),A(e.hostname)&&(e.href=e.href)):e=bn(t),r=e.protocol+"//"+e.hostname,W(e.protocol,e.port)||(r+=":"+e.port),o=e.pathname,"/"!==o[0]&&(o="/"+o),(null!=n?n.stripTrailingSlash:void 0)===!0&&(o=o.replace(/\/$/,"")),r+=o,(null!=n?n.hash:void 0)===!0&&(r+=e.hash),(null!=n?n.search:void 0)!==!1&&(r+=e.search),r},Y=function(t){return t?t.toUpperCase():"GET"},n=function(t){var n,e,r,o,u,i,a,s,l,c,p,f,d,m,h,v;for(p=t.split(/[ >]/),r=null,c=d=0,h=p.length;h>d;c=++d){for(i=p[c],u=i.match(/(^|\.|\#)[A-Za-z0-9\-_]+/g),f="div",o=[],l=null,m=0,v=u.length;v>m;m++)switch(a=u[m],a[0]){case".":o.push(a.substr(1));break;case"#":l=a.substr(1);break;default:f=a}s="<"+f,o.length&&(s+=' class="'+o.join(" ")+'"'),l&&(s+=' id="'+l+'"'),s+=">",n=$(s),e&&n.appendTo(e),0===c&&(r=n),e=n}return r},p=function(t,n){var e;return e=document.createElement(t),H(n)&&(e.innerHTML=n),e},h=function(){var n,e,o,u,i,a;if(n=1<=arguments.length?t.call(arguments,0):[],n=gn(n),o=n.shift(),o="[UP] "+o,u=(null!=(a=o.match(r))?a.length:void 0)||0,U(V(n))&&u<n.length&&(e=n.pop()),i=console.debug.apply(console,[o].concat(t.call(n))),e){console.groupCollapsed();try{i=e()}finally{console.groupEnd()}}return i},y=function(){var n,e,r;throw e=1<=arguments.length?t.call(arguments,0):[],e[0]="[UP] "+e[0],console.error.apply(console,e),r=hn(e),n=an($(".up-error"))||$('<div class="up-error"></div>').prependTo("body"),n.addClass("up-error"),n.text(r),r},r=/\%[odisf]/g,hn=function(t){var n,e,o;return o=t[0],n=0,e=30,o.replace(r,function(){var r,o;return n+=1,r=t[n],o=typeof r,"string"===o?(r=r.replace(/\s+/g," "),r.length>e&&(r=r.substr(0,e)+"\u2026"),'"'+r+'"'):"number"===o?r.toString():"("+o+")"})},d=function(t){var n,e,r,o,u,i,a;for(h("Creating selector from element %o",t),e=(n=t.attr("class"))?n.split(" "):[],r=t.attr("id"),u=t.prop("tagName").toLowerCase(),r&&(u+="#"+r),i=0,a=e.length;a>i;i++)o=e[i],u+="."+o;return u},f=function(t){var n,e,r,o,u,i,a,s,l,c,f,d;return l=function(t){return"<"+t+"(?: [^>]*)?>"},i=function(t){return"</"+t+">"},n="(?:.|\\n)*?",u=function(t){return"("+t+")"},d=new RegExp(l("head")+n+l("title")+u(n)+i("title")+n+i("body"),"i"),o=new RegExp(l("body")+u(n)+i("body"),"i"),(r=t.match(o))?(s=document.createElement("html"),e=p("body",r[1]),s.appendChild(e),(f=t.match(d))&&(a=p("head"),s.appendChild(a),c=p("title",f[1]),a.appendChild(c)),s):p("div",t)},w=$.extend,yn=$.trim,R=Object.keys||function(t){var n,e,r,o;for(e=[],r=0,o=t.length;o>r;r++)n=t[r],t.hasOwnProperty(n)&&e.push(n);return e},g=function(t,n){var e,r,o,u,i;for(i=[],e=o=0,u=t.length;u>o;e=++o)r=t[e],i.push(n(r,e));return i},N=function(t){return null===t},L=function(t){return void 0===t},D=function(t){return!L(t)},M=function(t){return L(t)||N(t)},O=function(t){return!M(t)},A=function(t){return M(t)||q(t)&&0===R(t).length||0===t.length},an=function(t,n){return null==n&&(n=H),n(t)?t:null},H=function(t){return!A(t)},U=function(t){return"function"==typeof t},G=function(t){return"string"==typeof t},j=function(t){return"object"==typeof t&&!!t},q=function(t){return j(t)||"function"==typeof t},F=function(t){return!(!t||1!==t.nodeType)},z=function(t){return t instanceof jQuery},I=function(t){return q(t)&&U(t.then)},P=function(t){return I(t)&&U(t.resolve)},S=function(t){return O(t)?t:void 0},E=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},gn=function(t){return Array.prototype.slice.call(t)},l=function(t){return E(t)?t.slice():w({},t)},bn=function(t){return z(t)?t.get(0):t},K=function(t,n){return w(l(t),n)},on=function(t,n){var e,r,o,u;if(o=t?l(t):{},n)for(r in n)e=n[r],u=o[r],O(u)?q(e)&&q(u)&&(o[r]=on(u,e)):o[r]=e;return o},rn=function(){var n,e,r,o,u,i;for(e=1<=arguments.length?t.call(arguments,0):[],r=null,u=0,i=e.length;i>u;u++)if(n=e[u],o=n,U(o)&&(o=o()),O(o)){r=o;break}return r},v=function(t,n){var e,r,o,u;for(r=null,o=0,u=t.length;u>o;o++)if(e=t[o],n(e)){r=e;break}return r},fn=function(t,n){var e;return e=[],g(t,function(t){return n(t)?e.push(t):void 0}),e},sn=function(){var n,e,r,o;return n=arguments[0],r=2<=arguments.length?t.call(arguments,1):[],o=function(){var t,o,u;for(u=[],t=0,o=r.length;o>t;t++)e=r[t],u.push(n.attr(e));return u}(),v(o,H)},Z=function(t){return setTimeout(t,0)},V=function(t){return t[t.length-1]},a=function(){var t;return t=document.documentElement,{width:t.clientWidth,height:t.clientHeight}},vn=function(t,n,e){var r,o;return o=t.css(R(n)),t.css(n),r=function(){return t.css(o)},e?(e(),r()):r},T=function(t){var n,e;return e=t.css(["transform","-webkit-transform"]),A(e)?(n=function(){return t.css(e)},t.css({transform:"translateZ(0)","-webkit-transform":"translateZ(0)"})):n=function(){},n},m=function(t,n,r){var o,u,i,a,s,l;return o=$(t),up.browser.canCssAnimation()?(r=on(r,{duration:300,delay:0,easing:"ease"}),u=$.Deferred(),a={"transition-property":R(n).join(", "),"transition-duration":r.duration+"ms","transition-delay":r.delay+"ms","transition-timing-function":r.easing},s=T(o),l=vn(o,a),o.css(n),u.then(s),u.then(l),o.data(e,u),u.then(function(){return o.removeData(e)}),i=setTimeout(function(){return u.resolve()},r.duration+r.delay),u.then(function(){return clearTimeout(i)}),u):(o.css(n),pn())},e="up-animation-promise",C=function(t){return $(t).each(function(){var t;return(t=$(this).data(e))?t.resolve():void 0})},_=function(t,n){var e,r,o;return r=(null!=n?n.relative:void 0)?t.position():t.offset(),e={left:r.left,top:r.top},(null!=n?n.inner:void 0)?(e.width=t.width(),e.height=t.height()):(e.width=t.outerWidth(),e.height=t.outerHeight()),(null!=n?n.full:void 0)&&(o=a(),e.right=o.width-(e.left+e.width),e.bottom=o.height-(e.top+e.height)),e},c=function(t,n){var e,r,o,u,i;for(u=t.get(0).attributes,i=[],r=0,o=u.length;o>r;r++)e=u[r],i.push(e.specified?n.attr(e.name,e.value):void 0);return i},un=function(t){var n,e;return e=_(t,{relative:!0,inner:!0}),n=t.clone(),n.find("script").remove(),n.css({right:"",bottom:"",position:"absolute"}),n.css(e),n.addClass("up-ghost"),n.insertBefore(t)},k=function(t,n){return t.find(n).addBack(n)},b=function(t){return 27===t.keyCode},s=function(t,n){return t.indexOf(n)>=0},i=function(t){return"true"===String(t)},u=function(t){return"false"===String(t)},B=function(t){return t.getResponseHeader("X-Up-Location")},Q=function(t){return t.getResponseHeader("X-Up-Method")},en=function(){var n,e,r,o,u,i;for(o=arguments[0],r=2<=arguments.length?t.call(arguments,1):[],n={},u=0,i=r.length;i>u;u++)e=r[u],o.hasOwnProperty(e)&&(n[e]=o[e]);return n},X=function(t){return!(t.metaKey||t.shiftKey||t.ctrlKey)},J=function(t){return 0===t.button&&X(t)},cn=function(){var t;return t=$.Deferred(),t.resolve(),t},pn=function(){return cn().promise()},nn=function(){return{is:function(){return!1},attr:function(){},find:function(){return[]}}},ln=function(){var n,e;return n=1<=arguments.length?t.call(arguments,0):[],e=$.when.apply($,n),e.resolve=function(){return g(n,function(t){return"function"==typeof t.resolve?t.resolve():void 0})},e},dn=function(t,n){var e,r,o;o=[];for(e in n)r=n[e],o.push(M(t.attr(e))?t.attr(e,r):void 0);return o},mn=function(t){var n,e,r,o,u,i,a,s;for(u={},n=function(t){return u[r(t)]},e=function(t){return v(t,n)},o=function(t){return u[r(t)]=!0},r=function(t){return"_"+t},a=0,s=t.length;s>a;a++)i=t[a],o(i);return{put:o,includes:n,includesAny:e}},{presentAttr:sn,createElement:p,normalizeUrl:tn,normalizeMethod:Y,createElementFromHtml:f,$createElementFromSelector:n,createSelectorFromElement:d,get:x,ajax:o,extend:w,copy:l,merge:K,options:on,option:rn,error:y,debug:h,each:g,detect:v,select:fn,last:V,isNull:N,isDefined:D,isUndefined:L,isGiven:O,isMissing:M,isPresent:H,isBlank:A,presence:an,isObject:q,isFunction:U,isString:G,isElement:F,isJQuery:z,isPromise:I,isDeferred:P,isHash:j,ifGiven:S,isUnmodifiedKeyEvent:X,isUnmodifiedMouseEvent:J,nullJquery:nn,unwrap:bn,nextFrame:Z,measure:_,temporaryCss:vn,cssAnimate:m,finishCssAnimate:C,forceCompositing:T,prependGhost:un,escapePressed:b,copyAttributes:c,findWithSelf:k,contains:s,isArray:E,toArray:gn,castsToTrue:i,castsToFalse:u,locationFromXhr:B,methodFromXhr:Q,clientSize:a,only:en,trim:yn,keys:R,resolvedPromise:pn,resolvedDeferred:cn,resolvableWhen:ln,setMissingAttrs:dn,stringSet:mn}}()}.call(this),function(){var t=[].slice;up.browser=function(){var n,e,r,o,u,i,a,s,l,c;return l=up.util,a=function(t,n){var e,r,o,u,i,a;return null==n&&(n={}),i=l.option(n.method,"get").toLowerCase(),"get"===i?location.href=t:$.rails?(a=n.target,o=$.rails.csrfToken(),r=$.rails.csrfParam(),e=$("<form method='post' action='"+t+"'></form>"),u="<input name='_method' value='"+i+"' type='hidden' />",l.isDefined(r)&&l.isDefined(o)&&(u+="<input name='"+r+"' value='"+o+"' type='hidden' />"),a&&e.attr("target",a),e.hide().append(u).appendTo("body"),e.submit()):error("Can't fake a "+i.toUpperCase()+" request without Rails UJS")},c=function(){return location.href},o=function(){var t,n,e,r,o,u,i,a;return window.console||(window.console={}),t=function(){},(n=window.console).log||(n.log=t),(e=window.console).info||(e.info=t),(r=window.console).error||(r.error=t),(o=window.console).debug||(o.debug=t),(u=window.console).group||(u.group=t),(i=window.console).groupCollapsed||(i.groupCollapsed=t),(a=window.console).groupEnd||(a.groupEnd=t)},s=function(n){var e,r;return e=void 0,r=!1,function(){var o;return o=1<=arguments.length?t.call(arguments,0):[],r?e:(r=!0,e=n.apply(null,o))}},r=s(function(){return l.isDefined(history.pushState)}),n=s(function(){return"transition"in document.documentElement.style}),e=s(function(){return"oninput"in document.createElement("input")}),u=function(){var t,n,e,r,o;return o=$.fn.jquery,r=o.split("."),n=parseInt(r[0]),e=parseInt(r[1]),t=n>=2||1===n&&e>=9,t||l.error("jQuery %o found, but Up.js requires 1.9+",o)},i=s(function(){return l.isDefined(document.addEventListener)}),{url:c,ensureConsoleExists:o,loadPage:a,canPushState:r,canCssAnimation:n,canInputEvent:e,isSupported:i,ensureRecentJquery:u}}()}.call(this),function(){var t=[].slice;up.bus=function(){var n,e,r,o,u,i,a,s;return s=up.util,n={},r={},e=function(t){return n[t]||(n[t]=[])},a=function(){var t,e,o;r={},o=[];for(e in n)t=n[e],o.push(r[e]=s.copy(t));return o},i=function(){return n=s.copy(r)},u=function(t,n){return e(t).push(n)},o=function(){var n,r,o;return o=arguments[0],n=2<=arguments.length?t.call(arguments,1):[],s.debug("Emitting event %o with args %o",o,n),r=e(o),s.each(r,function(t){return t.apply(null,n)})},u("framework:ready",a),u("framework:reset",i),{on:u,emit:o}}()}.call(this),function(){up.viewport=function(){var t,n,e,r,o,u,i;return i=up.util,n={duration:0,view:"body",easing:"swing"},e=function(t){return i.extend(n,t)},t="up-scroll-promise",u=function(e,o,u){var a,s,l,c,p;return a=$(e),u=i.options(u),l=i.option(u.duration,n.duration),c=i.option(u.easing,n.easing),r(a),l>0?(s=$.Deferred(),a.data(t,s),s.then(function(){return a.removeData(t),a.finish()}),p={scrollTop:o},a.animate(p,{duration:l,easing:c,complete:function(){return s.resolve()}}),s):(a.scrollTop(o),i.resolvedDeferred())},r=function(n){return $(n).each(function(){var n;return(n=$(this).data(t))?n.resolve():void 0})},o=function(t,e){var r,o,a,s,l,c,p,f,d,m,h;return e=i.options(e),m=i.option(e.view,n.view),f=i.option(e.padding,n.padding),r=$(t),o=$(m),h=o.height(),d=o.scrollTop(),c=d,p=d+h,l=r.position().top,a=c>l-f,s=l>p-f,a||s?(d=l-f,d=Math.max(d,0),d=Math.min(d,h-1),u(o,d,e)):i.resolvedDeferred()},{reveal:o,scroll:u,finishScrolling:r,defaults:e}}(),up.scroll=up.viewport.scroll,up.reveal=up.viewport.reveal}.call(this),function(){up.flow=function(){var t,n,e,r,o,u,i,a,s,l,c,p,f,d,m,h;return h=up.util,f=function(t,n){var e;return e=$(t),h.isPresent(n)&&(n=h.normalizeUrl(n)),e.attr("up-source",n)},d=function(t){var n;return n=$(t).closest("[up-source]"),h.presence(n.attr("up-source"))||up.browser.url()},l=function(t,n,e){var r,u,i;return e=h.options(e),i=h.presence(t)?t:h.createSelectorFromElement($(t)),up.browser.canPushState()||h.castsToFalse(e.history)?(u={url:n,method:e.method,selector:i,cache:e.cache},r=up.proxy.ajax(u),r.done(function(t,r,a){var s,l;return(s=h.locationFromXhr(a))&&(h.debug("Location from server: %o",s),l={url:s,method:h.methodFromXhr(a),selector:i},up.proxy.alias(u,l),n=s),(h.isMissing(e.history)||h.castsToTrue(e.history))&&(e.history=n),(h.isMissing(e.source)||h.castsToTrue(e.source))&&(e.source=n),e.preload?void 0:o(i,t,e)}),r.fail(h.error),r):void(e.preload||up.browser.loadPage(n,h.only(e,"method")))},o=function(t,n,e){var o,s,l,c,p,f,d,v;for(e=h.options(e,{historyMethod:"push"}),h.castsToFalse(e.history)&&(e.history=null),h.castsToFalse(e.scroll)&&(e.scroll=null),e.source=h.option(e.source,e.history),l=i(n),e.title||(e.title=l.title()),d=u(t,e),v=[],p=0,f=d.length;f>p;p++)c=d[p],s=r(c.selector),o=l.find(c.selector),v.push(a(s,e).then(function(){return m(s,o,c.pseudoClass,c.transition,e)}));return v},r=function(t){var n;return n=t+":not(.up-ghost, .up-destroying)",h.presence($(".up-popup "+n))||h.presence($(".up-modal "+n))||h.presence($(n))||h.error("Could not find selector %o in current body HTML",t)},i=function(t){var n;return n=h.createElementFromHtml(t),{title:function(){var t;return null!=(t=n.querySelector("title"))?t.textContent:void 0},find:function(e){var r;return(r=n.querySelector(e))?$(r):h.error("Could not find selector %o in response %o",e,t)}}},a=function(t,n){return up.motion.finish(t),p(t,n.scroll)},p=function(t,n){return n?up.reveal(t,{view:n}):h.resolvedDeferred()},e=function(n,e){return"function"==typeof e.insert&&e.insert(n),e.history&&(e.title&&(document.title=e.title),up.history[e.historyMethod](e.history)),f(n,e.source),t(n),up.ready(n)},m=function(t,r,o,u,i){var a,s;return u||(u="none"),o?(s="before"===o?"prepend":"append",a=r.children(),t[s](r.contents()),h.copyAttributes(r,t),e(a,i),up.animate(r,u,i)):n(t,{animation:function(){return r.insertBefore(t),e(r,i),t.is("body")&&"none"!==u&&h.error("Cannot apply transitions to body-elements (%o)",u),up.morph(t,r,u,i)}})},u=function(t,n){var e,r,o,u,i,a,s,l,c,p,f;for(s=n.transition||n.animation||"none",e=/\ *,\ */,r=t.split(e),h.isPresent(s)&&(l=s.split(e)),f=[],o=c=0,p=r.length;p>c;o=++c)u=r[o],i=u.match(/^(.+?)(?:\:(before|after))?$/),a=l[o]||h.last(l),f.push({selector:i[1],pseudoClass:i[2],transition:a});return f},t=function(t){var n,e;return e="[autofocus]:last",n=h.findWithSelf(t,e),n.length&&n.get(0)!==document.activeElement?n.focus():void 0},n=function(t,n){var e,r,o;return e=$(t),n=h.options(n,{animation:"none"}),r=up.motion.animateOptions(n),e.addClass("up-destroying"),h.isPresent(n.url)&&up.history.push(n.url),h.isPresent(n.title)&&(document.title=n.title),up.bus.emit("fragment:destroy",e),o=h.presence(n.animation,h.isPromise)||up.motion.animate(e,n.animation,r),o.then(function(){return e.remove()})},s=function(t,n){var e;return n=h.options(n,{cache:!1}),e=n.url||d(t),l(t,e,n)},c=function(){return up.bus.emit("framework:reset")},up.bus.on("app:ready",function(){return f(document.body,up.browser.url())}),{replace:l,reload:s,destroy:n,implant:o,reset:c}}(),up.replace=up.flow.replace,up.reload=up.flow.reload,up.destroy=up.flow.destroy,up.reset=up.flow.reset}.call(this),function(){var t=[].slice;up.magic=function(){var n,e,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g;return g=up.util,n="up-destroyable",e="up-destroyer",f=[],l=null,p=function(t,n,e){var r,o;if(up.browser.isSupported())return r=[t,n,function(t){return e.apply(this,[t,$(this),a(this)])}],f.push(r),(o=$(document)).on.apply(o,r)},u=[],s=null,o=function(){var n,e,r,o;return o=arguments[0],n=2<=arguments.length?t.call(arguments,1):[],up.browser.isSupported()?(e=n.pop(),r=g.options(n[0],{batch:!1}),u.push({selector:o,callback:e,batch:r.batch})):void 0},r=function(t,r,o){var u;return g.debug("Applying awakener %o on %o",t.selector,o),u=t.callback.apply(o,[r,a(r)]),g.isFunction(u)?(r.addClass(n),r.data(e,u)):void 0},i=function(t){var n,e,o,i,a;for(g.debug("Compiling fragment %o",t),a=[],o=0,i=u.length;i>o;o++)e=u[o],n=g.findWithSelf(t,e.selector),a.push(n.length?e.batch?r(e,n,n.get()):n.each(function(){return r(e,$(this),this)}):void 0);return a},c=function(t){return g.findWithSelf(t,"."+n).each(function(){var t,n;return t=$(this),(n=t.data(e))()})},a=function(t){var n,e;return n=$(t),e=n.attr("up-data"),g.isString(e)&&""!==g.trim(e)?JSON.parse(e):{}},v=function(){return l=g.copy(f),s=g.copy(u)},h=function(){var t,n,e,r;for(n=0,e=f.length;e>n;n++)t=f[n],g.contains(l,t)||(r=$(document)).off.apply(r,t);return f=g.copy(l),u=g.copy(s)},m=function(t){var n;return n=$(t),up.bus.emit("fragment:ready",n),n},d=function(t){return p("keydown","body",function(n){return g.escapePressed(n)?t(n):void 0})},up.bus.on("app:ready",function(){return m(document.body)}),up.bus.on("fragment:ready",i),up.bus.on("fragment:destroy",c),up.bus.on("framework:ready",v),up.bus.on("framework:reset",h),{awaken:o,on:p,ready:m,onEscape:d,data:a}}(),up.awaken=up.magic.awaken,up.on=up.magic.on,up.ready=up.magic.ready}.call(this),function(){up.history=function(){var t,n,e,r,o,u;return u=up.util,t=function(t){return u.normalizeUrl(t,{hash:!0})===u.normalizeUrl(up.browser.url(),{hash:!0})},o=function(e,r){return r=u.options(r,{force:!1}),r.force||!t(e)?n("replace",e):void 0},r=function(e){return t(e)?void 0:n("push",e)},n=function(t,n){return up.browser.canPushState()?(t+="State",window.history[t]({fromUp:!0},"",n)):u.error("This browser doesn't support history.pushState")},e=function(t){var n;return n=t.originalEvent.state,(null!=n?n.fromUp:void 0)?(u.debug("Restoring state %o (now on "+up.browser.url()+")",n),up.visit(up.browser.url(),{historyMethod:"replace"})):u.debug("Discarding unknown state %o",n)},up.browser.canPushState()&&setTimeout(function(){return $(window).on("popstate",e),o(up.browser.url(),{force:!0})},200),{push:r,replace:o}}()}.call(this),function(){up.motion=function(){var t,n,e,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g,y,b,w,k;return w=up.util,o={},a={},b={},s={},i={duration:300,delay:0,easing:"ease"},l=function(t){return w.extend(i,t)},n=function(t,r,o){var i;return i=$(t),p(i),o=e(o),w.isFunction(r)?u(r(i,o),r):w.isString(r)?n(i,c(r),o):w.isHash(r)?w.cssAnimate(i,r,o):w.error("Unknown animation type %o",r)},e=function(t,n){var e;return null==n&&(n=null),t=w.options(t),e={},e.easing=w.option(t.easing,null!=n?n.attr("up-easing"):void 0,i.easing),e.duration=Number(w.option(t.duration,null!=n?n.attr("up-duration"):void 0,i.duration)),e.delay=Number(w.option(t.delay,null!=n?n.attr("up-delay"):void 0,i.delay)),e},c=function(t){return o[t]||w.error("Unknown animation %o",r)},t="up-ghosting-promise",k=function(n,e,r){var o,u,i,a;return u=null,o=null,w.temporaryCss(e,{display:"none"},function(){return u=w.prependGhost(n).addClass("up-destroying")}),w.temporaryCss(n,{display:"none"},function(){return o=w.prependGhost(e)}),n.css({visibility:"hidden"}),a=w.temporaryCss(e,{display:"none"}),i=r(u,o),n.data(t,i),e.data(t,i),i.then(function(){return n.removeData(t),e.removeData(t),u.remove(),o.remove(),n.css({display:"none"}),a()}),i},p=function(t){return $(t).each(function(){var t;return t=$(this),w.finishCssAnimate(t),f(t)})},f=function(n){var e;return(e=n.data(t))?(w.debug("Canceling existing ghosting on %o",n),"function"==typeof e.resolve?e.resolve():void 0):void 0},u=function(t,n){return w.isDeferred(t)?t:w.error("Did not return a promise with .then and .resolve methods: %o",n)},d=function(t,r,i,a){var s,l,c,f,h;return up.browser.canCssAnimation()?(a=e(a),l=$(t),s=$(r),p(l),p(s),"none"===i?m():(h=w.presence(i,w.isFunction)||b[i])?k(l,s,function(t,n){return u(h(t,n,a),i)}):(c=o[i])?(l.hide(),n(s,c,a)):w.isString(i)&&i.indexOf("/")>=0?(f=i.split("/"),h=function(t,e,r){return v(n(t,f[0],r),n(e,f[1],r))},d(l,s,h,a)):w.error("Unknown transition %o",i)):w.resolvedDeferred()},y=function(t,n){return b[t]=n},r=function(t,n){return o[t]=n},g=function(){return a=w.copy(o),s=w.copy(b)},h=function(){return o=w.copy(a),b=w.copy(s)},v=w.resolvableWhen,m=w.resolvedDeferred,r("none",m),r("fade-in",function(t,e){return t.css({opacity:0}),n(t,{opacity:1},e)}),r("fade-out",function(t,e){return t.css({opacity:1}),n(t,{opacity:0},e)}),r("move-to-top",function(t,e){var r,o;return r=w.measure(t),o=r.top+r.height,t.css({"margin-top":"0px"}),n(t,{"margin-top":"-"+o+"px"},e)}),r("move-from-top",function(t,e){var r,o;return r=w.measure(t),o=r.top+r.height,t.css({"margin-top":"-"+o+"px"}),n(t,{"margin-top":"0px"},e)}),r("move-to-bottom",function(t,e){var r,o;return r=w.measure(t),o=w.clientSize().height-r.top,t.css({"margin-top":"0px"}),n(t,{"margin-top":o+"px"},e)}),r("move-from-bottom",function(t,e){var r,o;return r=w.measure(t),o=w.clientSize().height-r.top,t.css({"margin-top":o+"px"}),n(t,{"margin-top":"0px"},e)}),r("move-to-left",function(t,e){var r,o;return r=w.measure(t),o=r.left+r.width,t.css({"margin-left":"0px"}),n(t,{"margin-left":"-"+o+"px"},e)}),r("move-from-left",function(t,e){var r,o;return r=w.measure(t),o=r.left+r.width,t.css({"margin-left":"-"+o+"px"}),n(t,{"margin-left":"0px"},e)}),r("move-to-right",function(t,e){var r,o;return r=w.measure(t),o=w.clientSize().width-r.left,t.css({"margin-left":"0px"}),n(t,{"margin-left":o+"px"},e)}),r("move-from-right",function(t,e){var r,o;return r=w.measure(t),o=w.clientSize().width-r.left,t.css({"margin-left":o+"px"}),n(t,{"margin-left":"0px"},e)}),r("roll-down",function(t,e){var r,o;return r=t.height(),o=w.temporaryCss(t,{height:"0px",overflow:"hidden"}),n(t,{height:r+"px"},e).then(o)}),y("none",m),y("move-left",function(t,e,r){return v(n(t,"move-to-left",r),n(e,"move-from-right",r))}),y("move-right",function(t,e,r){return v(n(t,"move-to-right",r),n(e,"move-from-left",r))}),y("move-up",function(t,e,r){return v(n(t,"move-to-top",r),n(e,"move-from-bottom",r))}),y("move-down",function(t,e,r){return v(n(t,"move-to-bottom",r),n(e,"move-from-top",r))}),y("cross-fade",function(t,e,r){return v(n(t,"fade-out",r),n(e,"fade-in",r))}),up.bus.on("framework:ready",g),up.bus.on("framework:reset",h),{morph:d,animate:n,animateOptions:e,finish:p,transition:y,animation:r,defaults:l,none:m,when:v}}(),up.transition=up.motion.transition,up.animation=up.motion.animation,up.morph=up.motion.morph,up.animate=up.motion.animate}.call(this),function(){up.proxy=function(){var t,n,e,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g,y,b,w,k,$,C,T;return l={preloadDelay:75,cacheSize:70,cacheExpiry:3e5},c=function(t){return T.extend(l,t)},o={},T=up.util,t=null,p=null,u=function(t){return v(t),[t.url,t.method,t.selector].join("|")},C=function(){var t,n,e;return t=T.keys(o),t.length>l.cacheSize&&(n=null,e=null,T.each(t,function(t){var r,u;return r=o[t],u=r.timestamp,!e||e>u?(n=t,e=u):void 0}),n)?delete o[n]:void 0},$=function(){return(new Date).valueOf()},v=function(t){return!T.isHash(t),t._requestNormalized||(t.method=T.normalizeMethod(t.method),t.url&&(t.url=T.normalizeUrl(t.url)),t.selector||(t.selector="body"),t._requestNormalized=!0),t},r=function(t,n){var e;return T.debug("Aliasing %o to %o",t,n),(e=d(t))?w(n,e):void 0},e=function(t){var n,e,r,o;return n=T.castsToTrue(t.cache),e=T.castsToFalse(t.cache),o=T.only(t,"url","method","selector"),h(o)||n?(r=d(o))&&!e||(r=T.ajax(o),w(o,r)):(s(),r=T.ajax(o)),r},n=["GET","OPTIONS","HEAD"],h=function(t){return v(t),T.contains(n,t.method)},f=function(t){return h(t)||T.error("Won't preload non-GET request %o",t)},m=function(t){var n;return n=$()-t.timestamp,n<l.cacheExpiry},d=function(t){var n,e;return n=u(t),(e=o[n])?m(e)?(T.debug("Cache hit for %o (%o)",t.url,t),e):(T.debug("Discarding stale cache entry for %o (%o)",t.url,t),void y(t)):void T.debug("Cache miss for %o (%o)",t.url,t)},w=function(t,n){var e;return C(),e=u(t),n.timestamp=$(),o[e]=n,n},y=function(t){var n;return n=u(t),delete o[n]},s=function(){return o={}},a=function(n){var e,r;return r=parseInt(T.presentAttr(n,"up-delay"))||l.preloadDelay,n.is(t)?void 0:(t=n,i(),e=function(){return g(n)},k(e,r))},k=function(t,n){return p=setTimeout(t,n)},i=function(){return clearTimeout(p),p=null},g=function(t,n){return n=T.options(),f(n),T.debug("Preloading %o",t),n.preload=!0,up.link.follow(t,n)},b=function(){return i(),o={}},up.bus.on("framework:reset",b),up.on("mouseover mousedown touchstart","[up-preload]",function(t,n){return up.link.childClicked(t,n)?void 0:a(up.link.resolve(n))}),{preload:g,ajax:e,get:d,set:w,alias:r,clear:s,remove:y,defaults:c}}()}.call(this),function(){up.link=function(){var t,n,e,r,o,u;return o=up.util,u=function(t,n){return o.debug("Visiting "+t),up.replace("body",t,n)},e=function(t,n){var e,r,u;return e=$(t),n=o.options(n),u=o.option(e.attr("href"),e.attr("up-follow")),r=o.option(n.target,e.attr("up-target"),"body"),n.transition=o.option(n.transition,e.attr("up-transition"),e.attr("up-animation")),n.history=o.option(n.history,e.attr("up-history")),n.scroll=o.option(n.scroll,e.attr("up-scroll"),"body"),n.cache=o.option(n.cache,e.attr("up-cache")),n=o.merge(n,up.motion.animateOptions(n,e)),up.replace(r,u,n)},r=function(t){var n,e;return n=$(t),e=n.attr("up-follow"),n.is("a")||o.isPresent(e)&&!o.castsToTrue(e)?n:n.find("a:first")},up.on("click","a[up-target]",function(t,n){return t.preventDefault(),n.is("[up-instant]")?void 0:e(n)}),up.on("mousedown","a[up-target][up-instant]",function(n,e){return t(n,e)?(n.preventDefault(),up.follow(e)):void 0}),n=function(t,n){var e,r;return e=$(t.target),r=e.closest("a, [up-follow]"),r.length&&n.find(r).length},t=function(t,e){return o.isUnmodifiedMouseEvent(t)&&!n(t,e)},up.on("click","[up-follow]",function(t,o){return n(t,o)||(t.preventDefault(),o.is("[up-instant]"))?void 0:e(r(o))}),up.on("mousedown","[up-follow][up-instant]",function(n,e){return t(n,e)?(n.preventDefault(),up.follow(r(e))):void 0}),up.awaken("[up-dash]",function(t){var n,e;return e=t.attr("up-dash"),n={"up-preload":"true","up-instant":"true"},o.isBlank(e)||o.castsToTrue(e)?n["up-follow"]="":n["up-target"]=e,o.setMissingAttrs(t,n),t.removeAttr("up-dash")}),{visit:u,follow:e,resolve:r,childClicked:n}}(),up.visit=up.link.visit,up.follow=up.link.follow}.call(this),function(){up.form=function(){var observe,submit,u;return u=up.util,submit=function(t,n){var e,r,o,i,a,s,l,c,p,f,d,m;return e=$(t).closest("form"),n=u.options(n),c=u.option(n.target,e.attr("up-target"),"body"),o=u.option(n.failTarget,e.attr("up-fail-target"),function(){return u.createSelectorFromElement(e)}),a=u.option(n.history,e.attr("up-history"),!0),p=u.option(n.transition,e.attr("up-transition")),i=u.option(n.failTransition,e.attr("up-fail-transition"),p),s=u.option(n.method,e.attr("up-method"),e.attr("data-method"),e.attr("method"),"post").toUpperCase(),r=up.motion.animateOptions(n,e),m=u.option(n.cache,e.attr("up-cache")),d=u.option(n.url,e.attr("action"),up.browser.url()),e.addClass("up-active"),up.browser.canPushState()||u.castsToFalse(a)?(l={url:d,type:s,data:e.serialize(),selector:c,cache:m},f=function(t){var n;return d=a?u.castsToFalse(a)?!1:u.isString(a)?a:(n=u.locationFromXhr(t))?n:"GET"===l.type?l.url+"?"+l.data:void 0:void 0,u.option(d,!1)},u.ajax(l).always(function(){return e.removeClass("up-active")}).done(function(t,n,e){var o;return o=u.merge(r,{history:f(e),transition:p}),up.flow.implant(c,t,o)}).fail(function(t){var n,e;return e=t.responseText,n=u.merge(r,{transition:i}),up.flow.implant(o,e,n)})):void e.get(0).submit()},observe=function(fieldOrSelector,options){var $field,callback,callbackPromise,callbackTimer,changeEvents,check,clearTimer,codeOnChange,delay,knownValue,nextCallback,runNextCallback;return $field=$(fieldOrSelector),options=u.options(options),delay=u.option($field.attr("up-delay"),options.delay,0),delay=parseInt(delay),knownValue=null,callback=null,callbackTimer=null,(codeOnChange=$field.attr("up-observe"))?callback=function(value,$field){return eval(codeOnChange)}:options.change?callback=options.change:u.error("up.observe: No change callback given"),callbackPromise=u.resolvedPromise(),nextCallback=null,runNextCallback=function(){var t;return nextCallback?(t=nextCallback(),nextCallback=null,t):void 0},check=function(){var t,n;return n=$field.val(),t=u.isNull(knownValue),knownValue===n||(knownValue=n,t)?void 0:(clearTimer(),nextCallback=function(){return callback.apply($field.get(0),[n,$field])},callbackTimer=setTimeout(function(){return callbackPromise.then(function(){var t;return t=runNextCallback(),callbackPromise=u.isPromise(t)?t:u.resolvedPromise()})},delay))},clearTimer=function(){return clearTimeout(callbackTimer)},changeEvents=up.browser.canInputEvent()?"input change":"input change keypress paste cut click propertychange",$field.on(changeEvents,check),check(),clearTimer},up.on("submit","form[up-target]",function(t,n){return t.preventDefault(),submit(n)}),up.awaken("[up-observe]",function(t){return observe(t)}),{submit:submit,observe:observe}}(),up.submit=up.form.submit,up.observe=up.form.observe}.call(this),function(){up.popup=function(){var t,n,e,r,o,u,i,a,s,l,c,p,f;return p=up.util,e={openAnimation:"fade-in",closeAnimation:"fade-out",origin:"bottom-right"},o=function(t){return p.extend(e,t)},s=function(t,n,e){var r,o;return o=p.measure(t,{full:!0}),r=function(){switch(e){case"bottom-right":return{right:o.right,top:o.top+o.height};case"bottom-left":return{left:o.left,top:o.bottom+o.height};case"top-right":return{right:o.right,bottom:o.top};case"top-left":return{left:o.left,bottom:o.top};default:return p.error("Unknown origin %o",e)}}(),n.attr("up-origin",e),n.css(r),i(n)},i=function(t){var n,e,r,o,u,i,a;if(e=p.measure(t,{full:!0}),r=null,o=null,e.right<0&&(r=-e.right),e.bottom<0&&(o=-e.bottom),e.left<0&&(r=e.left),e.top<0&&(o=e.top),r&&((u=parseInt(t.css("left")))?t.css("left",u-r):(i=parseInt(t.css("right")))&&t.css("right",i+r)),o){if(a=parseInt(t.css("top")))return t.css("top",a-o);if(n=parseInt(t.css("bottom")))return t.css("bottom",n+o)}},l=function(){var t;return t=$(".up-popup"),t.attr("up-previous-url",up.browser.url()),t.attr("up-previous-title",document.title)},u=function(){var t;return t=$(".up-popup"),t.removeAttr("up-previous-url"),t.removeAttr("up-previous-title")},r=function(t,n,e){var r,o;return o=p.$createElementFromSelector(".up-popup"),e&&o.attr("up-sticky",""),r=p.$createElementFromSelector(n),r.appendTo(o),o.appendTo(document.body),l(),o.hide(),o},f=function(t,n,e,r,o){return n.show(),s(t,n,e),up.animate(n,r,o)},a=function(t,o){var u,i,a,s,l,c,d,m,h;return u=$(t),o=p.options(o),h=p.option(o.url,u.attr("href")),d=p.option(o.target,u.attr("up-popup"),"body"),c=p.option(o.origin,u.attr("up-origin"),e.origin),s=p.option(o.animation,u.attr("up-animation"),e.openAnimation),m=p.option(o.sticky,u.is("[up-sticky]")),l=up.browser.canPushState()?p.option(o.history,u.attr("up-history"),!1):!1,a=up.motion.animateOptions(o,u),n(),i=r(u,d,m),up.replace(d,h,{history:l,insert:function(){return f(u,i,c,s,a)}})},c=function(){var t;return t=$(".up-popup"),t.is(".up-destroying")?void 0:t.find("[up-source]").attr("up-source")},n=function(t){var n;return n=$(".up-popup"),n.length?(t=p.options(t,{animation:e.closeAnimation,url:n.attr("up-previous-url"),title:n.attr("up-previous-title")}),up.destroy(n,t)):void 0},t=function(){return $(".up-popup").is("[up-sticky]")?void 0:n()},up.on("click","a[up-popup]",function(t,e){return t.preventDefault(),e.is(".up-current")?n():a(e)}),up.on("click","body",function(t){var e;return e=$(t.target),e.closest(".up-popup").length||e.closest("[up-popup]").length?void 0:n()}),up.bus.on("fragment:ready",function(n){return n.closest(".up-popup").length?void 0:(u(),t())}),up.magic.onEscape(function(){return n()}),up.on("click","[up-close]",function(t,e){return e.closest(".up-popup")?n():void 0}),up.bus.on("framework:reset",n),{open:a,close:n,source:c,defaults:o}}()}.call(this),function(){var t=[].slice;up.modal=function(){var n,e,r,o,u,i,a,s,l,c,p,f;return p=up.util,r={width:"auto",height:"auto",openAnimation:"fade-in",closeAnimation:"fade-out",closeLabel:"X",template:function(t){return'<div class="up-modal">\n <div class="up-modal-dialog">\n <div class="up-modal-close" up-close>'+t.closeLabel+'</div>\n <div class="up-modal-content"></div>\n </div>\n</div>'}},u=function(t){return p.extend(r,t)},c=function(){var t;return t=r.template,p.isFunction(t)?t(r):t},s=function(){var t;return t=$(".up-modal"),t.attr("up-previous-url",up.browser.url()),t.attr("up-previous-title",document.title)},i=function(){var t;return t=$(".up-modal"),t.removeAttr("up-previous-url"),t.removeAttr("up-previous-title")
2
2
  },o=function(t,n,e,r){var o,u,i,a;return i=$(c()),r&&i.attr("up-sticky",""),i.attr("up-previous-url",up.browser.url()),i.attr("up-previous-title",document.title),u=i.find(".up-modal-dialog"),p.isPresent(n)&&u.css("width",n),p.isPresent(e)&&u.css("height",e),o=u.find(".up-modal-content"),a=p.$createElementFromSelector(t),a.appendTo(o),i.appendTo(document.body),s(),i.hide(),i},f=function(t,n,e){return t.show(),up.animate(t,n,e)},a=function(){var n,u,i,a,s,l,c,d,m,h,v,g;return s=1<=arguments.length?t.call(arguments,0):[],!p.isObject(s[0])||p.isElement(s[0])||p.isJQuery(s[0])?(n=$(s[0]),d=s[1]):(n=p.nullJquery(),d=s[0]),d=p.options(d),v=p.option(d.url,n.attr("href"),n.attr("up-href")),m=p.option(d.target,n.attr("up-modal"),"body"),g=p.option(d.width,n.attr("up-width"),r.width),l=p.option(d.height,n.attr("up-height"),r.height),a=p.option(d.animation,n.attr("up-animation"),r.openAnimation),h=p.option(d.sticky,n.is("[up-sticky]")),c=up.browser.canPushState()?p.option(d.history,n.attr("up-history"),!0):!1,i=up.motion.animateOptions(d,n),e(),u=o(m,g,l,h),up.replace(m,v,{history:c,insert:function(){return f(u,a,i)}})},l=function(){var t;return t=$(".up-modal"),t.is(".up-destroying")?void 0:t.find("[up-source]").attr("up-source")},e=function(t){var n;return n=$(".up-modal"),n.length?(t=p.options(t,{animation:r.closeAnimation,url:n.attr("up-previous-url"),title:n.attr("up-previous-title")}),up.destroy(n,t)):void 0},n=function(){return $(".up-modal").is("[up-sticky]")?void 0:(i(),e())},up.on("click","a[up-modal]",function(t,n){return t.preventDefault(),n.is(".up-current")?e():a(n)}),up.on("click","body",function(t){var n;return n=$(t.target),n.closest(".up-modal-dialog").length||n.closest("[up-modal]").length?void 0:e()}),up.bus.on("fragment:ready",function(t){return t.closest(".up-modal").length?void 0:n()}),up.magic.onEscape(function(){return e()}),up.on("click","[up-close]",function(t,n){return n.closest(".up-modal")?e():void 0}),up.bus.on("framework:reset",e),{open:a,close:e,source:l,defaults:u}}()}.call(this),function(){up.tooltip=function(){var t,n,e,r,o;return o=up.util,r=function(t,n,e){var r,u,i;return u=o.measure(t),i=o.measure(n),r=function(){switch(e){case"top":return{left:u.left+.5*(u.width-i.width),top:u.top-i.height};case"bottom":return{left:u.left+.5*(u.width-i.width),top:u.top+u.height};default:return o.error("Unknown origin %o",e)}}(),n.attr("up-origin",e),n.css(r)},n=function(t){return o.$createElementFromSelector(".up-tooltip").html(t).appendTo(document.body)},e=function(e,u){var i,a,s,l,c;return null==u&&(u={}),i=$(e),l=o.option(u.html,i.attr("up-tooltip"),i.attr("title")),c=o.option(u.origin,i.attr("up-origin"),"top"),s=o.option(u.animation,i.attr("up-animation"),"fade-in"),t(),a=n(l),r(i,a,c),up.animate(a,s,u)},t=function(t){var n;return n=$(".up-tooltip"),n.length?(t=o.options(t,{animation:"fade-out"}),up.destroy(n,t)):void 0},up.awaken("[up-tooltip]",function(n){return n.on("mouseover",function(){return e(n)}),n.on("mouseout",function(){return t()})}),up.on("click","body",function(){return t()}),up.bus.on("framework:reset",t),up.magic.onEscape(function(){return t()}),{open:e,close:t}}()}.call(this),function(){up.navigation=function(){var t,n,e,r,o,u,i,a,s,l,c,p,f,d;return f=up.util,t="up-active",n="up-current",e=["a[href]","a[up-target]","[up-follow]","[up-modal]","[up-popup]","[up-href]"],o=e.join(", "),u=function(){var t,n,r;for(r=[],t=0,n=e.length;n>t;t++)p=e[t],r.push(p+"[up-instant]");return r}().join(", "),r="."+t,s=function(t){return f.isPresent(t)?f.normalizeUrl(t,{search:!1,stripTrailingSlash:!0}):void 0},c=function(t){var n,e,r,o,u,i,a;if(o=[],n=up.link.resolve(t))for(a=["href","up-follow","up-href"],u=0,i=a.length;i>u;u++)e=a[u],(r=f.presentAttr(n,e))&&(r=s(r),o.push(r));return o},a=function(){var t;return t=f.stringSet([s(up.browser.url()),s(up.modal.source()),s(up.popup.source())]),f.each($(o),function(e){var r,o;return r=$(e),o=c(r),t.includesAny(o)?r.addClass(n):r.removeClass(n)})},l=function(n){return d(),n=i(n),n.addClass(t)},i=function(t){return f.presence(t.parents(o))||t},d=function(){return $(r).removeClass(t)},up.on("click",o,function(t,n){return n.is("[up-instant]")?void 0:l(n)}),up.on("mousedown",u,function(t,n){return f.isUnmodifiedMouseEvent(t)?l(n):void 0}),up.bus.on("fragment:ready",function(){return d(),a()}),up.bus.on("fragment:destroy",function(t){return t.is(".up-modal, .up-popup")?a():void 0})}()}.call(this),function(){up.slot=function(){var t,n,e;return e=up.util,n=function(t){return""!==e.trim(t.html())},t=function(t){return e.findWithSelf(t,"[up-slot]").each(function(){var t;return t=$(this),n(t)?void 0:t.hide()})},up.bus.on("fragment:ready",t)}()}.call(this),function(){up.browser.ensureRecentJquery(),up.browser.isSupported()&&(up.browser.ensureConsoleExists(),up.bus.emit("framework:ready"),$(document).on("ready",function(){return up.bus.emit("app:ready")}))}.call(this);
@@ -47,10 +47,10 @@ up.form = (->
47
47
  Defaults to the form's `up-method`, `data-method` or `method` attribute, or to `'post'`
48
48
  if none of these attributes are given.
49
49
  @param {String} [options.target]
50
- The selector to update when the form submission succeeds.
50
+ The selector to update when the form submission succeeds (server responds with status 200).
51
51
  Defaults to the form's `up-target` attribute, or to `'body'`.
52
52
  @param {String} [options.failTarget]
53
- The selector to update when the form submission succeeds.
53
+ The selector to update when the form submission fails (server responds with non-200 status).
54
54
  Defaults to the form's `up-fail-target` attribute, or to an auto-generated
55
55
  selector that matches the form itself.
56
56
  @param {Boolean|String} [options.history=true]
@@ -100,8 +100,8 @@ up.form = (->
100
100
  request = {
101
101
  url: url
102
102
  type: httpMethod
103
- data: $form.serialize(),
104
- selector: successSelector,
103
+ data: $form.serialize()
104
+ selector: successSelector
105
105
  cache: useCache
106
106
  }
107
107
 
@@ -132,15 +132,37 @@ up.form = (->
132
132
  up.flow.implant(failureSelector, html, failureOptions)
133
133
 
134
134
  ###*
135
- Observes an input field and executes code when its value changes.
135
+ Observes a form field and runs a callback when its value changes.
136
+ This is useful for observing text fields while the user is typing.
137
+
138
+ For instance, the following would submit the form whenever the
139
+ text field value changes:
136
140
 
137
141
  up.observe('input', { change: function(value, $input) {
138
142
  up.submit($input)
139
143
  } });
140
144
 
141
- This is useful for observing text fields while the user is typing,
142
- since browsers will only fire a `change` event once the user
143
- blurs the text field.
145
+ \#\#\#\# Preventing concurrency
146
+
147
+ Firing asynchronous code after a form field can cause
148
+ [concurrency issues](https://makandracards.com/makandra/961-concurrency-issues-with-find-as-you-type-boxes).
149
+
150
+ To mitigate this, `up.observe` will try to never run a callback
151
+ before the previous callback has completed.
152
+ To take advantage of this, your callback code must return a promise.
153
+ Note that all asynchronous Up.js functions return promises.
154
+
155
+ \#\#\#\# Throttling
156
+
157
+ If you are concerned about fast typists causing too much
158
+ load on your server, you can use a `delay` option to wait before
159
+ executing the callback:
160
+
161
+ up.observe('input', {
162
+ delay: 100,
163
+ change: function(value, $input) { up.submit($input) }
164
+ });
165
+
144
166
 
145
167
  @method up.observe
146
168
  @param {Element|jQuery|String} fieldOrSelector
@@ -241,14 +263,15 @@ up.form = (->
241
263
  @method form[up-target]
242
264
  @ujs
243
265
  @param {String} up-target
266
+ The selector to replace if the form submission is successful (200 status code).
244
267
  @param {String} [up-fail-target]
245
268
  @param {String} [up-transition]
246
269
  @param {String} [up-fail-transition]
247
270
  @param {String} [up-history]
248
271
  @param {String} [up-method]
249
- The HTTP method to be used to submit the form
250
- (`get`, `post`, `put`, `delete`, `patch`).
251
- Alternately you can use an attribute `data-method` (Rails UJS)
272
+ The HTTP method to be used to submit the form (`get`, `post`, `put`, `delete`, `patch`).
273
+ Alternately you can use an attribute `data-method`
274
+ ([Rails UJS](https://github.com/rails/jquery-ujs/wiki/Unobtrusive-scripting-support-for-jQuery))
252
275
  or `method` (vanilla HTML) for the same purpose.
253
276
  ###
254
277
  up.on 'submit', 'form[up-target]', (event, $form) ->
@@ -256,18 +279,29 @@ up.form = (->
256
279
  submit($form)
257
280
 
258
281
  ###*
259
- Observes this form control by periodically polling its value.
260
- Executes the given Javascript if the value changes:
282
+ Observes this form field and runs the given script
283
+ when its value changes. This is useful for observing text fields
284
+ while the user is typing.
285
+
286
+ For instance, the following would submit the form whenever the
287
+ text field value changes:
261
288
 
262
289
  <form method="GET" action="/search">
263
290
  <input type="query" up-observe="up.form.submit(this)">
264
291
  </form>
265
292
 
266
- This is useful for observing text fields while the user is typing,
267
- since browsers will only fire a `change` event once the user
268
- blurs the text field.
293
+ The script given with `up-observe` runs with the following context:
294
+
295
+ | Name | Type | Description |
296
+ | -------- | --------- | ------------------------------------- |
297
+ | `value` | `String` | The current value of the field |
298
+ | `this` | `Element` | The form field |
299
+ | `$field` | `jQuery` | The form field as a jQuery collection |
300
+
301
+ See up.observe.
269
302
 
270
303
  @method input[up-observe]
304
+ The code to run when the field's value changes.
271
305
  @ujs
272
306
  @param {String} up-observe
273
307
  ###
@@ -34,10 +34,10 @@ up.modal = (->
34
34
 
35
35
  @method up.modal.defaults
36
36
  @param {Number} [options.width='auto']
37
- The width of the dialog.
37
+ The width of the dialog in pixels.
38
38
  Defaults to `'auto'`, meaning that the dialog will grow to fit its contents.
39
39
  @param {Number} [options.height='auto']
40
- The height of the dialog.
40
+ The height of the dialog in pixels.
41
41
  Defaults to `'auto'`, meaning that the dialog will grow to fit its contents.
42
42
  @param {String|Function(config)} [options.template]
43
43
  A string containing the HTML structure of the modal.
@@ -106,17 +106,31 @@ up.modal = (->
106
106
 
107
107
  You can also open a URL directly like this:
108
108
 
109
- up.modal.open({ url: '/foo' })
109
+ up.modal.open({ url: '/foo', target: '.list' })
110
+
111
+ This will request `/foo`, extract the `.list` selector from the response
112
+ and open the selected container in a modal dialog.
110
113
 
111
114
  @method up.modal.open
112
- @param {Element|jQuery|String} elementOrSelector
115
+ @param {Element|jQuery|String} [elementOrSelector]
116
+ The link to follow.
117
+ Can be omitted if you give `options.url` instead.
113
118
  @param {String} [options.url]
119
+ The URL to open.
120
+ Can be omitted if you give `elementOrSelector` instead.
121
+ @param {String} [options.target]
122
+ The selector to extract from the response and open in a modal dialog.
114
123
  @param {Number} [options.width]
124
+ The width of the dialog in pixels.
125
+ By [default](#up.modal.defaults) the dialog will grow to fit its contents.
115
126
  @param {Number} [options.height]
127
+ The width of the dialog in pixels.
128
+ By [default](#up.modal.defaults) the dialog will grow to fit its contents.
116
129
  @param {Boolean} [options.sticky=false]
117
130
  If set to `true`, the modal remains
118
131
  open even if the page changes in the background.
119
132
  @param {Object} [options.history=true]
133
+ Whether to add a browser history entry for the modal's source URL.
120
134
  @param {String} [options.animation]
121
135
  The animation to use when opening the modal.
122
136
  @param {Number} [options.duration]
@@ -155,9 +169,8 @@ up.modal = (->
155
169
  )
156
170
 
157
171
  ###*
158
- Returns the source URL for the fragment displayed
159
- in the current modal overlay, or `undefined` if no
160
- modal is open.
172
+ Returns the source URL for the fragment displayed in the current modal overlay,
173
+ or `undefined` if no modal is currently open.
161
174
 
162
175
  @method up.modal.source
163
176
  @return {String}
@@ -201,7 +214,7 @@ up.modal = (->
201
214
 
202
215
  Clicking would request the path `/blog` and select `.blog-list` from
203
216
  the HTML response. Up.js will dim the page with an overlay
204
- and place the matching `.blog_list` tag will be placed in
217
+ and place the matching `.blog-list` tag will be placed in
205
218
  a modal dialog.
206
219
 
207
220
 
@@ -281,6 +294,7 @@ up.modal = (->
281
294
 
282
295
  ###*
283
296
  When this element is clicked, closes a currently open dialog.
297
+ Does nothing if no modal is currently open.
284
298
 
285
299
  @method [up-close]
286
300
  @ujs
@@ -113,7 +113,7 @@ up.proxy = (->
113
113
  promise = u.ajax(request)
114
114
  # If a cached response is available, we use it unless
115
115
  # `options.cache` is explicitly set to `false`.
116
- else if promise = get(request) && !ignoreCache
116
+ else if (promise = get(request)) && !ignoreCache
117
117
  promise
118
118
  else
119
119
  promise = u.ajax(request)
@@ -1,5 +1,5 @@
1
1
  module Upjs
2
2
  module Rails
3
- VERSION = '0.6.0'
3
+ VERSION = '0.6.1'
4
4
  end
5
5
  end