upjs-rails 0.12.0 → 0.12.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -1
- data/dist/up.js +86 -54
- data/dist/up.min.js +2 -2
- data/lib/assets/javascripts/up/bus.js.coffee +1 -1
- data/lib/assets/javascripts/up/flow.js.coffee +1 -9
- data/lib/assets/javascripts/up/history.js.coffee +1 -0
- data/lib/assets/javascripts/up/layout.js.coffee +30 -2
- data/lib/assets/javascripts/up/magic.js.coffee +10 -3
- data/lib/assets/javascripts/up/modal.js.coffee +9 -8
- data/lib/assets/javascripts/up/motion.js.coffee +23 -13
- data/lib/assets/javascripts/up/navigation.js.coffee +3 -1
- data/lib/assets/javascripts/up/popup.js.coffee +4 -3
- data/lib/assets/javascripts/up/proxy.js.coffee +1 -0
- data/lib/assets/javascripts/up/tooltip.js.coffee +1 -1
- data/lib/upjs/rails/version.rb +1 -1
- data/spec_app/spec/javascripts/up/flow_spec.js.coffee +35 -6
- data/spec_app/spec/javascripts/up/link_spec.js.coffee +41 -0
- data/spec_app/spec/javascripts/up/navigation_spec.js.coffee +0 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9be294721beb31d8896962cd3c88cca5b6c06c72
|
4
|
+
data.tar.gz: 6d6c036721685044defdd46e5a638924e4966045
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c0cd5d3fb663e9c04a0e062a45f9b50ff34575f225d213e73ee2cf32450794afb27a7286a0d9a0435616ae51e0af777d8f78a61a5fdcad18493d11f6e8b0d9f
|
7
|
+
data.tar.gz: dd19ad7811f063d5c57e94d482c9d771052f63c30f46bba101414fb4dc38b84d52454a66667efdfb4ac6729f3ef892d14f88fe986a0b5232010c7714bb02db57
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
This project mostly adheres to [Semantic Versioning](http://semver.org/).
|
6
6
|
|
7
7
|
|
8
|
+
0.12.1
|
9
|
+
------
|
10
|
+
|
11
|
+
### Compatible changes
|
12
|
+
|
13
|
+
- `up.on` now returns a function that unbinds the events when called
|
14
|
+
- Fixed a bug where restoring previous scroll positions was not worked
|
15
|
+
in situations where the same operation would also reveal the replaced element.
|
16
|
+
- Various bugfixes
|
17
|
+
|
18
|
+
|
8
19
|
0.12.0
|
9
20
|
------
|
10
21
|
|
@@ -15,7 +26,7 @@ This project mostly adheres to [Semantic Versioning](http://semver.org/).
|
|
15
26
|
|
16
27
|
### Incompatible changes
|
17
28
|
|
18
|
-
- Remove
|
29
|
+
- Remove `up.slot`, which was poorly implemented, untested, and not much better than the `:empty` pseudo-selector
|
19
30
|
which has great browser support
|
20
31
|
- Replaced the `up.bus.on(...)` event registry with vanilla DOM events bound to `document`. Also renamed
|
21
32
|
events in the process.
|
data/dist/up.js
CHANGED
@@ -1405,7 +1405,7 @@ We need to work on this page:
|
|
1405
1405
|
Emits an event with the given name and property.
|
1406
1406
|
Returns whether any event listener has prevented the default action.
|
1407
1407
|
|
1408
|
-
@method nobodyPrevents
|
1408
|
+
@method up.bus.nobodyPrevents
|
1409
1409
|
@protected
|
1410
1410
|
*/
|
1411
1411
|
nobodyPrevents = function() {
|
@@ -1523,6 +1523,8 @@ We need to work on this page:
|
|
1523
1523
|
The function takes the affected element as the first argument (as a jQuery object).
|
1524
1524
|
If the element has an `up-data` attribute, its value is parsed as JSON
|
1525
1525
|
and passed as a second argument.
|
1526
|
+
@return {Function}
|
1527
|
+
A function that unbinds the event listeners when called.
|
1526
1528
|
*/
|
1527
1529
|
liveDescriptions = [];
|
1528
1530
|
defaultLiveDescriptions = null;
|
@@ -1539,17 +1541,21 @@ We need to work on this page:
|
|
1539
1541
|
};
|
1540
1542
|
};
|
1541
1543
|
live = function() {
|
1542
|
-
var args, behavior, description, lastIndex
|
1544
|
+
var $document, args, behavior, description, lastIndex;
|
1543
1545
|
args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
|
1544
1546
|
if (!up.browser.isSupported()) {
|
1545
|
-
return;
|
1547
|
+
return (function() {});
|
1546
1548
|
}
|
1547
1549
|
description = u.copy(args);
|
1548
1550
|
lastIndex = description.length - 1;
|
1549
1551
|
behavior = description[lastIndex];
|
1550
1552
|
description[lastIndex] = upListenerToJqueryListener(behavior);
|
1551
1553
|
liveDescriptions.push(description);
|
1552
|
-
|
1554
|
+
$document = $(document);
|
1555
|
+
$document.on.apply($document, description);
|
1556
|
+
return function() {
|
1557
|
+
return $document.off.apply($document, description);
|
1558
|
+
};
|
1553
1559
|
};
|
1554
1560
|
|
1555
1561
|
/**
|
@@ -1892,6 +1898,7 @@ We need to work on this page:
|
|
1892
1898
|
|
1893
1899
|
/**
|
1894
1900
|
@method up.history.config
|
1901
|
+
@property
|
1895
1902
|
@param {Array<String>} [config.popTargets=['body']]
|
1896
1903
|
An array of CSS selectors to replace when the user goes
|
1897
1904
|
back in history.
|
@@ -2092,13 +2099,14 @@ This modules contains functions to scroll the viewport and reveal contained elem
|
|
2092
2099
|
var slice = [].slice;
|
2093
2100
|
|
2094
2101
|
up.layout = (function($) {
|
2095
|
-
var SCROLL_PROMISE_KEY, anchoredRight, config, finishScrolling, fixedChildren, lastScrollTops, measureObstruction, reset, restoreScroll, reveal, saveScroll, scroll, scrollTops, u, viewportOf, viewportSelector, viewports, viewportsWithin;
|
2102
|
+
var SCROLL_PROMISE_KEY, anchoredRight, config, finishScrolling, fixedChildren, lastScrollTops, measureObstruction, reset, restoreScroll, reveal, revealOrRestoreScroll, saveScroll, scroll, scrollTops, u, viewportOf, viewportSelector, viewports, viewportsWithin;
|
2096
2103
|
u = up.util;
|
2097
2104
|
|
2098
2105
|
/**
|
2099
2106
|
Configures the application layout.
|
2100
2107
|
|
2101
2108
|
@method up.layout.config
|
2109
|
+
@property
|
2102
2110
|
@param {Array<String>} [config.viewports]
|
2103
2111
|
An array of CSS selectors that find viewports
|
2104
2112
|
(containers that scroll their contents).
|
@@ -2315,6 +2323,7 @@ This modules contains functions to scroll the viewport and reveal contained elem
|
|
2315
2323
|
*/
|
2316
2324
|
reveal = function(elementOrSelector, options) {
|
2317
2325
|
var $element, $viewport, elementDims, firstElementRow, lastElementRow, newScrollPos, obstruction, offsetShift, originalScrollPos, predictFirstVisibleRow, predictLastVisibleRow, snap, viewportHeight, viewportIsDocument;
|
2326
|
+
u.debug('Revealing %o', elementOrSelector);
|
2318
2327
|
options = u.options(options);
|
2319
2328
|
$element = $(elementOrSelector);
|
2320
2329
|
$viewport = options.viewport ? $(options.viewport) : viewportOf($element);
|
@@ -2477,6 +2486,7 @@ This modules contains functions to scroll the viewport and reveal contained elem
|
|
2477
2486
|
}
|
2478
2487
|
url = u.option(options.url, up.history.url());
|
2479
2488
|
tops = u.option(options.tops, scrollTops());
|
2489
|
+
u.debug('Saving scroll positions for URL %o: %o', url, tops);
|
2480
2490
|
return lastScrollTops.set(url, tops);
|
2481
2491
|
};
|
2482
2492
|
|
@@ -2491,10 +2501,11 @@ This modules contains functions to scroll the viewport and reveal contained elem
|
|
2491
2501
|
@protected
|
2492
2502
|
*/
|
2493
2503
|
restoreScroll = function(options) {
|
2494
|
-
var $ancestorViewports, $descendantViewports, $matchingViewport, $viewports, key,
|
2504
|
+
var $ancestorViewports, $descendantViewports, $matchingViewport, $viewports, key, right, scrollTop, tops, url;
|
2495
2505
|
if (options == null) {
|
2496
2506
|
options = {};
|
2497
2507
|
}
|
2508
|
+
url = up.history.url();
|
2498
2509
|
$viewports = void 0;
|
2499
2510
|
if (options.around) {
|
2500
2511
|
$descendantViewports = viewportsWithin(options.around);
|
@@ -2503,17 +2514,36 @@ This modules contains functions to scroll the viewport and reveal contained elem
|
|
2503
2514
|
} else {
|
2504
2515
|
$viewports = viewports();
|
2505
2516
|
}
|
2506
|
-
tops = lastScrollTops.get(
|
2507
|
-
|
2517
|
+
tops = lastScrollTops.get(url);
|
2518
|
+
u.debug('Restoring scroll positions for URL %o (viewports are %o, saved tops are %o)', url, $viewports, tops);
|
2508
2519
|
for (key in tops) {
|
2509
2520
|
scrollTop = tops[key];
|
2510
2521
|
right = key === 'document' ? document : key;
|
2511
2522
|
$matchingViewport = $viewports.filter(right);
|
2512
|
-
|
2523
|
+
scroll($matchingViewport, scrollTop, {
|
2513
2524
|
duration: 0
|
2514
|
-
})
|
2525
|
+
});
|
2526
|
+
}
|
2527
|
+
return u.resolvedDeferred();
|
2528
|
+
};
|
2529
|
+
|
2530
|
+
/**
|
2531
|
+
@protected
|
2532
|
+
@method up.layout.revealOrRestoreScroll
|
2533
|
+
@return {Deferred} A promise for when the revealing or scroll restauration ends
|
2534
|
+
*/
|
2535
|
+
revealOrRestoreScroll = function(selectorOrElement, options) {
|
2536
|
+
var $element;
|
2537
|
+
$element = $(selectorOrElement);
|
2538
|
+
if (options.restoreScroll) {
|
2539
|
+
return restoreScroll({
|
2540
|
+
around: $element
|
2541
|
+
});
|
2542
|
+
} else if (options.reveal) {
|
2543
|
+
return reveal($element);
|
2544
|
+
} else {
|
2545
|
+
return u.resolvedDeferred();
|
2515
2546
|
}
|
2516
|
-
return results;
|
2517
2547
|
};
|
2518
2548
|
|
2519
2549
|
/**
|
@@ -2597,6 +2627,7 @@ This modules contains functions to scroll the viewport and reveal contained elem
|
|
2597
2627
|
*/
|
2598
2628
|
up.on('up:framework:reset', reset);
|
2599
2629
|
return {
|
2630
|
+
knife: eval(typeof Knife !== "undefined" && Knife !== null ? Knife.point : void 0),
|
2600
2631
|
reveal: reveal,
|
2601
2632
|
scroll: scroll,
|
2602
2633
|
finishScrolling: finishScrolling,
|
@@ -2610,6 +2641,7 @@ This modules contains functions to scroll the viewport and reveal contained elem
|
|
2610
2641
|
scrollTops: scrollTops,
|
2611
2642
|
saveScroll: saveScroll,
|
2612
2643
|
restoreScroll: restoreScroll,
|
2644
|
+
revealOrRestoreScroll: revealOrRestoreScroll,
|
2613
2645
|
anchoredRight: anchoredRight,
|
2614
2646
|
fixedChildren: fixedChildren
|
2615
2647
|
};
|
@@ -2641,7 +2673,7 @@ We need to work on this page:
|
|
2641
2673
|
|
2642
2674
|
(function() {
|
2643
2675
|
up.flow = (function($) {
|
2644
|
-
var autofocus, destroy, elementsInserted, findOldFragment, first, fragmentNotFound, implant, isRealElement, parseImplantSteps, parseResponse, reload, replace,
|
2676
|
+
var autofocus, destroy, elementsInserted, findOldFragment, first, fragmentNotFound, implant, isRealElement, parseImplantSteps, parseResponse, reload, replace, setSource, source, swapElements, u;
|
2645
2677
|
u = up.util;
|
2646
2678
|
setSource = function(element, sourceUrl) {
|
2647
2679
|
var $element;
|
@@ -2805,13 +2837,6 @@ We need to work on this page:
|
|
2805
2837
|
}
|
2806
2838
|
};
|
2807
2839
|
};
|
2808
|
-
reveal = function($element, options) {
|
2809
|
-
if (options.reveal) {
|
2810
|
-
return up.reveal($element);
|
2811
|
-
} else {
|
2812
|
-
return u.resolvedDeferred();
|
2813
|
-
}
|
2814
|
-
};
|
2815
2840
|
elementsInserted = function($new, options) {
|
2816
2841
|
if (typeof options.insert === "function") {
|
2817
2842
|
options.insert($new);
|
@@ -2825,11 +2850,6 @@ We need to work on this page:
|
|
2825
2850
|
if (options.source !== false) {
|
2826
2851
|
setSource($new, options.source);
|
2827
2852
|
}
|
2828
|
-
if (options.restoreScroll) {
|
2829
|
-
up.layout.restoreScroll({
|
2830
|
-
around: $new
|
2831
|
-
});
|
2832
|
-
}
|
2833
2853
|
autofocus($new);
|
2834
2854
|
return up.hello($new);
|
2835
2855
|
};
|
@@ -2843,7 +2863,7 @@ We need to work on this page:
|
|
2843
2863
|
$old[insertionMethod]($wrapper);
|
2844
2864
|
u.copyAttributes($new, $old);
|
2845
2865
|
elementsInserted($wrapper.children(), options);
|
2846
|
-
return
|
2866
|
+
return up.layout.revealOrRestoreScroll($wrapper, options).then(function() {
|
2847
2867
|
return up.animate($wrapper, transition, options);
|
2848
2868
|
}).then(function() {
|
2849
2869
|
u.unwrapElement($wrapper);
|
@@ -3044,7 +3064,7 @@ We need to work on this page:
|
|
3044
3064
|
|
3045
3065
|
(function() {
|
3046
3066
|
up.motion = (function($) {
|
3047
|
-
var GHOSTING_PROMISE_KEY, animate, animateOptions, animation, animations, assertIsDeferred, config, defaultAnimations, defaultTransitions, findAnimation, finish, finishGhosting, morph, none, prependCopy, reset, resolvableWhen, snapshot, transition, transitions, u, withGhosts;
|
3067
|
+
var GHOSTING_PROMISE_KEY, animate, animateOptions, animation, animations, assertIsDeferred, config, defaultAnimations, defaultTransitions, findAnimation, finish, finishGhosting, morph, none, prependCopy, reset, resolvableWhen, skipMorph, snapshot, transition, transitions, u, withGhosts;
|
3048
3068
|
u = up.util;
|
3049
3069
|
animations = {};
|
3050
3070
|
defaultAnimations = {};
|
@@ -3055,6 +3075,7 @@ We need to work on this page:
|
|
3055
3075
|
Sets default options for animations and transitions.
|
3056
3076
|
|
3057
3077
|
@method up.motion.config
|
3078
|
+
@property
|
3058
3079
|
@param {Number} [config.duration=300]
|
3059
3080
|
@param {Number} [config.delay=0]
|
3060
3081
|
@param {String} [config.easing='ease']
|
@@ -3198,11 +3219,7 @@ We need to work on this page:
|
|
3198
3219
|
u.temporaryCss($old, {
|
3199
3220
|
display: 'none'
|
3200
3221
|
}, function() {
|
3201
|
-
|
3202
|
-
up.reveal($new, {
|
3203
|
-
viewport: $viewport
|
3204
|
-
});
|
3205
|
-
}
|
3222
|
+
up.layout.revealOrRestoreScroll($new, options);
|
3206
3223
|
newCopy = prependCopy($new, $viewport);
|
3207
3224
|
return newScrollTop = $viewport.scrollTop();
|
3208
3225
|
});
|
@@ -3302,20 +3319,20 @@ We need to work on this page:
|
|
3302
3319
|
A promise for the transition's end.
|
3303
3320
|
*/
|
3304
3321
|
morph = function(source, target, transitionOrName, options) {
|
3305
|
-
var $new, $old, animation, parsedOptions, parts, transition;
|
3322
|
+
var $new, $old, animation, deferred, parsedOptions, parts, transition;
|
3306
3323
|
$old = $(source);
|
3307
3324
|
$new = $(target);
|
3325
|
+
parsedOptions = u.only(options, 'reveal', 'restoreScroll');
|
3326
|
+
parsedOptions = u.extend(parsedOptions, animateOptions(options));
|
3308
3327
|
if (up.browser.canCssAnimation()) {
|
3309
|
-
parsedOptions = u.only(options, 'reveal');
|
3310
|
-
parsedOptions = u.extend(parsedOptions, animateOptions(options));
|
3311
3328
|
finish($old);
|
3312
3329
|
finish($new);
|
3313
3330
|
if (transitionOrName === 'none' || transitionOrName === false || (animation = animations[transitionOrName])) {
|
3314
|
-
$old
|
3315
|
-
|
3316
|
-
|
3317
|
-
}
|
3318
|
-
return
|
3331
|
+
deferred = skipMorph($old, $new, parsedOptions);
|
3332
|
+
deferred.then(function() {
|
3333
|
+
return animate($new, animation || 'none', options);
|
3334
|
+
});
|
3335
|
+
return deferred;
|
3319
3336
|
} else if (transition = u.presence(transitionOrName, u.isFunction) || transitions[transitionOrName]) {
|
3320
3337
|
return withGhosts($old, $new, parsedOptions, function($oldGhost, $newGhost) {
|
3321
3338
|
var transitionPromise;
|
@@ -3332,11 +3349,22 @@ We need to work on this page:
|
|
3332
3349
|
return u.error("Unknown transition %o", transitionOrName);
|
3333
3350
|
}
|
3334
3351
|
} else {
|
3335
|
-
$old
|
3336
|
-
return u.resolvedDeferred();
|
3352
|
+
return skipMorph($old, $new, parsedOptions);
|
3337
3353
|
}
|
3338
3354
|
};
|
3339
3355
|
|
3356
|
+
/**
|
3357
|
+
Cause the side effects of a successful transitions, but instantly.
|
3358
|
+
We use this to skip morphing for old browsers, or when the developer
|
3359
|
+
decides to only animate the new element (i.e. no real ghosting or transition) .
|
3360
|
+
|
3361
|
+
@private
|
3362
|
+
*/
|
3363
|
+
skipMorph = function($old, $new, options) {
|
3364
|
+
$old.hide();
|
3365
|
+
return up.layout.revealOrRestoreScroll($new, options);
|
3366
|
+
};
|
3367
|
+
|
3340
3368
|
/**
|
3341
3369
|
@private
|
3342
3370
|
*/
|
@@ -3706,6 +3734,7 @@ You can change (or remove) this delay like this:
|
|
3706
3734
|
|
3707
3735
|
/**
|
3708
3736
|
@method up.proxy.config
|
3737
|
+
@property
|
3709
3738
|
@param {Number} [config.preloadDelay=75]
|
3710
3739
|
The number of milliseconds to wait before [`[up-preload]`](#up-preload)
|
3711
3740
|
starts preloading.
|
@@ -4797,9 +4826,10 @@ We need to work on this page:
|
|
4797
4826
|
|
4798
4827
|
/**
|
4799
4828
|
@method up.popup.config
|
4800
|
-
@
|
4801
|
-
@param {String} config.
|
4802
|
-
@param {String} config.
|
4829
|
+
@property
|
4830
|
+
@param {String} [config.openAnimation]
|
4831
|
+
@param {String} [config.closeAnimation]
|
4832
|
+
@param {String} [config.position]
|
4803
4833
|
*/
|
4804
4834
|
config = u.config({
|
4805
4835
|
openAnimation: 'fade-in',
|
@@ -5105,6 +5135,7 @@ For small popup overlays ("dropdowns") see [up.popup](/up.popup) instead.
|
|
5105
5135
|
Sets default options for future modals.
|
5106
5136
|
|
5107
5137
|
@method up.modal.config
|
5138
|
+
@property
|
5108
5139
|
@param {Number} [config.width]
|
5109
5140
|
The width of the dialog as a CSS value like `'400px'` or `50%`.
|
5110
5141
|
|
@@ -5138,10 +5169,10 @@ For small popup overlays ("dropdowns") see [up.popup](/up.popup) instead.
|
|
5138
5169
|
to both the dialog box and the overlay dimming the page.
|
5139
5170
|
*/
|
5140
5171
|
config = u.config({
|
5141
|
-
maxWidth:
|
5142
|
-
minWidth:
|
5143
|
-
width:
|
5144
|
-
height:
|
5172
|
+
maxWidth: null,
|
5173
|
+
minWidth: null,
|
5174
|
+
width: null,
|
5175
|
+
height: null,
|
5145
5176
|
openAnimation: 'fade-in',
|
5146
5177
|
closeAnimation: 'fade-out',
|
5147
5178
|
closeLabel: '×',
|
@@ -5250,7 +5281,7 @@ For small popup overlays ("dropdowns") see [up.popup](/up.popup) instead.
|
|
5250
5281
|
animation has finished and the modal contents are fully visible.
|
5251
5282
|
|
5252
5283
|
@method up.modal.follow
|
5253
|
-
@param {Element|jQuery|String}
|
5284
|
+
@param {Element|jQuery|String} linkOrSelector
|
5254
5285
|
The link to follow.
|
5255
5286
|
@param {String} [options.target]
|
5256
5287
|
The selector to extract from the response and open in a modal dialog.
|
@@ -5276,9 +5307,9 @@ For small popup overlays ("dropdowns") see [up.popup](/up.popup) instead.
|
|
5276
5307
|
@return {Promise}
|
5277
5308
|
A promise that will be resolved when the modal has finished loading.
|
5278
5309
|
*/
|
5279
|
-
follow = function(
|
5310
|
+
follow = function(linkOrSelector, options) {
|
5280
5311
|
options = u.options(options);
|
5281
|
-
options.$link = $
|
5312
|
+
options.$link = $(linkOrSelector);
|
5282
5313
|
return open(options);
|
5283
5314
|
};
|
5284
5315
|
|
@@ -5491,7 +5522,7 @@ For small popup overlays ("dropdowns") see [up.popup](/up.popup) instead.
|
|
5491
5522
|
if ($link.is('.up-current')) {
|
5492
5523
|
return close();
|
5493
5524
|
} else {
|
5494
|
-
return
|
5525
|
+
return follow($link);
|
5495
5526
|
}
|
5496
5527
|
});
|
5497
5528
|
up.on('click', 'body', function(event, $body) {
|
@@ -5684,7 +5715,7 @@ We need to work on this page:
|
|
5684
5715
|
*/
|
5685
5716
|
up.compiler('[up-tooltip], [up-tooltip-html]', function($link) {
|
5686
5717
|
$link.on('mouseover', function() {
|
5687
|
-
return
|
5718
|
+
return attach($link);
|
5688
5719
|
});
|
5689
5720
|
return $link.on('mouseout', function() {
|
5690
5721
|
return close();
|
@@ -5731,6 +5762,7 @@ by providing instant feedback for user interactions.
|
|
5731
5762
|
Sets default options for this module.
|
5732
5763
|
|
5733
5764
|
@method up.navigation.config
|
5765
|
+
@property
|
5734
5766
|
@param {Number} [config.currentClasses]
|
5735
5767
|
An array of classes to set on [links that point the current location](#up-current).
|
5736
5768
|
*/
|
@@ -5925,7 +5957,7 @@ by providing instant feedback for user interactions.
|
|
5925
5957
|
unmarkActive();
|
5926
5958
|
return locationChanged();
|
5927
5959
|
});
|
5928
|
-
up.on('up:fragment:
|
5960
|
+
up.on('up:fragment:destroyed', function(event, $fragment) {
|
5929
5961
|
if ($fragment.is('.up-modal, .up-popup')) {
|
5930
5962
|
return locationChanged();
|
5931
5963
|
}
|
data/dist/up.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
(function(){window.up={}}).call(this),function(){var t=[].slice;up.util=function(e){var n,r,o,u,i,a,s,l,p,c,f,d,m,h,v,g,y,b,w,k,x,S,C,A,T,P,E,D,j,$,z,U,O,M,F,W,L,I,Q,N,R,H,q,B,J,G,X,_,K,V,Z,Y,tt,et,nt,rt,ot,ut,it,at,st,lt,pt,ct,ft,dt,mt,ht,vt,gt,yt,bt,wt,kt,xt,St,Ct,At,Tt,Pt,Et,Dt,jt,$t,zt,Ut,Ot,Mt;return ut=function(e){var n,r;return n=void 0,r=!1,function(){var o;return o=1<=arguments.length?t.call(arguments,0):[],r?n:(r=!0,n=e.apply(null,o))}},u=function(t){return t=m(t),t.selector&&(t.headers={"X-Up-Selector":t.selector}),e.ajax(t)},K=function(t,e){return(""===e||"80"===e)&&"http:"===t||"443"===e&&"https:"===t},ct=function(t,n){var r,o,u;return r=null,V(t)?(r=e("<a>").attr({href:t}).get(0),F(r.hostname)&&(r.href=r.href)):r=zt(t),o=r.protocol+"//"+r.hostname,K(r.protocol,r.port)||(o+=":"+r.port),u=r.pathname,"/"!==u[0]&&(u="/"+u),(null!=n?n.stripTrailingSlash:void 0)===!0&&(u=u.replace(/\/$/,"")),o+=u,(null!=n?n.hash:void 0)===!0&&(o+=r.hash),(null!=n?n.search:void 0)!==!1&&(o+=r.search),o},pt=function(t){return t?t.toUpperCase():"GET"},n=function(t){var n,r,o,u,i,a,s,l,p,c,f,d,m,h,v,g;for(v=t.split(/[ >]/),o=null,c=f=0,m=v.length;m>f;c=++f){for(a=v[c],i=a.match(/(^|\.|\#)[A-Za-z0-9\-_]+/g),g="div",u=[],p=null,d=0,h=i.length;h>d;d++)switch(s=i[d],s[0]){case".":u.push(s.substr(1));break;case"#":p=s.substr(1);break;default:g=s}l="<"+g,u.length&&(l+=' class="'+u.join(" ")+'"'),p&&(l+=' id="'+p+'"'),l+=">",n=e(l),r&&n.appendTo(r),0===c&&(o=n),r=n}return o},v=function(t,e){var n;return n=document.createElement(t),X(e)&&(n.innerHTML=e),n},w=function(){var e,n,r;return n=arguments[0],e=2<=arguments.length?t.call(arguments,1):[],n="[UP] "+n,(r=up.browser).puts.apply(r,["debug",n].concat(t.call(e)))},Mt=function(){var e,n,r;return n=arguments[0],e=2<=arguments.length?t.call(arguments,1):[],n="[UP] "+n,(r=up.browser).puts.apply(r,["warn",n].concat(t.call(e)))},A=function(){var n,r,o,u;throw r=1<=arguments.length?t.call(arguments,0):[],r[0]="[UP] "+r[0],(u=up.browser).puts.apply(u,["error"].concat(t.call(r))),o=P.apply(null,r),n=yt(e(".up-error"))||e('<div class="up-error"></div>').prependTo("body"),n.addClass("up-error"),n.text(o),new Error(o)},o=/\%[odisf]/g,P=function(){var e,n,r,u;return e=1<=arguments.length?t.call(arguments,0):[],u=e[0],n=0,r=80,u.replace(o,function(){var t,o;return n+=1,t=e[n],o=typeof t,"string"===o?(t=t.replace(/\s+/g," "),t.length>r&&(t=t.substr(0,r)+"\u2026"),t='"'+t+'"'):t="undefined"===o?"undefined":"number"===o||"function"===o?t.toString():JSON.stringify(t),t.length>r&&(t=t.substr(0,r)+" \u2026",("object"===o||"function"===o)&&(t+=" }")),t})},y=function(t){var e,n,r,o,u,i,a;for(w("Creating selector from element %o",t),n=(e=t.attr("class"))?e.split(" "):[],r=t.attr("id"),a=t.prop("tagName").toLowerCase(),r&&(a+="#"+r),o=0,i=n.length;i>o;o++)u=n[o],a+="."+u;return a},g=function(t){var e,n,r,o,u,i,a,s,l,p,c,f;return l=function(t){return"<"+t+"(?: [^>]*)?>"},i=function(t){return"</"+t+">"},e="(?:.|\\n)*?",u=function(t){return"("+t+")"},f=new RegExp(l("head")+e+l("title")+u(e)+i("title")+e+i("body"),"i"),o=new RegExp(l("body")+u(e)+i("body"),"i"),(r=t.match(o))?(s=document.createElement("html"),n=v("body",r[1]),s.appendChild(n),(c=t.match(f))&&(a=v("head"),s.appendChild(a),p=v("title",c[1]),a.appendChild(p)),s):v("div",t)},E=e.extend,$t=e.trim,x=function(t,e){var n,r,o,u,i;for(i=[],n=o=0,u=t.length;u>o;n=++o)r=t[n],i.push(e(r,n));return i},rt=x,U=function(t){return t},Dt=function(t,e){var n,r,o,u;for(u=[],n=r=0,o=t-1;o>=0?o>=r:r>=o;n=o>=0?++r:--r)u.push(e(n));return u},B=function(t){return null===t},Z=function(t){return void 0===t},L=function(t){return!Z(t)},q=function(t){return Z(t)||B(t)},N=function(t){return!q(t)},F=function(t){return q(t)||G(t)&&0===Object.keys(t).length||0===t.length},yt=function(t,e){return null==e&&(e=X),e(t)?t:null},X=function(t){return!F(t)},Q=function(t){return"function"==typeof t},V=function(t){return"string"==typeof t},J=function(t){return"number"==typeof t},R=function(t){return"object"==typeof t&&!!t},G=function(t){return R(t)||"function"==typeof t},I=function(t){return!(!t||1!==t.nodeType)},H=function(t){return t instanceof jQuery},_=function(t){return G(t)&&Q(t.then)},W=function(t){return _(t)&&Q(t.resolve)},O=function(t){return N(t)?t:void 0},M=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},jt=function(t){return Array.prototype.slice.call(t)},m=function(t){return M(t)?t.slice():E({},t)},zt=function(t){return H(t)?t.get(0):t},it=function(t,e){return E(m(t),e)},gt=function(t,e){var n,r,o,u;if(o=t?m(t):{},e)for(r in e)n=e[r],u=o[r],N(u)?G(n)&&G(u)&&(o[r]=gt(u,n)):o[r]=n;return o},vt=function(){var e,n,r,o,u,i;for(n=1<=arguments.length?t.call(arguments,0):[],u=void 0,r=0,o=n.length;o>r;r++)if(e=n[r],i=e,Q(i)&&(i=i()),N(i)){u=i;break}return u},k=function(t,e){var n,r,o,u;for(u=void 0,r=0,o=t.length;o>r;r++)if(n=t[r],e(n)){u=n;break}return u},i=function(t,e){var n;return n=k(t,e),L(n)},c=function(t){return At(t,N)},Ut=function(t){var e;return e={},At(t,function(t){return e.hasOwnProperty(t)?!1:e[t]=!0})},At=function(t,e){var n;return n=[],x(t,function(t){return e(t)?n.push(t):void 0}),n},bt=function(){var e,n,r,o;return e=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++)n=r[t],u.push(e.attr(n));return u}(),k(o,X)},lt=function(t){return setTimeout(t,0)},et=function(t){return t[t.length-1]},p=function(){var t;return t=document.documentElement,{width:t.clientWidth,height:t.clientHeight}},Ct=ut(function(){var t,n,r;return t=e("<div>").css({position:"absolute",top:"0",left:"0",width:"50px",height:"50px",overflowY:"scroll"}),t.appendTo(document.body),n=t.get(0),r=n.offsetWidth-n.clientWidth,t.remove(),r}),mt=function(t){var e;return e=void 0,function(){return null!=t&&(e=t()),t=void 0,e}},Et=function(t,e,n){var r,o;return o=t.css(Object.keys(e)),t.css(e),r=function(){return t.css(o)},n?(n(),r()):mt(r)},z=function(t){var e,n;return n=t.css(["transform","-webkit-transform"]),F(n)?(e=function(){return t.css(n)},t.css({transform:"translateZ(0)","-webkit-transform":"translateZ(0)"})):e=function(){},e},b=function(t,n,o){var u,i,a,s,l,p;return u=e(t),up.browser.canCssAnimation()?(o=gt(o,{duration:300,delay:0,easing:"ease"}),i=e.Deferred(),s={"transition-property":Object.keys(n).join(", "),"transition-duration":o.duration+"ms","transition-delay":o.delay+"ms","transition-timing-function":o.easing},l=z(u),p=Et(u,s),u.css(n),i.then(l),i.then(p),u.data(r,i),i.then(function(){return u.removeData(r)}),a=setTimeout(function(){return i.resolve()},o.duration+o.delay),i.then(function(){return clearTimeout(a)}),i):(u.css(n),xt())},r="up-animation-promise",j=function(t){return e(t).each(function(){var t;return(t=e(this).data(r))?t.resolve():void 0})},ot=function(t,n){var r,o,u,i,a,s;return n=gt(n,{relative:!1,inner:!1,full:!1}),n.relative?n.relative===!0?i=t.position():(r=e(n.relative),a=t.offset(),r.is(document)?i=a:(u=r.offset(),i={left:a.left-u.left,top:a.top-u.top})):i=t.offset(),o={left:i.left,top:i.top},n.inner?(o.width=t.width(),o.height=t.height()):(o.width=t.outerWidth(),o.height=t.outerHeight()),n.full&&(s=p(),o.right=s.width-(o.left+o.width),o.bottom=s.height-(o.top+o.height)),o},h=function(t,e){var n,r,o,u,i;for(u=t.get(0).attributes,i=[],r=0,o=u.length;o>r;r++)n=u[r],n.specified?i.push(e.attr(n.name,n.value)):i.push(void 0);return i},D=function(t,e){return t.find(e).addBack(e)},T=function(t){return 27===t.keyCode},Pt=function(t,e){return 0===t.indexOf(e)},C=function(t,e){return t.indexOf(e)===t.length-e.length},d=function(t,e){return t.indexOf(e)>=0},l=function(t,e){var n;switch(n=t.attr(e)){case"false":return!1;case"true":return!0;case"":return!0;default:return n}},nt=function(t){return t.getResponseHeader("X-Up-Location")},at=function(t){return t.getResponseHeader("X-Up-Method")},ht=function(){var e,n,r,o,u,i;for(i=arguments[0],o=2<=arguments.length?t.call(arguments,1):[],e={},n=0,u=o.length;u>n;n++)r=o[n],i.hasOwnProperty(r)&&(e[r]=i[r]);return e},Y=function(t){return!(t.metaKey||t.shiftKey||t.ctrlKey)},tt=function(t){var e;return e=Z(t.button)||0===t.button,e&&Y(t)},xt=function(){var t;return t=e.Deferred(),t.resolve(),t},St=function(){return xt().promise()},ft=function(){return{is:function(){return!1},attr:function(){},find:function(){return[]}}},kt=function(){var n,r;return n=1<=arguments.length?t.call(arguments,0):[],r=e.when.apply(e,n),r.resolve=function(){return x(n,function(t){return"function"==typeof t.resolve?t.resolve():void 0})},r},Tt=function(t,e){var n,r,o;r=[];for(n in e)o=e[n],q(t.attr(n))?r.push(t.attr(n,o)):r.push(void 0);return r},wt=function(t,e){var n;return n=t.indexOf(e),n>=0?(t.splice(n,1),e):void 0},S=function(){return e([])},st=function(t){var n,r,o,u,a,s,l;for(a={},l=[],r=[],o=0,u=t.length;u>o;o++)s=t[o],V(s)?l.push(s):r.push(s);return a.parsed=r,l.length&&(n=l.join(", "),a.parsed.push(n)),a.select=function(){return a.find(void 0)},a.find=function(t){var n,r,o,u,i,s;for(r=S(),i=a.parsed,o=0,u=i.length;u>o;o++)s=i[o],n=t?t.find(s):e(s),r=r.add(n);return r},a.findWithSelf=function(t){var e;return e=a.find(t),a.doesMatch(t)&&(e=e.add(t)),e},a.doesMatch=function(t){var n;return n=e(t),i(a.parsed,function(t){return n.is(t)})},a.seekUp=function(t){var n,r,o;for(o=e(t),n=o,r=void 0;n.length;){if(a.doesMatch(n)){r=n;break}n=n.parent()}return r||S()},a},s=function(e){var n,r,o,u,i,a,s,l,p,c,f,d;return null==e&&(e={}),f=void 0,r=function(){return f={}},r(),s=function(){var n;return n=1<=arguments.length?t.call(arguments,0):[],e.log?(n[0]="["+e.log+"] "+n[0],w.apply(null,n)):void 0},a=function(){return Object.keys(f)},l=function(){return q(e.size)?void 0:Q(e.size)?e.size():J(e.size)?e.size:A("Invalid size config: %o",e.size)},o=function(){return q(e.expiry)?void 0:Q(e.expiry)?e.expiry():J(e.expiry)?e.expiry:A("Invalid expiry config: %o",e.expiry)},p=function(t){return e.key?e.key(t):t.toString()},$t=function(){var t,e,n,r;return r=m(a()),n=l(),n&&r.length>n&&(t=null,e=null,x(r,function(n){var r,o;return r=f[n],o=r.timestamp,!e||e>o?(t=n,e=o):void 0}),t)?delete f[t]:void 0},n=function(t,e){var n;return n=u(t),L(n)?c(e,n):void 0},d=function(){return(new Date).valueOf()},c=function(t,e){var n;return n=p(t),f[n]={timestamp:d(),value:e}},wt=function(t){var e;return e=p(t),delete f[e]},i=function(t){var e,n;return e=o(),e?(n=d()-t.timestamp,n<o()):!0},u=function(t,e){var n,r;return null==e&&(e=void 0),r=p(t),(n=f[r])?i(n)?(s("Cache hit for %o",t),n.value):(s("Discarding stale cache entry for %o",t),wt(t),e):(s("Cache miss for %o",t),e)},{alias:n,get:u,set:c,remove:wt,clear:r,keys:a}},f=function(t){var e;return null==t&&(t={}),e={},e.reset=function(){return E(e,t)},e.reset(),Object.preventExtensions(e),e},Ot=function(t){var e,n;return t=zt(t),e=t.parentNode,n=jt(t.childNodes),x(n,function(n){return e.insertBefore(n,t)}),e.removeChild(t)},dt=function(t){var e,n;for(e=void 0;(t=t.parent())&&t.length;)if(n=t.css("position"),"absolute"===n||"relative"===n||t.is("body")){e=t;break}return e},$=function(t,n){var r,o,u,i;return r=e(t),o=dt(r),u=r.position(),i=o.offset(),r.css({position:"absolute",left:u.left-i.left,top:u.top-i.top+n.scrollTop(),right:"",bottom:""})},a=function(t){var e,n,r;return e=t.toString(),r=new RegExp("\\(([^\\)]*)\\)"),(n=e.match(r))?n[1].split(/\s*,\s*/):A("Could not parse argument names of %o",t)},{argNames:a,offsetParent:dt,fixedToAbsolute:$,presentAttr:bt,createElement:v,normalizeUrl:ct,normalizeMethod:pt,createElementFromHtml:g,$createElementFromSelector:n,createSelectorFromElement:y,ajax:u,extend:E,copy:m,merge:it,options:gt,option:vt,error:A,debug:w,warn:Mt,each:x,map:rt,identity:U,times:Dt,any:i,detect:k,select:At,compact:c,uniq:Ut,last:et,isNull:B,isDefined:L,isUndefined:Z,isGiven:N,isMissing:q,isPresent:X,isBlank:F,presence:yt,isObject:G,isFunction:Q,isString:V,isElement:I,isJQuery:H,isPromise:_,isDeferred:W,isHash:R,ifGiven:O,isUnmodifiedKeyEvent:Y,isUnmodifiedMouseEvent:tt,nullJquery:ft,unJquery:zt,nextFrame:lt,measure:ot,temporaryCss:Et,cssAnimate:b,finishCssAnimate:j,forceCompositing:z,escapePressed:T,copyAttributes:h,findWithSelf:D,contains:d,startsWith:Pt,endsWith:C,isArray:M,toArray:jt,castedAttr:l,locationFromXhr:nt,methodFromXhr:at,clientSize:p,only:ht,trim:$t,resolvedPromise:St,resolvedDeferred:xt,resolvableWhen:kt,setMissingAttrs:Tt,remove:wt,memoize:ut,scrollbarWidth:Ct,config:f,cache:s,unwrapElement:Ot,multiSelector:st,emptyJQuery:S,evalConsoleTemplate:P}}($),up.error=up.util.error,up.warn=up.util.warn,up.debug=up.util.debug}.call(this),function(){var t=[].slice;up.browser=function(e){var n,r,o,u,i,a,s,l,p,c,f,d,m,h;return m=up.util,c=function(t,n){var r,o,u,i,a,s;return null==n&&(n={}),a=m.option(n.method,"get").toLowerCase(),"get"===a?location.href=t:e.rails?(s=n.target,u=e.rails.csrfToken(),o=e.rails.csrfParam(),r=e("<form method='post' action='"+t+"'></form>"),i="<input name='_method' value='"+a+"' type='hidden' />",m.isDefined(o)&&m.isDefined(u)&&(i+="<input name='"+o+"' value='"+u+"' type='hidden' />"),s&&r.attr("target",s),r.hide().append(i).appendTo("body"),r.submit()):error("Can't fake a "+a.toUpperCase()+" request without Rails UJS")},d=function(){var e,n,r;return r=arguments[0],e=2<=arguments.length?t.call(arguments,1):[],m.isDefined(console[r])||(r="log"),o()?console[r].apply(console,e):(n=m.evalConsoleTemplate.apply(m,e),console[r](n))},h=function(){return location.href},u=m.memoize(function(){return m.isDefined(history.pushState)&&"get"===i()}),a=m.memoize(function(){return m.isUndefined(document.addEventListener)}),s=m.memoize(function(){return a()||-1!==navigator.appVersion.indexOf("MSIE 9.")}),n=m.memoize(function(){return"transition"in document.documentElement.style}),r=m.memoize(function(){return"oninput"in document.createElement("input")}),o=m.memoize(function(){return!s()}),l=m.memoize(function(){var t,n,r,o;return o=e.fn.jquery,r=o.split("."),t=parseInt(r[0]),n=parseInt(r[1]),t>=2||1===t&&n>=9}),f=function(t){var e,n;return n=null!=(e=document.cookie.match(new RegExp(t+"=(\\w+)")))?e[1]:void 0,m.isPresent(n)&&(document.cookie=t+"=; expires=Thu, 01-Jan-70 00:00:01 GMT; path=/"),n},i=m.memoize(function(){return(f("_up_request_method")||"get").toLowerCase()}),p=function(){return!a()&&l()},{url:h,loadPage:c,canPushState:u,canCssAnimation:n,canInputEvent:r,canLogSubstitution:o,isSupported:p,puts:d}}(jQuery)}.call(this),function(){var t=[].slice;up.bus=function(e){var n,r,o,u;return u=up.util,n=function(t,n){var r,o;return null==n&&(n={}),o=e.Event(t,n),r=n.$element||e(document),u.debug("Emitting %o on %o with props %o",t,r,n),r.trigger(o),o},r=function(){var e,r;return e=1<=arguments.length?t.call(arguments,0):[],r=n.apply(null,e),!r.isDefaultPrevented()},o=function(){return up.bus.emit("up:framework:reset")},{emit:n,nobodyPrevents:r,reset:o}}(jQuery),up.reset=up.bus.reset}.call(this),function(){var t=[].slice;up.magic=function(e){var n,r,o,u,i,a,s,l,p,c,f,d,m,h,v,g,y,b;return y=up.util,n="up-destroyable",r="up-destroyer",m=[],p=null,b=function(t){return function(n){var r;return r=n.$element||e(this),t.apply(r.get(0),[n,r,s(r)])}},d=function(){var n,r,o,u,i;return n=1<=arguments.length?t.call(arguments,0):[],up.browser.isSupported()?(o=y.copy(n),u=o.length-1,r=o[u],o[u]=b(r),m.push(o),(i=e(document)).on.apply(i,o)):void 0},a=[],l=null,i=function(){var e,n,r;return r=arguments[0],e=2<=arguments.length?t.call(arguments,1):[],up.browser.isSupported()?(i=e.pop(),n=y.options(e[0],{batch:!1}),a.push({selector:r,callback:i,batch:n.batch})):void 0},o=function(t,e,o){var u;return y.debug("Applying compiler %o on %o",t.selector,o),u=t.callback.apply(o,[e,s(e)]),y.isFunction(u)?(e.addClass(n),e.data(r,u)):void 0},u=function(t){var n,r,u,s;for(y.debug("Compiling fragment %o",t),s=[],r=0,u=a.length;u>r;r++)i=a[r],n=y.findWithSelf(t,i.selector),n.length?i.batch?s.push(o(i,n,n.get())):s.push(n.each(function(){return o(i,e(this),this)})):s.push(void 0);return s},c=function(t){return y.findWithSelf(t,"."+n).each(function(){var t,n;return t=e(this),(n=t.data(r))()})},s=function(t){var n,r;return n=e(t),r=n.attr("up-data"),y.isString(r)&&""!==y.trim(r)?JSON.parse(r):{}},g=function(){return p=y.copy(m),l=y.copy(a)},v=function(){var t,n,r,o;for(n=0,r=m.length;r>n;n++)t=m[n],y.contains(p,t)||(o=e(document)).off.apply(o,t);return m=y.copy(p),a=y.copy(l)},f=function(t){var n;return n=e(t),up.bus.emit("up:fragment:inserted",{$element:n}),n},h=function(t){return d("keydown","body",function(e){return y.escapePressed(e)?t(e):void 0})},d("ready",function(){return f(document.body)}),d("up:fragment:inserted",function(t){return u(t.$element)}),d("up:fragment:destroy",function(t){return c(t.$element)}),d("up:framework:boot",g),d("up:framework:reset",v),{compiler:i,on:d,hello:f,onEscape:h,data:s}}(jQuery),up.compiler=up.magic.compiler,up.on=up.magic.on,up.hello=up.magic.hello,up.ready=function(){return up.util.error("up.ready no longer exists. Please use up.hello instead.")},up.awaken=function(){return up.util.error("up.awaken no longer exists. Please use up.compiler instead.")}}.call(this),function(){up.history=function(t){var e,n,r,o,u,i,a,s,l,p,c,f,d,m,h,v;return v=up.util,n=v.config({popTargets:["body"],restoreScroll:!0}),p=void 0,i=void 0,m=function(){return n.reset(),p=void 0,i=void 0},a=function(t){return v.normalizeUrl(t,{hash:!0})},r=function(){return a(up.browser.url())},o=function(t){return a(t)===r()},s=function(t){return i&&(p=i,i=void 0),i=t},d=function(t,e){return u("replace",t,e)},c=function(t,e){return u("push",t,e)},u=function(t,n,u){var i,a;return u=v.options(u,{force:!1}),u.force||!o(n)?up.browser.canPushState()?(i=t+"State",a=e(),v.debug("Changing history to URL %o (%o)",n,t),window.history[i](a,"",n),s(r())):v.error("This browser doesn't support history.pushState"):void 0},e=function(){return{fromUp:!0}},h=function(t){var e,o;return o=r(),v.debug("Restoring state %o (now on "+o+")",t),e=n.popTargets.join(", "),up.replace(e,o,{history:!1,reveal:!1,transition:"none",saveScroll:!1,restoreScroll:n.restoreScroll})},l=function(t){var e;return v.debug("History state popped to URL %o",r()),s(r()),up.layout.saveScroll({url:p}),e=t.originalEvent.state,(null!=e?e.fromUp:void 0)?h(e):v.debug("Discarding unknown state %o",e)},up.browser.canPushState()&&(f=function(){return t(window).on("popstate",l),d(r(),{force:!0})},"undefined"!=typeof jasmine&&null!==jasmine?f():setTimeout(f,100)),up.compiler("[up-back]",function(t){return v.isPresent(p)?(v.setMissingAttrs(t,{"up-href":p,"up-restore-scroll":""}),t.removeAttr("up-back"),up.link.makeFollowable(t)):void 0}),up.on("up:framework:reset",m),{config:n,defaults:function(){return v.error("up.history.defaults(...) no longer exists. Set values on he up.history.config property instead.")},push:c,replace:d,url:r,previousUrl:function(){return p},normalizeUrl:a}}(jQuery)}.call(this),function(){var t=[].slice;up.layout=function(e){var n,r,o,u,i,a,s,l,p,c,f,d,m,h,v,g,y,b;return h=up.util,o=h.config({duration:0,viewports:[document,".up-modal","[up-viewport]"],fixedTop:["[up-fixed~=top]"],fixedBottom:["[up-fixed~=bottom]"],anchoredRight:["[up-anchored~=right]","[up-fixed~=top]","[up-fixed~=bottom]","[up-fixed~=right]"],snap:50,substance:150,easing:"swing"}),a=h.cache({size:30,key:up.history.normalizeUrl}),l=function(){return o.reset(),a.clear()},n="up-scroll-promise",d=function(t,r,i){var a,s,l,p,c;return a=e(t),i=h.options(i),l=h.option(i.duration,o.duration),p=h.option(i.easing,o.easing),u(a),l>0?(s=e.Deferred(),a.data(n,s),s.then(function(){return a.removeData(n),a.finish()}),c={scrollTop:r},a.get(0)===document&&(a=e("html, body")),a.animate(c,{duration:l,easing:p,complete:function(){return s.resolve()}}),s):(a.scrollTop(r),h.resolvedDeferred())},u=function(t){return e(t).each(function(){var t;return(t=e(this).data(n))?t.resolve():void 0})},r=function(){return h.multiSelector(o.anchoredRight).select()},s=function(){var n,r,u,i;return u=function(t,n){var r,o;return r=e(t),o=r.css(n),h.isPresent(o)||h.error("Fixed element %o must have a CSS attribute %o",r,n),parseInt(o)+r.height()},r=function(){var t,n,r,a;for(r=e(o.fixedTop.join(", ")),a=[],t=0,n=r.length;n>t;t++)i=r[t],a.push(u(i,"top"));return a}(),n=function(){var t,n,r,a;for(r=e(o.fixedBottom.join(", ")),a=[],t=0,n=r.length;n>t;t++)i=r[t],a.push(u(i,"bottom"));return a}(),{top:Math.max.apply(Math,[0].concat(t.call(r))),bottom:Math.max.apply(Math,[0].concat(t.call(n)))}},c=function(t,n){var r,u,i,a,l,p,c,f,m,g,y,b,w,k;return n=h.options(n),r=e(t),u=n.viewport?e(n.viewport):v(r),b=h.option(n.snap,o.snap),k=u.is(document),w=k?h.clientSize().height:u.height(),m=u.scrollTop(),p=m,f=void 0,c=void 0,k?(c=s(),f=0):(c={top:0,bottom:0},f=m),g=function(){return p+c.top},y=function(){return p+w-c.bottom-1},i=h.measure(r,{relative:u}),a=i.top+f,l=a+Math.min(i.height,o.substance)-1,l>y()&&(p+=l-y()),(a<g()||n.top)&&(p=a-c.top),b>p&&(p=0),p!==m?d(u,p,n):h.resolvedDeferred()},g=function(){return h.multiSelector(o.viewports)},v=function(t){var n,r;return n=e(t),r=g().seekUp(n),r.length||h.error("Could not find viewport for %o",n),r},b=function(t){var n;return n=e(t),g().findWithSelf(n)},y=function(){return g().select()},m=function(){var t,n,r,u,i,a,s;for(a={},i=o.viewports,n=0,u=i.length;u>n;n++)s=i[n],t=e(s),t.length&&(r=s,s===document&&(r="document"),a[r]=t.scrollTop());return a},i=function(t){var n,r;return null==t&&(t=void 0),t||(t=document.body),r=e(t),n=r.find("[up-fixed]"),h.isPresent(o.fixedTop)&&(n=n.add(r.find(o.fixedTop.join(", ")))),h.isPresent(o.fixedBottom)&&(n=n.add(r.find(o.fixedBottom.join(", ")))),n},f=function(t){var e,n;return null==t&&(t={}),n=h.option(t.url,up.history.url()),e=h.option(t.tops,m()),a.set(n,e)},p=function(t){var e,n,r,o,u,i,s,l,p;null==t&&(t={}),o=void 0,t.around?(n=b(t.around),e=v(t.around),o=e.add(n)):o=y(),p=a.get(up.history.url()),i=[];for(u in p)l=p[u],s="document"===u?document:u,r=o.filter(s),i.push(up.scroll(r,l,{duration:0}));return i},up.on("up:framework:reset",l),{reveal:c,scroll:d,finishScrolling:u,config:o,defaults:function(){return h.error("up.layout.defaults(...) no longer exists. Set values on he up.layout.config property instead.")},viewportOf:v,viewportsWithin:b,viewports:y,scrollTops:m,saveScroll:f,restoreScroll:p,anchoredRight:r,fixedChildren:i}}(jQuery),up.scroll=up.layout.scroll,up.reveal=up.layout.reveal}.call(this),function(){up.flow=function(t){var e,n,r,o,u,i,a,s,l,p,c,f,d,m,h,v,g;return g=up.util,m=function(e,n){var r;return r=t(e),g.isPresent(n)&&(n=g.normalizeUrl(n)),r.attr("up-source",n)},h=function(e){var n;return n=t(e).closest("[up-source]"),g.presence(n.attr("up-source"))||up.browser.url()},f=function(e,n,r){var o,u,i;return g.debug("Replace %o with %o (options %o)",e,n,r),r=g.options(r),i=g.presence(e)?e:g.createSelectorFromElement(t(e)),up.browser.canPushState()||r.history===!1?(u={url:n,method:r.method,selector:i,cache:r.cache,preload:r.preload},o=up.proxy.ajax(u),o.done(function(t,e,o){var s,l;return(s=g.locationFromXhr(o))&&(g.debug("Location from server: %o",s),l={url:s,method:g.methodFromXhr(o),selector:i},up.proxy.alias(u,l),n=s),r.history!==!1&&(r.history=n),r.source!==!1&&(r.source=n),r.preload?void 0:a(i,t,r)}),o.fail(g.error),o):(r.preload||up.browser.loadPage(n,g.only(r,"method")),g.resolvedPromise())},a=function(t,e,n){var r,u,i,a,s,c,f,d;for(n=g.options(n,{historyMethod:"push"}),n.source=g.option(n.source,n.history),c=p(e),n.title||(n.title=c.title()),n.saveScroll!==!1&&up.layout.saveScroll(),s=l(t,n),f=[],i=0,a=s.length;a>i;i++)d=s[i],u=o(d.selector),r=c.find(d.selector).first(),f.push(v(u,r,d.pseudoClass,d.transition,n));return f},o=function(t){return u(".up-popup "+t)||u(".up-modal "+t)||u(t)||i(t)},i=function(t){var e;return e="Could not find selector %o in current body HTML","#"===e[0]&&(e+=" (avoid using IDs)"),g.error(e,t)},p=function(e){var n;return n=g.createElementFromHtml(e),{title:function(){var t;return null!=(t=n.querySelector("title"))?t.textContent:void 0},find:function(r){var o;return(o=n.querySelector(r))?t(o):g.error("Could not find selector %o in response %o",r,e)}}},d=function(t,e){return e.reveal?up.reveal(t):g.resolvedDeferred()},r=function(t,n){return"function"==typeof n.insert&&n.insert(t),n.history&&(n.title&&(document.title=n.title),up.history[n.historyMethod](n.history)),n.source!==!1&&m(t,n.source),n.restoreScroll&&up.layout.restoreScroll({around:t}),e(t),up.hello(t)},v=function(t,e,o,u,i){var a,s;return u||(u="none"),up.motion.finish(t),o?(s="before"===o?"prepend":"append",a=e.contents().wrap('<span class="up-insertion"></span>').parent(),t[s](a),g.copyAttributes(e,t),r(a.children(),i),d(a,i).then(function(){return up.animate(a,u,i)}).then(function(){g.unwrapElement(a)})):n(t,{animation:function(){return e.insertBefore(t),r(e,i),t.is("body")&&"none"!==u&&g.error("Cannot apply transitions to body-elements (%o)",u),up.morph(t,e,u,i)}})},l=function(t,e){var n,r,o,u,i,a,s,l,p,c,f;for(c=e.transition||e.animation||"none",n=/\ *,\ */,r=t.split(n),g.isPresent(c)&&(f=c.split(n)),a=[],o=u=0,i=r.length;i>u;o=++u)s=r[o],l=s.match(/^(.+?)(?:\:(before|after))?$/),p=f[o]||g.last(f),a.push({selector:l[1],pseudoClass:l[2],transition:p});return a},e=function(t){var e,n;return n="[autofocus]:last",e=g.findWithSelf(t,n),e.length&&e.get(0)!==document.activeElement?e.focus():void 0},s=function(t){var e;return e=".up-ghost, .up-destroying",0===t.closest(e).length},u=function(e){var n,r,o,u,i,a;for(u=t(e).get(),r=null,i=0,a=u.length;a>i;i++)if(o=u[i],n=t(o),s(n)){r=n;break}return r},n=function(e,n){var r,o,u;return r=t(e),up.bus.nobodyPrevents("up:fragment:destroy",{$element:r})?(n=g.options(n,{animation:"none"}),o=up.motion.animateOptions(n),r.addClass("up-destroying"),g.isPresent(n.url)&&up.history.push(n.url),g.isPresent(n.title)&&(document.title=n.title),u=g.presence(n.animation,g.isDeferred)||up.motion.animate(r,n.animation,o),u.then(function(){return up.bus.emit("up:fragment:destroyed",{$element:r}),r.remove()}),u):t.Deferred()},c=function(t,e){var n;return e=g.options(e,{cache:!1}),n=e.url||h(t),f(t,n,e)},up.on("ready",function(){return m(document.body,up.browser.url())}),{replace:f,reload:c,destroy:n,implant:a,first:u}}(jQuery),up.replace=up.flow.replace,up.reload=up.flow.reload,up.destroy=up.flow.destroy,up.first=up.flow.first}.call(this),function(){up.motion=function(t){var e,n,r,o,u,i,a,s,l,p,c,f,d,m,h,v,g,y,b,w,k,x;return k=up.util,u={},s={},w={},l={},a=k.config({duration:300,delay:0,easing:"ease"}),v=function(){return u=k.copy(s),w=k.copy(l),a.reset()},n=function(e,o,u){var a;return a=t(e),c(a),u=r(u),("none"===o||o===!1)&&m(),k.isFunction(o)?i(o(a,u),o):k.isString(o)?n(a,p(o),u):k.isHash(o)?k.cssAnimate(a,o,u):k.error("Unknown animation type %o",o)},r=function(t,e){var n;return null==e&&(e=null),t=k.options(t),n={},n.easing=k.option(t.easing,null!=e?e.attr("up-easing"):void 0,a.easing),n.duration=Number(k.option(t.duration,null!=e?e.attr("up-duration"):void 0,a.duration)),n.delay=Number(k.option(t.delay,null!=e?e.attr("up-delay"):void 0,a.delay)),n},p=function(t){return u[t]||k.error("Unknown animation %o",t)},e="up-ghosting-promise",x=function(t,n,r,o){var u,i,a,s,l,p,c;return s=void 0,i=void 0,l=void 0,a=void 0,u=up.layout.viewportOf(t),k.temporaryCss(n,{display:"none"},function(){return s=h(t,u),s.$ghost.addClass("up-destroying"),s.$bounds.addClass("up-destroying"),l=u.scrollTop()}),k.temporaryCss(t,{display:"none"},function(){return r.reveal&&up.reveal(n,{viewport:u}),i=h(n,u),a=u.scrollTop()}),s.moveTop(a-l),t.hide(),c=k.temporaryCss(n,{visibility:"hidden"}),p=o(s.$ghost,i.$ghost),t.data(e,p),n.data(e,p),p.then(function(){return t.removeData(e),n.removeData(e),s.$bounds.remove(),i.$bounds.remove(),c()}),p},c=function(e){return t(e).each(function(){var e;return e=t(this),k.finishCssAnimate(e),f(e)})},f=function(t){var n;return(n=t.data(e))?(k.debug("Canceling existing ghosting on %o",t),"function"==typeof n.resolve?n.resolve():void 0):void 0},i=function(t,e){return k.isDeferred(t)?t:k.error("Did not return a promise with .then and .resolve methods: %o",e)},d=function(e,o,a,s){var l,p,f,m,h,v;return p=t(e),l=t(o),up.browser.canCssAnimation()?(m=k.only(s,"reveal"),m=k.extend(m,r(s)),c(p),c(l),"none"===a||a===!1||(f=u[a])?(p.hide(),s.reveal&&up.reveal(l),n(l,f||"none",s)):(v=k.presence(a,k.isFunction)||w[a])?x(p,l,m,function(t,e){var n;return n=v(t,e,m),i(n,a)}):k.isString(a)&&a.indexOf("/")>=0?(h=a.split("/"),v=function(t,e,r){return g(n(t,h[0],r),n(e,h[1],r))},d(p,l,v,m)):k.error("Unknown transition %o",a)):(p.hide(),k.resolvedDeferred())},h=function(e,n){var r,o,u,i,a,s,l,p,c;for(i=k.measure(e,{relative:!0,inner:!0}),u=e.clone(),u.find("script").remove(),u.css({position:"static"===e.css("position")?"static":"relative",top:"",right:"",bottom:"",left:"",width:"100%",height:"100%"}),u.addClass("up-ghost"),r=t('<div class="up-bounds"></div>'),r.css({position:"absolute"}),r.css(i),c=i.top,p=function(t){return 0!==t?(c+=t,r.css({top:c})):void 0},u.appendTo(r),r.insertBefore(e),p(e.offset().top-u.offset().top),o=up.layout.fixedChildren(u),s=0,l=o.length;l>s;s++)a=o[s],k.fixedToAbsolute(a,n);return{$ghost:u,$bounds:r,moveTop:p}},b=function(t,e){return w[t]=e},o=function(t,e){return u[t]=e},y=function(){return s=k.copy(u),l=k.copy(w)},g=k.resolvableWhen,m=k.resolvedDeferred,o("none",m),o("fade-in",function(t,e){return t.css({opacity:0}),n(t,{opacity:1},e)}),o("fade-out",function(t,e){return t.css({opacity:1}),n(t,{opacity:0},e)}),o("move-to-top",function(t,e){var r,o;return r=k.measure(t),o=r.top+r.height,t.css({"margin-top":"0px"}),n(t,{"margin-top":"-"+o+"px"},e)}),o("move-from-top",function(t,e){var r,o;return r=k.measure(t),o=r.top+r.height,t.css({"margin-top":"-"+o+"px"}),n(t,{"margin-top":"0px"},e)}),o("move-to-bottom",function(t,e){var r,o;return r=k.measure(t),o=k.clientSize().height-r.top,t.css({"margin-top":"0px"}),n(t,{"margin-top":o+"px"},e)}),o("move-from-bottom",function(t,e){var r,o;return r=k.measure(t),o=k.clientSize().height-r.top,t.css({"margin-top":o+"px"}),n(t,{"margin-top":"0px"},e)}),o("move-to-left",function(t,e){var r,o;return r=k.measure(t),o=r.left+r.width,t.css({"margin-left":"0px"}),n(t,{"margin-left":"-"+o+"px"},e)}),o("move-from-left",function(t,e){var r,o;return r=k.measure(t),o=r.left+r.width,t.css({"margin-left":"-"+o+"px"}),n(t,{"margin-left":"0px"},e)}),o("move-to-right",function(t,e){var r,o;return r=k.measure(t),o=k.clientSize().width-r.left,t.css({"margin-left":"0px"}),n(t,{"margin-left":o+"px"},e)}),o("move-from-right",function(t,e){var r,o;return r=k.measure(t),o=k.clientSize().width-r.left,t.css({"margin-left":o+"px"}),n(t,{"margin-left":"0px"},e)}),o("roll-down",function(t,e){var r,o;return r=t.height(),o=k.temporaryCss(t,{height:"0px",overflow:"hidden"}),n(t,{height:r+"px"},e).then(o)}),b("none",m),b("move-left",function(t,e,r){return g(n(t,"move-to-left",r),n(e,"move-from-right",r))}),b("move-right",function(t,e,r){return g(n(t,"move-to-right",r),n(e,"move-from-left",r))}),b("move-up",function(t,e,r){return g(n(t,"move-to-top",r),n(e,"move-from-bottom",r))}),b("move-down",function(t,e,r){return g(n(t,"move-to-bottom",r),n(e,"move-from-top",r))}),b("cross-fade",function(t,e,r){return g(n(t,"fade-out",r),n(e,"fade-in",r))}),up.on("up:framework:boot",y),up.on("up:framework:reset",v),{morph:d,animate:n,animateOptions:r,finish:c,transition:b,animation:o,config:a,defaults:function(){return k.error("up.motion.defaults(...) no longer exists. Set values on he up.motion.config property instead.")},none:m,when:g,prependCopy:h}}(jQuery),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(t){var e,n,r,o,u,i,a,s,l,p,c,f,d,m,h,v,g,y,b,w,k,x,S,C,A,T,P,E,D;return D=up.util,e=void 0,C=void 0,i=void 0,x=void 0,a=void 0,m=D.config({busyDelay:300,preloadDelay:75,cacheSize:70,cacheExpiry:3e5}),l=function(t){return k(t),[t.url,t.method,t.data,t.selector].join("|")},s=D.cache({size:function(){return m.cacheSize},expiry:function(){return m.cacheExpiry},key:l,log:"up.proxy"}),h=s.get,P=s.set,A=s.remove,d=s.clear,c=function(){return clearTimeout(C),C=null},p=function(){return clearTimeout(i),i=null},T=function(){return e=null,c(),p(),x=0,m.reset(),a=!1,s.clear()},T(),o=s.alias,k=function(t){return t._normalized||(t.method=D.normalizeMethod(t.method),t.url&&(t.url=D.normalizeUrl(t.url)),t.selector||(t.selector="body"),t._normalized=!0),t},r=function(t){var e,n,r,o,u;return e=t.cache===!0,n=t.cache===!1,u=D.only(t,"url","method","data","selector","_normalized"),r=!0,g(u)||e?(o=h(u))&&!n?r="pending"===o.state():(o=y(u),P(u,o),o.fail(function(){return A(u)})):(d(),o=y(u)),r&&!t.preload&&(w(),o.always(b)),o},n=["GET","OPTIONS","HEAD"],v=function(){return 0===x},u=function(){
|
2
|
-
return x>0},w=function(){var t,e;return e=v(),x+=1,e?(t=function(){return u()?(up.bus.emit("up:proxy:busy"),a=!0):void 0},m.busyDelay>0?i=setTimeout(t,m.busyDelay):t()):void 0},b=function(){return x-=1,v()&&a?(up.bus.emit("up:proxy:idle"),a=!1):void 0},y=function(t){var e;return D.debug("Loading URL %o",t.url),up.bus.emit("up:proxy:load",t),e=D.ajax(t),e.always(function(){return up.bus.emit("up:proxy:receive",t)}),e},g=function(t){return k(t),D.contains(n,t.method)},f=function(t){var n,r;return r=parseInt(D.presentAttr(t,"up-delay"))||m.preloadDelay,t.is(e)?void 0:(e=t,c(),n=function(){return S(t),e=null},E(n,r))},E=function(t,e){return C=setTimeout(t,e)},S=function(e,n){var r,o;return r=t(e),n=D.options(n),o=up.link.followMethod(r,n),g({method:o})?(D.debug("Preloading %o",r),n.preload=!0,up.follow(r,n)):(D.debug("Won't preload %o due to unsafe method %o",r,o),D.resolvedPromise())},up.on("mouseover mousedown touchstart","[up-preload]",function(t,e){return up.link.childClicked(t,e)?void 0:f(e)}),up.on("up:framework:reset",T),{preload:S,ajax:r,get:h,alias:o,clear:d,remove:A,idle:v,busy:u,config:m,defaults:function(){return D.error("up.proxy.defaults(...) no longer exists. Set values on he up.proxy.config property instead.")}}}(jQuery)}.call(this),function(){up.link=function($){var childClicked,follow,followMethod,makeFollowable,shouldProcessLinkEvent,u,visit;return u=up.util,visit=function(t,e){var n;return e=u.options(e),n=u.option(e.target,"body"),up.replace(n,t,e)},follow=function(t,e){var n,r,o;return n=$(t),e=u.options(e),o=u.option(n.attr("up-href"),n.attr("href")),r=u.option(e.target,n.attr("up-target"),"body"),e.transition=u.option(e.transition,u.castedAttr(n,"up-transition"),u.castedAttr(n,"up-animation")),e.history=u.option(e.history,u.castedAttr(n,"up-history")),e.reveal=u.option(e.reveal,u.castedAttr(n,"up-reveal"),!0),e.cache=u.option(e.cache,u.castedAttr(n,"up-cache")),e.restoreScroll=u.option(e.restoreScroll,u.castedAttr(n,"up-restore-scroll")),e.method=followMethod(n,e),e=u.merge(e,up.motion.animateOptions(e,n)),up.replace(r,o,e)},followMethod=function(t,e){return e=u.options(e),u.option(e.method,t.attr("up-method"),t.attr("data-method"),"get").toUpperCase()},up.on("click","a[up-target], [up-href][up-target]",function(t,e){return shouldProcessLinkEvent(t,e)?e.is("[up-instant]")?t.preventDefault():(t.preventDefault(),follow(e)):void 0}),up.on("mousedown","a[up-instant], [up-href][up-instant]",function(t,e){return shouldProcessLinkEvent(t,e)?(t.preventDefault(),follow(e)):void 0}),childClicked=function(t,e){var n,r;return n=$(t.target),r=n.closest("a, [up-href]"),r.length&&e.find(r).length},shouldProcessLinkEvent=function(t,e){return u.isUnmodifiedMouseEvent(t)&&!childClicked(t,e)},makeFollowable=function(t){var e;return e=$(t),u.isMissing(e.attr("up-target"))&&u.isMissing(e.attr("up-follow"))?e.attr("up-follow",""):void 0},up.on("click","a[up-follow], [up-href][up-follow]",function(t,e){return shouldProcessLinkEvent(t,e)?e.is("[up-instant]")?t.preventDefault():(t.preventDefault(),follow(e)):void 0}),up.compiler("[up-expand]",function(t){var e,n,r,o,i,a,s,l;for(o=t.find("a, [up-href]").get(0),o||u.error("No link to expand within %o",t),l=/^up-/,a={},a["up-href"]=$(o).attr("href"),s=o.attributes,n=0,r=s.length;r>n;n++)e=s[n],i=e.name,i.match(l)&&(a[i]=e.value);return u.setMissingAttrs(t,a),t.removeAttr("up-expand"),makeFollowable(t)}),up.compiler("[up-dash]",function(t){var e,n;return n=u.castedAttr(t,"up-dash"),e={"up-preload":"true","up-instant":"true"},n===!0?e["up-follow"]="":e["up-target"]=n,u.setMissingAttrs(t,e),t.removeAttr("up-dash")}),{knife:eval("undefined"!=typeof Knife&&null!==Knife?Knife.point:void 0),visit:visit,follow:follow,makeFollowable:makeFollowable,childClicked:childClicked,followMethod:followMethod}}(jQuery),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,e){var n,r,o,i,a,s,l,p,c,f,d,m;return n=$(t).closest("form"),e=u.options(e),p=u.option(e.target,n.attr("up-target"),"body"),r=u.option(e.failTarget,n.attr("up-fail-target"),function(){return u.createSelectorFromElement(n)}),i=u.option(e.history,u.castedAttr(n,"up-history"),!0),c=u.option(e.transition,u.castedAttr(n,"up-transition")),o=u.option(e.failTransition,u.castedAttr(n,"up-fail-transition"),c),a=u.option(e.method,n.attr("up-method"),n.attr("data-method"),n.attr("method"),"post").toUpperCase(),s={},s.reveal=u.option(e.reveal,u.castedAttr(n,"up-reveal"),!0),s.cache=u.option(e.cache,u.castedAttr(n,"up-cache")),s.restoreScroll=u.option(e.restoreScroll,u.castedAttr(n,"up-restore-scroll")),s=u.extend(s,up.motion.animateOptions(e,n)),m=u.option(e.cache,u.castedAttr(n,"up-cache")),d=u.option(e.url,n.attr("action"),up.browser.url()),n.addClass("up-active"),up.browser.canPushState()||i===!1?(l={url:d,method:a,data:n.serialize(),selector:p,cache:m},f=function(t){var e;return d=void 0,u.isGiven(i)&&(i===!1||u.isString(i)?d=i:(e=u.locationFromXhr(t))?d=e:"GET"===l.type&&(d=l.url+"?"+l.data)),u.option(d,!1)},up.proxy.ajax(l).always(function(){return n.removeClass("up-active")}).done(function(t,e,n){var r;return r=u.merge(s,{history:f(n),transition:c}),up.flow.implant(p,t,r)}).fail(function(t,e,n){var i,a;return a=t.responseText,i=u.merge(s,{transition:o}),up.flow.implant(r,a,i)})):void n.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,e;return e=$field.val(),t=u.isNull(knownValue),knownValue===e||(knownValue=e,t)?void 0:(clearTimer(),nextCallback=function(){return callback.apply($field.get(0),[e,$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,e){return t.preventDefault(),submit(e)}),up.compiler("[up-observe]",function(t){return observe(t)}),{submit:submit,observe:observe}}(jQuery),up.submit=up.form.submit,up.observe=up.form.observe}.call(this),function(){up.popup=function(t){var e,n,r,o,u,i,a,s,l,p,c,f,d,m,h;return m=up.util,a=void 0,o=m.config({openAnimation:"fade-in",closeAnimation:"fade-out",position:"bottom-right"}),c=function(){return r(),o.reset()},f=function(t,e,n){var r,o;return o=m.measure(t,{full:!0}),r=function(){switch(n){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 m.error("Unknown position %o",n)}}(),e.attr("up-position",n),e.css(r),l(e)},l=function(t){var e,n,r,o,u,i,a;if(n=m.measure(t,{full:!0}),r=null,o=null,n.right<0&&(r=-n.right),n.bottom<0&&(o=-n.bottom),n.left<0&&(r=n.left),n.top<0&&(o=n.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(e=parseInt(t.css("bottom")))return t.css("bottom",e+o)}},p=function(){var e;return e=t(".up-popup"),e.attr("up-previous-url",up.browser.url()),e.attr("up-previous-title",document.title)},s=function(){var e;return e=t(".up-popup"),e.removeAttr("up-previous-url"),e.removeAttr("up-previous-title")},i=function(t,e,n){var r,o;return o=m.$createElementFromSelector(".up-popup"),n&&o.attr("up-sticky",""),r=m.$createElementFromSelector(e),r.appendTo(o),o.appendTo(document.body),p(),o.hide(),o},h=function(t,e,n,r,o){return e.show(),f(t,e,n),up.animate(e,r,o)},e=function(e,n){var u,a,s,l,p,c,f,d,v;return u=t(e),n=m.options(n),v=m.option(n.url,u.attr("href")),f=m.option(n.target,u.attr("up-popup"),"body"),c=m.option(n.position,u.attr("up-position"),o.position),l=m.option(n.animation,u.attr("up-animation"),o.openAnimation),d=m.option(n.sticky,m.castedAttr(u,"up-sticky")),p=up.browser.canPushState()?m.option(n.history,m.castedAttr(u,"up-history"),!1):!1,s=up.motion.animateOptions(n,u),r(),a=i(u,f,d),up.replace(f,v,{history:p,insert:function(){return h(u,a,c,l,s)}})},d=function(){return a},r=function(e){var n;return n=t(".up-popup"),n.length?(e=m.options(e,{animation:o.closeAnimation,url:n.attr("up-previous-url"),title:n.attr("up-previous-title")}),a=void 0,up.destroy(n,e)):m.resolvedPromise()},n=function(){return t(".up-popup").is("[up-sticky]")?void 0:(s(),r())},u=function(e){var n;return n=t(e),n.closest(".up-popup").length>0},up.on("click","a[up-popup]",function(t,n){return t.preventDefault(),n.is(".up-current")?r():e(n)}),up.on("click","body",function(e,n){var o;return o=t(e.target),o.closest(".up-popup").length||o.closest("[up-popup]").length?void 0:r()}),up.on("up:fragment:inserted",function(t,e){var r;return u(e)?(r=e.attr("up-source"))?a=r:void 0:n()}),up.magic.onEscape(function(){return r()}),up.on("click","[up-close]",function(t,e){return e.closest(".up-popup").length?(r(),t.preventDefault()):void 0}),up.on("up:framework:reset",c),{attach:e,close:r,source:d,config:o,defaults:function(){return m.error("up.popup.defaults(...) no longer exists. Set values on he up.popup.config property instead.")},contains:u,open:function(){return up.warn("up.popup.open no longer exists. Please use up.popup.attach instead.")}}}(jQuery)}.call(this),function(){up.modal=function(t){var e,n,r,o,u,i,a,s,l,p,c,f,d,m,h,v,g,y;return h=up.util,r=h.config({maxWidth:void 0,minWidth:void 0,width:void 0,height:void 0,openAnimation:"fade-in",closeAnimation:"fade-out",closeLabel:"\xd7",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>'}}),i=void 0,c=function(){return n(),i=void 0,r.reset()},m=function(){var t;return t=r.template,h.isFunction(t)?t(r):t},p=function(){var e;return e=t(".up-modal"),e.attr("up-previous-url",up.browser.url()),e.attr("up-previous-title",document.title)},a=function(){var e;return e=t(".up-modal"),e.removeAttr("up-previous-url"),e.removeAttr("up-previous-title")},u=function(e){var n,r,o,u;return o=t(m()),e.sticky&&o.attr("up-sticky",""),o.attr("up-previous-url",up.browser.url()),o.attr("up-previous-title",document.title),r=o.find(".up-modal-dialog"),h.isPresent(e.width)&&r.css("width",e.width),h.isPresent(e.maxWidth)&&r.css("max-width",e.maxWidth),h.isPresent(e.height)&&r.css("height",e.height),n=o.find(".up-modal-content"),u=h.$createElementFromSelector(e.selector),u.appendTo(n),o.appendTo(document.body),p(),o.hide(),o},v=[],f=function(){var e,n,r,o;return r=h.scrollbarWidth(),e=parseInt(t("body").css("padding-right")),n=r+e,o=h.temporaryCss(t("body"),{"padding-right":n+"px","overflow-y":"hidden"}),v.push(o),up.layout.anchoredRight().each(function(){var e,n,o,u;return e=t(this),n=parseInt(e.css("right")),o=r+n,u=h.temporaryCss(e,{right:o}),v.push(u)})},g=function(t,e,n){var r;return f(),t.show(),r=up.animate(t,e,n),r.then(function(){return up.bus.emit("up:modal:opened")})},s=function(t,e){return e=h.options(e),e.$link=t,l(e)},y=function(t,e){return e=h.options(e),e.url=t,l(e)},l=function(e){var o,i,a,s,l,p,c,f,d,m,v;return e=h.options(e),o=h.option(e.$link,h.nullJquery()),m=h.option(e.url,o.attr("up-href"),o.attr("href")),f=h.option(e.target,o.attr("up-modal"),"body"),v=h.option(e.width,o.attr("up-width"),r.width),c=h.option(e.maxWidth,o.attr("up-max-width"),r.maxWidth),l=h.option(e.height,o.attr("up-height"),r.height),s=h.option(e.animation,o.attr("up-animation"),r.openAnimation),d=h.option(e.sticky,h.castedAttr(o,"up-sticky")),p=up.browser.canPushState()?h.option(e.history,h.castedAttr(o,"up-history"),!0):!1,a=up.motion.animateOptions(e,o),n(),up.bus.nobodyPrevents("up:modal:open",{url:m})?(i=u({selector:f,width:v,maxWidth:c,height:l,sticky:d}),up.replace(f,m,{history:p,insert:function(){return g(i,s,a)}})):t.Deferred()},d=function(){return i},n=function(e){var n,o;return n=t(".up-modal"),n.length?up.bus.nobodyPrevents("up:modal:close",{$element:n})?(e=h.options(e,{animation:r.closeAnimation,url:n.attr("up-previous-url"),title:n.attr("up-previous-title")}),i=void 0,o=up.destroy(n,e),o.then(function(){for(var t;t=v.pop();)t();return up.bus.emit("up:modal:closed")}),o):t.Deferred():h.resolvedDeferred()},e=function(){return t(".up-modal").is("[up-sticky]")?void 0:(a(),n())},o=function(e){var n;return n=t(e),n.closest(".up-modal").length>0},up.on("click","a[up-modal]",function(t,e){return t.preventDefault(),e.is(".up-current")?n():l(e)}),up.on("click","body",function(e,r){var o;return o=t(e.target),o.closest(".up-modal-dialog").length||o.closest("[up-modal]").length?void 0:n()}),up.on("up:fragment:inserted",function(t,n){var r;if(o(n)){if(r=n.attr("up-source"))return i=r}else if(!up.popup.contains(n))return e()}),up.magic.onEscape(function(){return n()}),up.on("click","[up-close]",function(t,e){return e.closest(".up-modal").length?(n(),t.preventDefault()):void 0}),up.on("up:framework:reset",c),{visit:y,follow:s,open:function(){return up.error("up.modal.open no longer exists. Please use either up.modal.follow or up.modal.visit.")},close:n,source:d,config:r,defaults:function(){return h.error("up.modal.defaults(...) no longer exists. Set values on he up.modal.config property instead.")},contains:o}}(jQuery)}.call(this),function(){up.tooltip=function(t){var e,n,r,o,u;return u=up.util,o=function(t,e,n){var r,o,i;return o=u.measure(t),i=u.measure(e),r=function(){switch(n){case"top":return{left:o.left+.5*(o.width-i.width),top:o.top-i.height};case"bottom":return{left:o.left+.5*(o.width-i.width),top:o.top+o.height};default:return u.error("Unknown position %o",n)}}(),e.attr("up-position",n),e.css(r)},r=function(t){var e;return e=u.$createElementFromSelector(".up-tooltip"),u.isGiven(t.text)?e.text(t.text):e.html(t.html),e.appendTo(document.body),e},e=function(e,i){var a,s,l,p,c,f,d;return null==i&&(i={}),a=t(e),c=u.option(i.html,a.attr("up-tooltip-html")),d=u.option(i.text,a.attr("up-tooltip"),a.attr("title")),f=u.option(i.position,a.attr("up-position"),"top"),p=u.option(i.animation,u.castedAttr(a,"up-animation"),"fade-in"),l=up.motion.animateOptions(i,a),n(),s=r({text:d,html:c}),o(a,s,f),up.animate(s,p,l)},n=function(e){var n;return n=t(".up-tooltip"),n.length?(e=u.options(e,{animation:"fade-out"}),e=u.merge(e,up.motion.animateOptions(e)),up.destroy(n,e)):void 0},up.compiler("[up-tooltip], [up-tooltip-html]",function(t){return t.on("mouseover",function(){return open(t)}),t.on("mouseout",function(){return n()})}),up.on("click","body",function(t,e){return n()}),up.on("up:framework:reset",n),up.magic.onEscape(function(){return n()}),{attach:e,close:n,open:function(){return u.error("up.tooltip.open no longer exists. Use up.tooltip.attach instead.")}}}(jQuery)}.call(this),function(){up.navigation=function(t){var e,n,r,o,u,i,a,s,l,p,c,f,d,m,h,v,g;return h=up.util,i=h.config({currentClasses:["up-current"]}),c=function(){return i.reset()},a=function(){var t;return t=i.currentClasses,t=t.concat(["up-current"]),t=h.uniq(t),t.join(" ")},e="up-active",n=["a","[up-href]","[up-alias]"],o=n.join(", "),u=function(){var t,e,r;for(r=[],t=0,e=n.length;e>t;t++)m=n[t],r.push(m+"[up-instant]");return r}().join(", "),r="."+e,p=function(t){return h.isPresent(t)?h.normalizeUrl(t,{search:!1,stripTrailingSlash:!0}):void 0},d=function(t){var e,n,r,o,u,i,a,s,l,c;for(s=[],i=["href","up-href","up-alias"],n=0,o=i.length;o>n;n++)if(e=i[n],l=h.presentAttr(t,e))for(c="up-alias"===e?l.split(" "):[l],r=0,u=c.length;u>r;r++)a=c[r],"#"!==a&&(a=p(a),s.push(a));return s},g=function(t){var e,n,r,o;return t=h.compact(t),r=function(t){return"*"===t.substr(-1)?n(t.slice(0,-1)):e(t)},e=function(e){return h.contains(t,e)},n=function(e){return h.detect(t,function(t){return 0===t.indexOf(e)})},o=function(t){return h.detect(t,r)},{matchesAny:o}},l=function(){var e,n;return e=g([p(up.browser.url()),p(up.modal.source()),p(up.popup.source())]),n=a(),h.each(t(o),function(r){var o,u;return o=t(r),u=d(o),e.matchesAny(u)?o.addClass(n):o.removeClass(n)})},f=function(t){return v(),t=s(t),t.addClass(e)},s=function(t){return h.presence(t.parents(o))||t},v=function(){return t(r).removeClass(e)},up.on("click",o,function(t,e){return h.isUnmodifiedMouseEvent(t)&&!e.is("[up-instant]")?f(e):void 0}),up.on("mousedown",u,function(t,e){return h.isUnmodifiedMouseEvent(t)?f(e):void 0}),up.on("up:fragment:inserted",function(){return v(),l()}),up.on("up:fragment:destroy",function(t,e){return e.is(".up-modal, .up-popup")?l():void 0}),up.on("up:framework:reset",c),{config:i,defaults:function(){return h.error("up.navigation.defaults(...) no longer exists. Set values on he up.navigation.config property instead.")}}}(jQuery)}.call(this),function(){up.browser.isSupported()&&(up.bus.emit("up:framework:boot"),up.bus.emit("up:framework:booted"))}.call(this),function(){}.call(this);
|
1
|
+
(function(){window.up={}}).call(this),function(){var t=[].slice;up.util=function(e){var n,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g,y,b,w,k,x,S,C,T,E,P,A,O,$,D,j,U,z,R,M,L,W,F,I,_,Q,N,K,H,q,B,J,G,X,V,Y,Z,te,ee,ne,re,oe,ue,ie,ae,se,le,ce,pe,fe,de,me,he,ve,ge,ye,be,we,ke,xe,Se,Ce,Te,Ee,Pe,Ae,Oe,$e,De,je,Ue,ze,Re;return ue=function(e){var n,r;return n=void 0,r=!1,function(){var o;return o=1<=arguments.length?t.call(arguments,0):[],r?n:(r=!0,n=e.apply(null,o))}},u=function(t){return t=m(t),t.selector&&(t.headers={"X-Up-Selector":t.selector}),e.ajax(t)},X=function(t,e){return(""===e||"80"===e)&&"http:"===t||"443"===e&&"https:"===t},pe=function(t,n){var r,o,u;return r=null,V(t)?(r=e("<a>").attr({href:t}).get(0),M(r.hostname)&&(r.href=r.href)):r=je(t),o=r.protocol+"//"+r.hostname,X(r.protocol,r.port)||(o+=":"+r.port),u=r.pathname,"/"!==u[0]&&(u="/"+u),(null!=n?n.stripTrailingSlash:void 0)===!0&&(u=u.replace(/\/$/,"")),o+=u,(null!=n?n.hash:void 0)===!0&&(o+=r.hash),(null!=n?n.search:void 0)!==!1&&(o+=r.search),o},ce=function(t){return t?t.toUpperCase():"GET"},n=function(t){var n,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g;for(v=t.split(/[ >]/),o=null,p=f=0,m=v.length;m>f;p=++f){for(a=v[p],i=a.match(/(^|\.|\#)[A-Za-z0-9\-_]+/g),g="div",u=[],c=null,d=0,h=i.length;h>d;d++)switch(s=i[d],s[0]){case".":u.push(s.substr(1));break;case"#":c=s.substr(1);break;default:g=s}l="<"+g,u.length&&(l+=' class="'+u.join(" ")+'"'),c&&(l+=' id="'+c+'"'),l+=">",n=e(l),r&&n.appendTo(r),0===p&&(o=n),r=n}return o},v=function(t,e){var n;return n=document.createElement(t),J(e)&&(n.innerHTML=e),n},w=function(){var e,n,r;return n=arguments[0],e=2<=arguments.length?t.call(arguments,1):[],n="[UP] "+n,(r=up.browser).puts.apply(r,["debug",n].concat(t.call(e)))},Re=function(){var e,n,r;return n=arguments[0],e=2<=arguments.length?t.call(arguments,1):[],n="[UP] "+n,(r=up.browser).puts.apply(r,["warn",n].concat(t.call(e)))},T=function(){var n,r,o,u;throw r=1<=arguments.length?t.call(arguments,0):[],r[0]="[UP] "+r[0],(u=up.browser).puts.apply(u,["error"].concat(t.call(r))),o=P.apply(null,r),n=ye(e(".up-error"))||e('<div class="up-error"></div>').prependTo("body"),n.addClass("up-error"),n.text(o),new Error(o)},o=/\%[odisf]/g,P=function(){var e,n,r,u;return e=1<=arguments.length?t.call(arguments,0):[],u=e[0],n=0,r=80,u.replace(o,function(){var t,o;return n+=1,t=e[n],o=typeof t,"string"===o?(t=t.replace(/\s+/g," "),t.length>r&&(t=t.substr(0,r)+"\u2026"),t='"'+t+'"'):t="undefined"===o?"undefined":"number"===o||"function"===o?t.toString():JSON.stringify(t),t.length>r&&(t=t.substr(0,r)+" \u2026",("object"===o||"function"===o)&&(t+=" }")),t})},y=function(t){var e,n,r,o,u,i,a;for(w("Creating selector from element %o",t),n=(e=t.attr("class"))?e.split(" "):[],r=t.attr("id"),a=t.prop("tagName").toLowerCase(),r&&(a+="#"+r),o=0,i=n.length;i>o;o++)u=n[o],a+="."+u;return a},g=function(t){var e,n,r,o,u,i,a,s,l,c,p,f;return l=function(t){return"<"+t+"(?: [^>]*)?>"},i=function(t){return"</"+t+">"},e="(?:.|\\n)*?",u=function(t){return"("+t+")"},f=new RegExp(l("head")+e+l("title")+u(e)+i("title")+e+i("body"),"i"),o=new RegExp(l("body")+u(e)+i("body"),"i"),(r=t.match(o))?(s=document.createElement("html"),n=v("body",r[1]),s.appendChild(n),(p=t.match(f))&&(a=v("head"),s.appendChild(a),c=v("title",p[1]),a.appendChild(c)),s):v("div",t)},A=e.extend,De=e.trim,x=function(t,e){var n,r,o,u,i;for(i=[],n=o=0,u=t.length;u>o;n=++o)r=t[n],i.push(e(r,n));return i},re=x,U=function(t){return t},Oe=function(t,e){var n,r,o,u;for(u=[],n=r=0,o=t-1;o>=0?o>=r:r>=o;n=o>=0?++r:--r)u.push(e(n));return u},H=function(t){return null===t},Y=function(t){return void 0===t},W=function(t){return!Y(t)},K=function(t){return Y(t)||H(t)},_=function(t){return!K(t)},M=function(t){return K(t)||B(t)&&0===Object.keys(t).length||0===t.length},ye=function(t,e){return null==e&&(e=J),e(t)?t:null},J=function(t){return!M(t)},I=function(t){return"function"==typeof t},V=function(t){return"string"==typeof t},q=function(t){return"number"==typeof t},Q=function(t){return"object"==typeof t&&!!t},B=function(t){return Q(t)||"function"==typeof t},F=function(t){return!(!t||1!==t.nodeType)},N=function(t){return t instanceof jQuery},G=function(t){return B(t)&&I(t.then)},L=function(t){return G(t)&&I(t.resolve)},z=function(t){return _(t)?t:void 0},R=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},$e=function(t){return Array.prototype.slice.call(t)},m=function(t){return R(t)?t.slice():A({},t)},je=function(t){return N(t)?t.get(0):t},ie=function(t,e){return A(m(t),e)},ge=function(t,e){var n,r,o,u;if(o=t?m(t):{},e)for(r in e)n=e[r],u=o[r],_(u)?B(n)&&B(u)&&(o[r]=ge(u,n)):o[r]=n;return o},ve=function(){var e,n,r,o,u,i;for(n=1<=arguments.length?t.call(arguments,0):[],u=void 0,r=0,o=n.length;o>r;r++)if(e=n[r],i=e,I(i)&&(i=i()),_(i)){u=i;break}return u},k=function(t,e){var n,r,o,u;for(u=void 0,r=0,o=t.length;o>r;r++)if(n=t[r],e(n)){u=n;break}return u},i=function(t,e){var n;return n=k(t,e),W(n)},p=function(t){return Te(t,_)},Ue=function(t){var e;return e={},Te(t,function(t){return e.hasOwnProperty(t)?!1:e[t]=!0})},Te=function(t,e){var n;return n=[],x(t,function(t){return e(t)?n.push(t):void 0}),n},be=function(){var e,n,r,o;return e=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++)n=r[t],u.push(e.attr(n));return u}(),k(o,J)},le=function(t){return setTimeout(t,0)},ee=function(t){return t[t.length-1]},c=function(){var t;return t=document.documentElement,{width:t.clientWidth,height:t.clientHeight}},Ce=ue(function(){var t,n,r;return t=e("<div>").css({position:"absolute",top:"0",left:"0",width:"50px",height:"50px",overflowY:"scroll"}),t.appendTo(document.body),n=t.get(0),r=n.offsetWidth-n.clientWidth,t.remove(),r}),me=function(t){var e;return e=void 0,function(){return null!=t&&(e=t()),t=void 0,e}},Ae=function(t,e,n){var r,o;return o=t.css(Object.keys(e)),t.css(e),r=function(){return t.css(o)},n?(n(),r()):me(r)},j=function(t){var e,n;return n=t.css(["transform","-webkit-transform"]),M(n)?(e=function(){return t.css(n)},t.css({transform:"translateZ(0)","-webkit-transform":"translateZ(0)"})):e=function(){},e},b=function(t,n,o){var u,i,a,s,l,c;return u=e(t),up.browser.canCssAnimation()?(o=ge(o,{duration:300,delay:0,easing:"ease"}),i=e.Deferred(),s={"transition-property":Object.keys(n).join(", "),"transition-duration":o.duration+"ms","transition-delay":o.delay+"ms","transition-timing-function":o.easing},l=j(u),c=Ae(u,s),u.css(n),i.then(l),i.then(c),u.data(r,i),i.then(function(){return u.removeData(r)}),a=setTimeout(function(){return i.resolve()},o.duration+o.delay),i.then(function(){return clearTimeout(a)}),i):(u.css(n),xe())},r="up-animation-promise",$=function(t){return e(t).each(function(){var t;return(t=e(this).data(r))?t.resolve():void 0})},oe=function(t,n){var r,o,u,i,a,s;return n=ge(n,{relative:!1,inner:!1,full:!1}),n.relative?n.relative===!0?i=t.position():(r=e(n.relative),a=t.offset(),r.is(document)?i=a:(u=r.offset(),i={left:a.left-u.left,top:a.top-u.top})):i=t.offset(),o={left:i.left,top:i.top},n.inner?(o.width=t.width(),o.height=t.height()):(o.width=t.outerWidth(),o.height=t.outerHeight()),n.full&&(s=c(),o.right=s.width-(o.left+o.width),o.bottom=s.height-(o.top+o.height)),o},h=function(t,e){var n,r,o,u,i;for(u=t.get(0).attributes,i=[],r=0,o=u.length;o>r;r++)n=u[r],i.push(n.specified?e.attr(n.name,n.value):void 0);return i},O=function(t,e){return t.find(e).addBack(e)},E=function(t){return 27===t.keyCode},Pe=function(t,e){return 0===t.indexOf(e)},C=function(t,e){return t.indexOf(e)===t.length-e.length},d=function(t,e){return t.indexOf(e)>=0},l=function(t,e){var n;switch(n=t.attr(e)){case"false":return!1;case"true":return!0;case"":return!0;default:return n}},ne=function(t){return t.getResponseHeader("X-Up-Location")},ae=function(t){return t.getResponseHeader("X-Up-Method")},he=function(){var e,n,r,o,u,i;for(i=arguments[0],o=2<=arguments.length?t.call(arguments,1):[],e={},n=0,u=o.length;u>n;n++)r=o[n],i.hasOwnProperty(r)&&(e[r]=i[r]);return e},Z=function(t){return!(t.metaKey||t.shiftKey||t.ctrlKey)},te=function(t){var e;return e=Y(t.button)||0===t.button,e&&Z(t)},xe=function(){var t;return t=e.Deferred(),t.resolve(),t},Se=function(){return xe().promise()},fe=function(){return{is:function(){return!1},attr:function(){},find:function(){return[]}}},ke=function(){var n,r;return n=1<=arguments.length?t.call(arguments,0):[],r=e.when.apply(e,n),r.resolve=function(){return x(n,function(t){return"function"==typeof t.resolve?t.resolve():void 0})},r},Ee=function(t,e){var n,r,o;r=[];for(n in e)o=e[n],r.push(K(t.attr(n))?t.attr(n,o):void 0);return r},we=function(t,e){var n;return n=t.indexOf(e),n>=0?(t.splice(n,1),e):void 0},S=function(){return e([])},se=function(t){var n,r,o,u,a,s,l;for(a={},l=[],r=[],o=0,u=t.length;u>o;o++)s=t[o],V(s)?l.push(s):r.push(s);return a.parsed=r,l.length&&(n=l.join(", "),a.parsed.push(n)),a.select=function(){return a.find(void 0)},a.find=function(t){var n,r,o,u,i,s;for(r=S(),i=a.parsed,o=0,u=i.length;u>o;o++)s=i[o],n=t?t.find(s):e(s),r=r.add(n);return r},a.findWithSelf=function(t){var e;return e=a.find(t),a.doesMatch(t)&&(e=e.add(t)),e},a.doesMatch=function(t){var n;return n=e(t),i(a.parsed,function(t){return n.is(t)})},a.seekUp=function(t){var n,r,o;for(o=e(t),n=o,r=void 0;n.length;){if(a.doesMatch(n)){r=n;break}n=n.parent()}return r||S()},a},s=function(e){var n,r,o,u,i,a,s,l,c,p,f,d;return null==e&&(e={}),f=void 0,r=function(){return f={}},r(),s=function(){var n;return n=1<=arguments.length?t.call(arguments,0):[],e.log?(n[0]="["+e.log+"] "+n[0],w.apply(null,n)):void 0},a=function(){return Object.keys(f)},l=function(){return K(e.size)?void 0:I(e.size)?e.size():q(e.size)?e.size:T("Invalid size config: %o",e.size)},o=function(){return K(e.expiry)?void 0:I(e.expiry)?e.expiry():q(e.expiry)?e.expiry:T("Invalid expiry config: %o",e.expiry)},c=function(t){return e.key?e.key(t):t.toString()},De=function(){var t,e,n,r;return r=m(a()),n=l(),n&&r.length>n&&(t=null,e=null,x(r,function(n){var r,o;return r=f[n],o=r.timestamp,!e||e>o?(t=n,e=o):void 0}),t)?delete f[t]:void 0},n=function(t,e){var n;return n=u(t),W(n)?p(e,n):void 0},d=function(){return(new Date).valueOf()},p=function(t,e){var n;return n=c(t),f[n]={timestamp:d(),value:e}},we=function(t){var e;return e=c(t),delete f[e]},i=function(t){var e,n;return e=o(),e?(n=d()-t.timestamp,n<o()):!0},u=function(t,e){var n,r;return null==e&&(e=void 0),r=c(t),(n=f[r])?i(n)?(s("Cache hit for %o",t),n.value):(s("Discarding stale cache entry for %o",t),we(t),e):(s("Cache miss for %o",t),e)},{alias:n,get:u,set:p,remove:we,clear:r,keys:a}},f=function(t){var e;return null==t&&(t={}),e={},e.reset=function(){return A(e,t)},e.reset(),Object.preventExtensions(e),e},ze=function(t){var e,n;return t=je(t),e=t.parentNode,n=$e(t.childNodes),x(n,function(n){return e.insertBefore(n,t)}),e.removeChild(t)},de=function(t){var e,n;for(e=void 0;(t=t.parent())&&t.length;)if(n=t.css("position"),"absolute"===n||"relative"===n||t.is("body")){e=t;break}return e},D=function(t,n){var r,o,u,i;return r=e(t),o=de(r),u=r.position(),i=o.offset(),r.css({position:"absolute",left:u.left-i.left,top:u.top-i.top+n.scrollTop(),right:"",bottom:""})},a=function(t){var e,n,r;return e=t.toString(),r=new RegExp("\\(([^\\)]*)\\)"),(n=e.match(r))?n[1].split(/\s*,\s*/):T("Could not parse argument names of %o",t)},{argNames:a,offsetParent:de,fixedToAbsolute:D,presentAttr:be,createElement:v,normalizeUrl:pe,normalizeMethod:ce,createElementFromHtml:g,$createElementFromSelector:n,createSelectorFromElement:y,ajax:u,extend:A,copy:m,merge:ie,options:ge,option:ve,error:T,debug:w,warn:Re,each:x,map:re,identity:U,times:Oe,any:i,detect:k,select:Te,compact:p,uniq:Ue,last:ee,isNull:H,isDefined:W,isUndefined:Y,isGiven:_,isMissing:K,isPresent:J,isBlank:M,presence:ye,isObject:B,isFunction:I,isString:V,isElement:F,isJQuery:N,isPromise:G,isDeferred:L,isHash:Q,ifGiven:z,isUnmodifiedKeyEvent:Z,isUnmodifiedMouseEvent:te,nullJquery:fe,unJquery:je,nextFrame:le,measure:oe,temporaryCss:Ae,cssAnimate:b,finishCssAnimate:$,forceCompositing:j,escapePressed:E,copyAttributes:h,findWithSelf:O,contains:d,startsWith:Pe,endsWith:C,isArray:R,toArray:$e,castedAttr:l,locationFromXhr:ne,methodFromXhr:ae,clientSize:c,only:he,trim:De,resolvedPromise:Se,resolvedDeferred:xe,resolvableWhen:ke,setMissingAttrs:Ee,remove:we,memoize:ue,scrollbarWidth:Ce,config:f,cache:s,unwrapElement:ze,multiSelector:se,emptyJQuery:S,evalConsoleTemplate:P}}($),up.error=up.util.error,up.warn=up.util.warn,up.debug=up.util.debug}.call(this),function(){var t=[].slice;up.browser=function(e){var n,r,o,u,i,a,s,l,c,p,f,d,m,h;return m=up.util,p=function(t,n){var r,o,u,i,a,s;return null==n&&(n={}),a=m.option(n.method,"get").toLowerCase(),"get"===a?location.href=t:e.rails?(s=n.target,u=e.rails.csrfToken(),o=e.rails.csrfParam(),r=e("<form method='post' action='"+t+"'></form>"),i="<input name='_method' value='"+a+"' type='hidden' />",m.isDefined(o)&&m.isDefined(u)&&(i+="<input name='"+o+"' value='"+u+"' type='hidden' />"),s&&r.attr("target",s),r.hide().append(i).appendTo("body"),r.submit()):error("Can't fake a "+a.toUpperCase()+" request without Rails UJS")},d=function(){var e,n,r;return r=arguments[0],e=2<=arguments.length?t.call(arguments,1):[],m.isDefined(console[r])||(r="log"),o()?console[r].apply(console,e):(n=m.evalConsoleTemplate.apply(m,e),console[r](n))},h=function(){return location.href},u=m.memoize(function(){return m.isDefined(history.pushState)&&"get"===i()}),a=m.memoize(function(){return m.isUndefined(document.addEventListener)}),s=m.memoize(function(){return a()||-1!==navigator.appVersion.indexOf("MSIE 9.")}),n=m.memoize(function(){return"transition"in document.documentElement.style}),r=m.memoize(function(){return"oninput"in document.createElement("input")}),o=m.memoize(function(){return!s()}),l=m.memoize(function(){var t,n,r,o;return o=e.fn.jquery,r=o.split("."),t=parseInt(r[0]),n=parseInt(r[1]),t>=2||1===t&&n>=9}),f=function(t){var e,n;return n=null!=(e=document.cookie.match(new RegExp(t+"=(\\w+)")))?e[1]:void 0,m.isPresent(n)&&(document.cookie=t+"=; expires=Thu, 01-Jan-70 00:00:01 GMT; path=/"),n},i=m.memoize(function(){return(f("_up_request_method")||"get").toLowerCase()}),c=function(){return!a()&&l()},{url:h,loadPage:p,canPushState:u,canCssAnimation:n,canInputEvent:r,canLogSubstitution:o,isSupported:c,puts:d}}(jQuery)}.call(this),function(){var t=[].slice;up.bus=function(e){var n,r,o,u;return u=up.util,n=function(t,n){var r,o;return null==n&&(n={}),o=e.Event(t,n),r=n.$element||e(document),u.debug("Emitting %o on %o with props %o",t,r,n),r.trigger(o),o},r=function(){var e,r;return e=1<=arguments.length?t.call(arguments,0):[],r=n.apply(null,e),!r.isDefaultPrevented()},o=function(){return up.bus.emit("up:framework:reset")},{emit:n,nobodyPrevents:r,reset:o}}(jQuery),up.reset=up.bus.reset}.call(this),function(){var t=[].slice;up.magic=function(e){var n,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g,y,b;return y=up.util,n="up-destroyable",r="up-destroyer",m=[],c=null,b=function(t){return function(n){var r;return r=n.$element||e(this),t.apply(r.get(0),[n,r,s(r)])}},d=function(){var n,r,o,u,i;return r=1<=arguments.length?t.call(arguments,0):[],up.browser.isSupported()?(u=y.copy(r),i=u.length-1,o=u[i],u[i]=b(o),m.push(u),n=e(document),n.on.apply(n,u),function(){return n.off.apply(n,u)}):function(){}},a=[],l=null,i=function(){var e,n,r;return r=arguments[0],e=2<=arguments.length?t.call(arguments,1):[],up.browser.isSupported()?(i=e.pop(),n=y.options(e[0],{batch:!1}),a.push({selector:r,callback:i,batch:n.batch})):void 0},o=function(t,e,o){var u;return y.debug("Applying compiler %o on %o",t.selector,o),u=t.callback.apply(o,[e,s(e)]),y.isFunction(u)?(e.addClass(n),e.data(r,u)):void 0},u=function(t){var n,r,u,s;for(y.debug("Compiling fragment %o",t),s=[],r=0,u=a.length;u>r;r++)i=a[r],n=y.findWithSelf(t,i.selector),s.push(n.length?i.batch?o(i,n,n.get()):n.each(function(){return o(i,e(this),this)}):void 0);return s},p=function(t){return y.findWithSelf(t,"."+n).each(function(){var t,n;return t=e(this),(n=t.data(r))()})},s=function(t){var n,r;return n=e(t),r=n.attr("up-data"),y.isString(r)&&""!==y.trim(r)?JSON.parse(r):{}},g=function(){return c=y.copy(m),l=y.copy(a)},v=function(){var t,n,r,o;for(n=0,r=m.length;r>n;n++)t=m[n],y.contains(c,t)||(o=e(document)).off.apply(o,t);return m=y.copy(c),a=y.copy(l)},f=function(t){var n;return n=e(t),up.bus.emit("up:fragment:inserted",{$element:n}),n},h=function(t){return d("keydown","body",function(e){return y.escapePressed(e)?t(e):void 0})},d("ready",function(){return f(document.body)}),d("up:fragment:inserted",function(t){return u(t.$element)}),d("up:fragment:destroy",function(t){return p(t.$element)}),d("up:framework:boot",g),d("up:framework:reset",v),{compiler:i,on:d,hello:f,onEscape:h,data:s}}(jQuery),up.compiler=up.magic.compiler,up.on=up.magic.on,up.hello=up.magic.hello,up.ready=function(){return up.util.error("up.ready no longer exists. Please use up.hello instead.")},up.awaken=function(){return up.util.error("up.awaken no longer exists. Please use up.compiler instead.")}}.call(this),function(){up.history=function(t){var e,n,r,o,u,i,a,s,l,c,p,f,d,m,h,v;return v=up.util,n=v.config({popTargets:["body"],restoreScroll:!0}),c=void 0,i=void 0,m=function(){return n.reset(),c=void 0,i=void 0},a=function(t){return v.normalizeUrl(t,{hash:!0})},r=function(){return a(up.browser.url())},o=function(t){return a(t)===r()},s=function(t){return i&&(c=i,i=void 0),i=t},d=function(t,e){return u("replace",t,e)},p=function(t,e){return u("push",t,e)},u=function(t,n,u){var i,a;return u=v.options(u,{force:!1}),u.force||!o(n)?up.browser.canPushState()?(i=t+"State",a=e(),v.debug("Changing history to URL %o (%o)",n,t),window.history[i](a,"",n),s(r())):v.error("This browser doesn't support history.pushState"):void 0},e=function(){return{fromUp:!0}},h=function(t){var e,o;return o=r(),v.debug("Restoring state %o (now on "+o+")",t),e=n.popTargets.join(", "),up.replace(e,o,{history:!1,reveal:!1,transition:"none",saveScroll:!1,restoreScroll:n.restoreScroll})},l=function(t){var e;return v.debug("History state popped to URL %o",r()),s(r()),up.layout.saveScroll({url:c}),e=t.originalEvent.state,(null!=e?e.fromUp:void 0)?h(e):v.debug("Discarding unknown state %o",e)},up.browser.canPushState()&&(f=function(){return t(window).on("popstate",l),d(r(),{force:!0})},"undefined"!=typeof jasmine&&null!==jasmine?f():setTimeout(f,100)),up.compiler("[up-back]",function(t){return v.isPresent(c)?(v.setMissingAttrs(t,{"up-href":c,"up-restore-scroll":""}),t.removeAttr("up-back"),up.link.makeFollowable(t)):void 0}),up.on("up:framework:reset",m),{config:n,defaults:function(){return v.error("up.history.defaults(...) no longer exists. Set values on he up.history.config property instead.")},push:p,replace:d,url:r,previousUrl:function(){return c},normalizeUrl:a}}(jQuery)}.call(this),function(){var slice=[].slice;up.layout=function($){var SCROLL_PROMISE_KEY,anchoredRight,config,finishScrolling,fixedChildren,lastScrollTops,measureObstruction,reset,restoreScroll,reveal,revealOrRestoreScroll,saveScroll,scroll,scrollTops,u,viewportOf,viewportSelector,viewports,viewportsWithin;return u=up.util,config=u.config({duration:0,viewports:[document,".up-modal","[up-viewport]"],fixedTop:["[up-fixed~=top]"],fixedBottom:["[up-fixed~=bottom]"],anchoredRight:["[up-anchored~=right]","[up-fixed~=top]","[up-fixed~=bottom]","[up-fixed~=right]"],snap:50,substance:150,easing:"swing"}),lastScrollTops=u.cache({size:30,key:up.history.normalizeUrl}),reset=function(){return config.reset(),lastScrollTops.clear()},SCROLL_PROMISE_KEY="up-scroll-promise",scroll=function(t,e,n){var r,o,i,a,s;return r=$(t),n=u.options(n),i=u.option(n.duration,config.duration),a=u.option(n.easing,config.easing),finishScrolling(r),i>0?(o=$.Deferred(),r.data(SCROLL_PROMISE_KEY,o),o.then(function(){return r.removeData(SCROLL_PROMISE_KEY),r.finish()}),s={scrollTop:e},r.get(0)===document&&(r=$("html, body")),r.animate(s,{duration:i,easing:a,complete:function(){return o.resolve()}}),o):(r.scrollTop(e),u.resolvedDeferred())},finishScrolling=function(t){return $(t).each(function(){var t;return(t=$(this).data(SCROLL_PROMISE_KEY))?t.resolve():void 0})},anchoredRight=function(){return u.multiSelector(config.anchoredRight).select()},measureObstruction=function(){var t,e,n,r;return n=function(t,e){var n,r;return n=$(t),r=n.css(e),u.isPresent(r)||u.error("Fixed element %o must have a CSS attribute %o",n,e),parseInt(r)+n.height()},e=function(){var t,e,o,u;for(o=$(config.fixedTop.join(", ")),u=[],t=0,e=o.length;e>t;t++)r=o[t],u.push(n(r,"top"));return u}(),t=function(){var t,e,o,u;for(o=$(config.fixedBottom.join(", ")),u=[],t=0,e=o.length;e>t;t++)r=o[t],u.push(n(r,"bottom"));return u}(),{top:Math.max.apply(Math,[0].concat(slice.call(e))),bottom:Math.max.apply(Math,[0].concat(slice.call(t)))}},reveal=function(t,e){var n,r,o,i,a,s,l,c,p,f,d,m,h,v;return u.debug("Revealing %o",t),e=u.options(e),n=$(t),r=e.viewport?$(e.viewport):viewportOf(n),m=u.option(e.snap,config.snap),v=r.is(document),h=v?u.clientSize().height:r.height(),p=r.scrollTop(),s=p,c=void 0,l=void 0,v?(l=measureObstruction(),c=0):(l={top:0,bottom:0},c=p),f=function(){return s+l.top},d=function(){return s+h-l.bottom-1},o=u.measure(n,{relative:r}),i=o.top+c,a=i+Math.min(o.height,config.substance)-1,a>d()&&(s+=a-d()),(i<f()||e.top)&&(s=i-l.top),m>s&&(s=0),s!==p?scroll(r,s,e):u.resolvedDeferred()},viewportSelector=function(){return u.multiSelector(config.viewports)},viewportOf=function(t){var e,n;return e=$(t),n=viewportSelector().seekUp(e),n.length||u.error("Could not find viewport for %o",e),n},viewportsWithin=function(t){var e;return e=$(t),viewportSelector().findWithSelf(e)},viewports=function(){return viewportSelector().select()},scrollTops=function(){var t,e,n,r,o,u,i;for(u={},o=config.viewports,e=0,r=o.length;r>e;e++)i=o[e],t=$(i),t.length&&(n=i,i===document&&(n="document"),u[n]=t.scrollTop());return u},fixedChildren=function(t){var e,n;return null==t&&(t=void 0),t||(t=document.body),n=$(t),e=n.find("[up-fixed]"),u.isPresent(config.fixedTop)&&(e=e.add(n.find(config.fixedTop.join(", ")))),u.isPresent(config.fixedBottom)&&(e=e.add(n.find(config.fixedBottom.join(", ")))),e},saveScroll=function(t){var e,n;return null==t&&(t={}),n=u.option(t.url,up.history.url()),e=u.option(t.tops,scrollTops()),u.debug("Saving scroll positions for URL %o: %o",n,e),lastScrollTops.set(n,e)},restoreScroll=function(t){var e,n,r,o,i,a,s,l,c;null==t&&(t={}),c=up.history.url(),o=void 0,t.around?(n=viewportsWithin(t.around),e=viewportOf(t.around),o=e.add(n)):o=viewports(),l=lastScrollTops.get(c),u.debug("Restoring scroll positions for URL %o (viewports are %o, saved tops are %o)",c,o,l);for(i in l)s=l[i],a="document"===i?document:i,r=o.filter(a),scroll(r,s,{duration:0});return u.resolvedDeferred()},revealOrRestoreScroll=function(t,e){var n;return n=$(t),e.restoreScroll?restoreScroll({around:n}):e.reveal?reveal(n):u.resolvedDeferred()},up.on("up:framework:reset",reset),{knife:eval("undefined"!=typeof Knife&&null!==Knife?Knife.point:void 0),reveal:reveal,scroll:scroll,finishScrolling:finishScrolling,config:config,defaults:function(){return u.error("up.layout.defaults(...) no longer exists. Set values on he up.layout.config property instead.")},viewportOf:viewportOf,viewportsWithin:viewportsWithin,viewports:viewports,scrollTops:scrollTops,saveScroll:saveScroll,restoreScroll:restoreScroll,revealOrRestoreScroll:revealOrRestoreScroll,anchoredRight:anchoredRight,fixedChildren:fixedChildren}}(jQuery),up.scroll=up.layout.scroll,up.reveal=up.layout.reveal}.call(this),function(){up.flow=function(t){var e,n,r,o,u,i,a,s,l,c,p,f,d,m,h,v;return v=up.util,d=function(e,n){var r;return r=t(e),v.isPresent(n)&&(n=v.normalizeUrl(n)),r.attr("up-source",n)},m=function(e){var n;return n=t(e).closest("[up-source]"),v.presence(n.attr("up-source"))||up.browser.url()},f=function(e,n,r){var o,u,i;return v.debug("Replace %o with %o (options %o)",e,n,r),r=v.options(r),i=v.presence(e)?e:v.createSelectorFromElement(t(e)),up.browser.canPushState()||r.history===!1?(u={url:n,method:r.method,selector:i,cache:r.cache,preload:r.preload},o=up.proxy.ajax(u),o.done(function(t,e,o){var s,l;return(s=v.locationFromXhr(o))&&(v.debug("Location from server: %o",s),l={url:s,method:v.methodFromXhr(o),selector:i},up.proxy.alias(u,l),n=s),r.history!==!1&&(r.history=n),r.source!==!1&&(r.source=n),r.preload?void 0:a(i,t,r)}),o.fail(v.error),o):(r.preload||up.browser.loadPage(n,v.only(r,"method")),v.resolvedPromise())},a=function(t,e,n){var r,u,i,a,s,p,f,d;for(n=v.options(n,{historyMethod:"push"}),n.source=v.option(n.source,n.history),p=c(e),n.title||(n.title=p.title()),n.saveScroll!==!1&&up.layout.saveScroll(),s=l(t,n),f=[],i=0,a=s.length;a>i;i++)d=s[i],u=o(d.selector),r=p.find(d.selector).first(),f.push(h(u,r,d.pseudoClass,d.transition,n));return f},o=function(t){return u(".up-popup "+t)||u(".up-modal "+t)||u(t)||i(t)},i=function(t){var e;return e="Could not find selector %o in current body HTML","#"===e[0]&&(e+=" (avoid using IDs)"),v.error(e,t)},c=function(e){var n;return n=v.createElementFromHtml(e),{title:function(){var t;return null!=(t=n.querySelector("title"))?t.textContent:void 0},find:function(r){var o;return(o=n.querySelector(r))?t(o):v.error("Could not find selector %o in response %o",r,e)}}},r=function(t,n){return"function"==typeof n.insert&&n.insert(t),n.history&&(n.title&&(document.title=n.title),up.history[n.historyMethod](n.history)),n.source!==!1&&d(t,n.source),e(t),up.hello(t)},h=function(t,e,o,u,i){var a,s;return u||(u="none"),up.motion.finish(t),o?(s="before"===o?"prepend":"append",a=e.contents().wrap('<span class="up-insertion"></span>').parent(),t[s](a),v.copyAttributes(e,t),r(a.children(),i),up.layout.revealOrRestoreScroll(a,i).then(function(){return up.animate(a,u,i)}).then(function(){v.unwrapElement(a)})):n(t,{animation:function(){return e.insertBefore(t),r(e,i),t.is("body")&&"none"!==u&&v.error("Cannot apply transitions to body-elements (%o)",u),up.morph(t,e,u,i)}})},l=function(t,e){var n,r,o,u,i,a,s,l,c,p,f;for(p=e.transition||e.animation||"none",n=/\ *,\ */,r=t.split(n),v.isPresent(p)&&(f=p.split(n)),a=[],o=u=0,i=r.length;i>u;o=++u)s=r[o],l=s.match(/^(.+?)(?:\:(before|after))?$/),c=f[o]||v.last(f),a.push({selector:l[1],pseudoClass:l[2],transition:c});return a},e=function(t){var e,n;return n="[autofocus]:last",e=v.findWithSelf(t,n),e.length&&e.get(0)!==document.activeElement?e.focus():void 0},s=function(t){var e;return e=".up-ghost, .up-destroying",0===t.closest(e).length},u=function(e){var n,r,o,u,i,a;for(u=t(e).get(),r=null,i=0,a=u.length;a>i;i++)if(o=u[i],n=t(o),s(n)){r=n;break}return r},n=function(e,n){var r,o,u;return r=t(e),up.bus.nobodyPrevents("up:fragment:destroy",{$element:r})?(n=v.options(n,{animation:"none"}),o=up.motion.animateOptions(n),r.addClass("up-destroying"),v.isPresent(n.url)&&up.history.push(n.url),v.isPresent(n.title)&&(document.title=n.title),u=v.presence(n.animation,v.isDeferred)||up.motion.animate(r,n.animation,o),u.then(function(){return up.bus.emit("up:fragment:destroyed",{$element:r}),r.remove()}),u):t.Deferred()},p=function(t,e){var n;return e=v.options(e,{cache:!1}),n=e.url||m(t),f(t,n,e)},up.on("ready",function(){return d(document.body,up.browser.url())}),{replace:f,reload:p,destroy:n,implant:a,first:u}}(jQuery),up.replace=up.flow.replace,up.reload=up.flow.reload,up.destroy=up.flow.destroy,up.first=up.flow.first}.call(this),function(){up.motion=function(t){var e,n,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g,y,b,w,k,x,S;return x=up.util,u={},s={},k={},l={},a=x.config({duration:300,delay:0,easing:"ease"}),v=function(){return u=x.copy(s),k=x.copy(l),a.reset()},n=function(e,o,u){var a;return a=t(e),p(a),u=r(u),("none"===o||o===!1)&&m(),x.isFunction(o)?i(o(a,u),o):x.isString(o)?n(a,c(o),u):x.isHash(o)?x.cssAnimate(a,o,u):x.error("Unknown animation type %o",o)},r=function(t,e){var n;return null==e&&(e=null),t=x.options(t),n={},n.easing=x.option(t.easing,null!=e?e.attr("up-easing"):void 0,a.easing),n.duration=Number(x.option(t.duration,null!=e?e.attr("up-duration"):void 0,a.duration)),n.delay=Number(x.option(t.delay,null!=e?e.attr("up-delay"):void 0,a.delay)),n},c=function(t){return u[t]||x.error("Unknown animation %o",t)},e="up-ghosting-promise",S=function(t,n,r,o){var u,i,a,s,l,c,p;return s=void 0,i=void 0,l=void 0,a=void 0,u=up.layout.viewportOf(t),x.temporaryCss(n,{display:"none"},function(){return s=h(t,u),s.$ghost.addClass("up-destroying"),s.$bounds.addClass("up-destroying"),l=u.scrollTop()}),x.temporaryCss(t,{display:"none"},function(){return up.layout.revealOrRestoreScroll(n,r),i=h(n,u),a=u.scrollTop()}),s.moveTop(a-l),t.hide(),p=x.temporaryCss(n,{visibility:"hidden"}),c=o(s.$ghost,i.$ghost),t.data(e,c),n.data(e,c),c.then(function(){return t.removeData(e),n.removeData(e),s.$bounds.remove(),i.$bounds.remove(),p()}),c},p=function(e){return t(e).each(function(){var e;return e=t(this),x.finishCssAnimate(e),f(e)})},f=function(t){var n;return(n=t.data(e))?(x.debug("Canceling existing ghosting on %o",t),"function"==typeof n.resolve?n.resolve():void 0):void 0},i=function(t,e){return x.isDeferred(t)?t:x.error("Did not return a promise with .then and .resolve methods: %o",e)},d=function(e,o,a,s){var l,c,f,m,h,v,b;return c=t(e),l=t(o),h=x.only(s,"reveal","restoreScroll"),h=x.extend(h,r(s)),up.browser.canCssAnimation()?(p(c),p(l),"none"===a||a===!1||(f=u[a])?(m=y(c,l,h),m.then(function(){return n(l,f||"none",s)}),m):(b=x.presence(a,x.isFunction)||k[a])?S(c,l,h,function(t,e){var n;return n=b(t,e,h),i(n,a)}):x.isString(a)&&a.indexOf("/")>=0?(v=a.split("/"),b=function(t,e,r){return g(n(t,v[0],r),n(e,v[1],r))},d(c,l,b,h)):x.error("Unknown transition %o",a)):y(c,l,h)},y=function(t,e,n){return t.hide(),up.layout.revealOrRestoreScroll(e,n)},h=function(e,n){var r,o,u,i,a,s,l,c,p;for(i=x.measure(e,{relative:!0,inner:!0}),u=e.clone(),u.find("script").remove(),u.css({position:"static"===e.css("position")?"static":"relative",top:"",right:"",bottom:"",left:"",width:"100%",height:"100%"}),u.addClass("up-ghost"),r=t('<div class="up-bounds"></div>'),r.css({position:"absolute"}),r.css(i),p=i.top,c=function(t){return 0!==t?(p+=t,r.css({top:p})):void 0},u.appendTo(r),r.insertBefore(e),c(e.offset().top-u.offset().top),o=up.layout.fixedChildren(u),s=0,l=o.length;l>s;s++)a=o[s],x.fixedToAbsolute(a,n);return{$ghost:u,$bounds:r,moveTop:c}},w=function(t,e){return k[t]=e},o=function(t,e){return u[t]=e},b=function(){return s=x.copy(u),l=x.copy(k)},g=x.resolvableWhen,m=x.resolvedDeferred,o("none",m),o("fade-in",function(t,e){return t.css({opacity:0}),n(t,{opacity:1},e)}),o("fade-out",function(t,e){return t.css({opacity:1}),n(t,{opacity:0},e)}),o("move-to-top",function(t,e){var r,o;return r=x.measure(t),o=r.top+r.height,t.css({"margin-top":"0px"}),n(t,{"margin-top":"-"+o+"px"},e)}),o("move-from-top",function(t,e){var r,o;return r=x.measure(t),o=r.top+r.height,t.css({"margin-top":"-"+o+"px"}),n(t,{"margin-top":"0px"},e)}),o("move-to-bottom",function(t,e){var r,o;return r=x.measure(t),o=x.clientSize().height-r.top,t.css({"margin-top":"0px"}),n(t,{"margin-top":o+"px"},e)}),o("move-from-bottom",function(t,e){var r,o;return r=x.measure(t),o=x.clientSize().height-r.top,t.css({"margin-top":o+"px"}),n(t,{"margin-top":"0px"},e)}),o("move-to-left",function(t,e){var r,o;return r=x.measure(t),o=r.left+r.width,t.css({"margin-left":"0px"}),n(t,{"margin-left":"-"+o+"px"},e)}),o("move-from-left",function(t,e){var r,o;return r=x.measure(t),o=r.left+r.width,t.css({"margin-left":"-"+o+"px"}),n(t,{"margin-left":"0px"},e)}),o("move-to-right",function(t,e){var r,o;return r=x.measure(t),o=x.clientSize().width-r.left,t.css({"margin-left":"0px"}),n(t,{"margin-left":o+"px"},e)}),o("move-from-right",function(t,e){var r,o;return r=x.measure(t),o=x.clientSize().width-r.left,t.css({"margin-left":o+"px"}),n(t,{"margin-left":"0px"},e)}),o("roll-down",function(t,e){var r,o;return r=t.height(),o=x.temporaryCss(t,{height:"0px",overflow:"hidden"}),n(t,{height:r+"px"},e).then(o)}),w("none",m),w("move-left",function(t,e,r){return g(n(t,"move-to-left",r),n(e,"move-from-right",r))}),w("move-right",function(t,e,r){return g(n(t,"move-to-right",r),n(e,"move-from-left",r))}),w("move-up",function(t,e,r){return g(n(t,"move-to-top",r),n(e,"move-from-bottom",r))}),w("move-down",function(t,e,r){return g(n(t,"move-to-bottom",r),n(e,"move-from-top",r))}),w("cross-fade",function(t,e,r){return g(n(t,"fade-out",r),n(e,"fade-in",r))}),up.on("up:framework:boot",b),up.on("up:framework:reset",v),{morph:d,animate:n,animateOptions:r,finish:p,transition:w,animation:o,config:a,defaults:function(){return x.error("up.motion.defaults(...) no longer exists. Set values on he up.motion.config property instead.")},none:m,when:g,prependCopy:h}}(jQuery),up.transition=up.motion.transition,up.animation=up.motion.animation,up.morph=up.motion.morph,up.animate=up.motion.animate
|
2
|
+
}.call(this),function(){up.proxy=function(t){var e,n,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g,y,b,w,k,x,S,C,T,E,P,A,O;return O=up.util,e=void 0,C=void 0,i=void 0,x=void 0,a=void 0,m=O.config({busyDelay:300,preloadDelay:75,cacheSize:70,cacheExpiry:3e5}),l=function(t){return k(t),[t.url,t.method,t.data,t.selector].join("|")},s=O.cache({size:function(){return m.cacheSize},expiry:function(){return m.cacheExpiry},key:l,log:"up.proxy"}),h=s.get,P=s.set,T=s.remove,d=s.clear,p=function(){return clearTimeout(C),C=null},c=function(){return clearTimeout(i),i=null},E=function(){return e=null,p(),c(),x=0,m.reset(),a=!1,s.clear()},E(),o=s.alias,k=function(t){return t._normalized||(t.method=O.normalizeMethod(t.method),t.url&&(t.url=O.normalizeUrl(t.url)),t.selector||(t.selector="body"),t._normalized=!0),t},r=function(t){var e,n,r,o,u;return e=t.cache===!0,n=t.cache===!1,u=O.only(t,"url","method","data","selector","_normalized"),r=!0,g(u)||e?(o=h(u))&&!n?r="pending"===o.state():(o=y(u),P(u,o),o.fail(function(){return T(u)})):(d(),o=y(u)),r&&!t.preload&&(w(),o.always(b)),o},n=["GET","OPTIONS","HEAD"],v=function(){return 0===x},u=function(){return x>0},w=function(){var t,e;return e=v(),x+=1,e?(t=function(){return u()?(up.bus.emit("up:proxy:busy"),a=!0):void 0},m.busyDelay>0?i=setTimeout(t,m.busyDelay):t()):void 0},b=function(){return x-=1,v()&&a?(up.bus.emit("up:proxy:idle"),a=!1):void 0},y=function(t){var e;return O.debug("Loading URL %o",t.url),up.bus.emit("up:proxy:load",t),e=O.ajax(t),e.always(function(){return up.bus.emit("up:proxy:receive",t)}),e},g=function(t){return k(t),O.contains(n,t.method)},f=function(t){var n,r;return r=parseInt(O.presentAttr(t,"up-delay"))||m.preloadDelay,t.is(e)?void 0:(e=t,p(),n=function(){return S(t),e=null},A(n,r))},A=function(t,e){return C=setTimeout(t,e)},S=function(e,n){var r,o;return r=t(e),n=O.options(n),o=up.link.followMethod(r,n),g({method:o})?(O.debug("Preloading %o",r),n.preload=!0,up.follow(r,n)):(O.debug("Won't preload %o due to unsafe method %o",r,o),O.resolvedPromise())},up.on("mouseover mousedown touchstart","[up-preload]",function(t,e){return up.link.childClicked(t,e)?void 0:f(e)}),up.on("up:framework:reset",E),{preload:S,ajax:r,get:h,alias:o,clear:d,remove:T,idle:v,busy:u,config:m,defaults:function(){return O.error("up.proxy.defaults(...) no longer exists. Set values on he up.proxy.config property instead.")}}}(jQuery)}.call(this),function(){up.link=function($){var childClicked,follow,followMethod,makeFollowable,shouldProcessLinkEvent,u,visit;return u=up.util,visit=function(t,e){var n;return e=u.options(e),n=u.option(e.target,"body"),up.replace(n,t,e)},follow=function(t,e){var n,r,o;return n=$(t),e=u.options(e),o=u.option(n.attr("up-href"),n.attr("href")),r=u.option(e.target,n.attr("up-target"),"body"),e.transition=u.option(e.transition,u.castedAttr(n,"up-transition"),u.castedAttr(n,"up-animation")),e.history=u.option(e.history,u.castedAttr(n,"up-history")),e.reveal=u.option(e.reveal,u.castedAttr(n,"up-reveal"),!0),e.cache=u.option(e.cache,u.castedAttr(n,"up-cache")),e.restoreScroll=u.option(e.restoreScroll,u.castedAttr(n,"up-restore-scroll")),e.method=followMethod(n,e),e=u.merge(e,up.motion.animateOptions(e,n)),up.replace(r,o,e)},followMethod=function(t,e){return e=u.options(e),u.option(e.method,t.attr("up-method"),t.attr("data-method"),"get").toUpperCase()},up.on("click","a[up-target], [up-href][up-target]",function(t,e){return shouldProcessLinkEvent(t,e)?e.is("[up-instant]")?t.preventDefault():(t.preventDefault(),follow(e)):void 0}),up.on("mousedown","a[up-instant], [up-href][up-instant]",function(t,e){return shouldProcessLinkEvent(t,e)?(t.preventDefault(),follow(e)):void 0}),childClicked=function(t,e){var n,r;return n=$(t.target),r=n.closest("a, [up-href]"),r.length&&e.find(r).length},shouldProcessLinkEvent=function(t,e){return u.isUnmodifiedMouseEvent(t)&&!childClicked(t,e)},makeFollowable=function(t){var e;return e=$(t),u.isMissing(e.attr("up-target"))&&u.isMissing(e.attr("up-follow"))?e.attr("up-follow",""):void 0},up.on("click","a[up-follow], [up-href][up-follow]",function(t,e){return shouldProcessLinkEvent(t,e)?e.is("[up-instant]")?t.preventDefault():(t.preventDefault(),follow(e)):void 0}),up.compiler("[up-expand]",function(t){var e,n,r,o,i,a,s,l;for(o=t.find("a, [up-href]").get(0),o||u.error("No link to expand within %o",t),l=/^up-/,a={},a["up-href"]=$(o).attr("href"),s=o.attributes,n=0,r=s.length;r>n;n++)e=s[n],i=e.name,i.match(l)&&(a[i]=e.value);return u.setMissingAttrs(t,a),t.removeAttr("up-expand"),makeFollowable(t)}),up.compiler("[up-dash]",function(t){var e,n;return n=u.castedAttr(t,"up-dash"),e={"up-preload":"true","up-instant":"true"},n===!0?e["up-follow"]="":e["up-target"]=n,u.setMissingAttrs(t,e),t.removeAttr("up-dash")}),{knife:eval("undefined"!=typeof Knife&&null!==Knife?Knife.point:void 0),visit:visit,follow:follow,makeFollowable:makeFollowable,childClicked:childClicked,followMethod:followMethod}}(jQuery),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,e){var n,r,o,i,a,s,l,c,p,f,d,m;return n=$(t).closest("form"),e=u.options(e),c=u.option(e.target,n.attr("up-target"),"body"),r=u.option(e.failTarget,n.attr("up-fail-target"),function(){return u.createSelectorFromElement(n)}),i=u.option(e.history,u.castedAttr(n,"up-history"),!0),p=u.option(e.transition,u.castedAttr(n,"up-transition")),o=u.option(e.failTransition,u.castedAttr(n,"up-fail-transition"),p),a=u.option(e.method,n.attr("up-method"),n.attr("data-method"),n.attr("method"),"post").toUpperCase(),s={},s.reveal=u.option(e.reveal,u.castedAttr(n,"up-reveal"),!0),s.cache=u.option(e.cache,u.castedAttr(n,"up-cache")),s.restoreScroll=u.option(e.restoreScroll,u.castedAttr(n,"up-restore-scroll")),s=u.extend(s,up.motion.animateOptions(e,n)),m=u.option(e.cache,u.castedAttr(n,"up-cache")),d=u.option(e.url,n.attr("action"),up.browser.url()),n.addClass("up-active"),up.browser.canPushState()||i===!1?(l={url:d,method:a,data:n.serialize(),selector:c,cache:m},f=function(t){var e;return d=void 0,u.isGiven(i)&&(i===!1||u.isString(i)?d=i:(e=u.locationFromXhr(t))?d=e:"GET"===l.type&&(d=l.url+"?"+l.data)),u.option(d,!1)},up.proxy.ajax(l).always(function(){return n.removeClass("up-active")}).done(function(t,e,n){var r;return r=u.merge(s,{history:f(n),transition:p}),up.flow.implant(c,t,r)}).fail(function(t){var e,n;return n=t.responseText,e=u.merge(s,{transition:o}),up.flow.implant(r,n,e)})):void n.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,e;return e=$field.val(),t=u.isNull(knownValue),knownValue===e||(knownValue=e,t)?void 0:(clearTimer(),nextCallback=function(){return callback.apply($field.get(0),[e,$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,e){return t.preventDefault(),submit(e)}),up.compiler("[up-observe]",function(t){return observe(t)}),{submit:submit,observe:observe}}(jQuery),up.submit=up.form.submit,up.observe=up.form.observe}.call(this),function(){up.popup=function(t){var e,n,r,o,u,i,a,s,l,c,p,f,d,m,h;return m=up.util,a=void 0,o=m.config({openAnimation:"fade-in",closeAnimation:"fade-out",position:"bottom-right"}),p=function(){return r(),o.reset()},f=function(t,e,n){var r,o;return o=m.measure(t,{full:!0}),r=function(){switch(n){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 m.error("Unknown position %o",n)}}(),e.attr("up-position",n),e.css(r),l(e)},l=function(t){var e,n,r,o,u,i,a;if(n=m.measure(t,{full:!0}),r=null,o=null,n.right<0&&(r=-n.right),n.bottom<0&&(o=-n.bottom),n.left<0&&(r=n.left),n.top<0&&(o=n.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(e=parseInt(t.css("bottom")))return t.css("bottom",e+o)}},c=function(){var e;return e=t(".up-popup"),e.attr("up-previous-url",up.browser.url()),e.attr("up-previous-title",document.title)},s=function(){var e;return e=t(".up-popup"),e.removeAttr("up-previous-url"),e.removeAttr("up-previous-title")},i=function(t,e,n){var r,o;return o=m.$createElementFromSelector(".up-popup"),n&&o.attr("up-sticky",""),r=m.$createElementFromSelector(e),r.appendTo(o),o.appendTo(document.body),c(),o.hide(),o},h=function(t,e,n,r,o){return e.show(),f(t,e,n),up.animate(e,r,o)},e=function(e,n){var u,a,s,l,c,p,f,d,v;return u=t(e),n=m.options(n),v=m.option(n.url,u.attr("href")),f=m.option(n.target,u.attr("up-popup"),"body"),p=m.option(n.position,u.attr("up-position"),o.position),l=m.option(n.animation,u.attr("up-animation"),o.openAnimation),d=m.option(n.sticky,m.castedAttr(u,"up-sticky")),c=up.browser.canPushState()?m.option(n.history,m.castedAttr(u,"up-history"),!1):!1,s=up.motion.animateOptions(n,u),r(),a=i(u,f,d),up.replace(f,v,{history:c,insert:function(){return h(u,a,p,l,s)}})},d=function(){return a},r=function(e){var n;return n=t(".up-popup"),n.length?(e=m.options(e,{animation:o.closeAnimation,url:n.attr("up-previous-url"),title:n.attr("up-previous-title")}),a=void 0,up.destroy(n,e)):m.resolvedPromise()},n=function(){return t(".up-popup").is("[up-sticky]")?void 0:(s(),r())},u=function(e){var n;return n=t(e),n.closest(".up-popup").length>0},up.on("click","a[up-popup]",function(t,n){return t.preventDefault(),n.is(".up-current")?r():e(n)}),up.on("click","body",function(e){var n;return n=t(e.target),n.closest(".up-popup").length||n.closest("[up-popup]").length?void 0:r()}),up.on("up:fragment:inserted",function(t,e){var r;return u(e)?(r=e.attr("up-source"))?a=r:void 0:n()}),up.magic.onEscape(function(){return r()}),up.on("click","[up-close]",function(t,e){return e.closest(".up-popup").length?(r(),t.preventDefault()):void 0}),up.on("up:framework:reset",p),{attach:e,close:r,source:d,config:o,defaults:function(){return m.error("up.popup.defaults(...) no longer exists. Set values on he up.popup.config property instead.")},contains:u,open:function(){return up.warn("up.popup.open no longer exists. Please use up.popup.attach instead.")}}}(jQuery)}.call(this),function(){up.modal=function(t){var e,n,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g,y;return h=up.util,r=h.config({maxWidth:null,minWidth:null,width:null,height:null,openAnimation:"fade-in",closeAnimation:"fade-out",closeLabel:"\xd7",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>'}}),i=void 0,p=function(){return n(),i=void 0,r.reset()},m=function(){var t;return t=r.template,h.isFunction(t)?t(r):t},c=function(){var e;return e=t(".up-modal"),e.attr("up-previous-url",up.browser.url()),e.attr("up-previous-title",document.title)},a=function(){var e;return e=t(".up-modal"),e.removeAttr("up-previous-url"),e.removeAttr("up-previous-title")},u=function(e){var n,r,o,u;return o=t(m()),e.sticky&&o.attr("up-sticky",""),o.attr("up-previous-url",up.browser.url()),o.attr("up-previous-title",document.title),r=o.find(".up-modal-dialog"),h.isPresent(e.width)&&r.css("width",e.width),h.isPresent(e.maxWidth)&&r.css("max-width",e.maxWidth),h.isPresent(e.height)&&r.css("height",e.height),n=o.find(".up-modal-content"),u=h.$createElementFromSelector(e.selector),u.appendTo(n),o.appendTo(document.body),c(),o.hide(),o},v=[],f=function(){var e,n,r,o;return r=h.scrollbarWidth(),e=parseInt(t("body").css("padding-right")),n=r+e,o=h.temporaryCss(t("body"),{"padding-right":n+"px","overflow-y":"hidden"}),v.push(o),up.layout.anchoredRight().each(function(){var e,n,o,u;return e=t(this),n=parseInt(e.css("right")),o=r+n,u=h.temporaryCss(e,{right:o}),v.push(u)})},g=function(t,e,n){var r;return f(),t.show(),r=up.animate(t,e,n),r.then(function(){return up.bus.emit("up:modal:opened")})},s=function(e,n){return n=h.options(n),n.$link=t(e),l(n)},y=function(t,e){return e=h.options(e),e.url=t,l(e)},l=function(e){var o,i,a,s,l,c,p,f,d,m,v;return e=h.options(e),o=h.option(e.$link,h.nullJquery()),m=h.option(e.url,o.attr("up-href"),o.attr("href")),f=h.option(e.target,o.attr("up-modal"),"body"),v=h.option(e.width,o.attr("up-width"),r.width),p=h.option(e.maxWidth,o.attr("up-max-width"),r.maxWidth),l=h.option(e.height,o.attr("up-height"),r.height),s=h.option(e.animation,o.attr("up-animation"),r.openAnimation),d=h.option(e.sticky,h.castedAttr(o,"up-sticky")),c=up.browser.canPushState()?h.option(e.history,h.castedAttr(o,"up-history"),!0):!1,a=up.motion.animateOptions(e,o),n(),up.bus.nobodyPrevents("up:modal:open",{url:m})?(i=u({selector:f,width:v,maxWidth:p,height:l,sticky:d}),up.replace(f,m,{history:c,insert:function(){return g(i,s,a)}})):t.Deferred()},d=function(){return i},n=function(e){var n,o;return n=t(".up-modal"),n.length?up.bus.nobodyPrevents("up:modal:close",{$element:n})?(e=h.options(e,{animation:r.closeAnimation,url:n.attr("up-previous-url"),title:n.attr("up-previous-title")}),i=void 0,o=up.destroy(n,e),o.then(function(){for(var t;t=v.pop();)t();return up.bus.emit("up:modal:closed")}),o):t.Deferred():h.resolvedDeferred()},e=function(){return t(".up-modal").is("[up-sticky]")?void 0:(a(),n())},o=function(e){var n;return n=t(e),n.closest(".up-modal").length>0},up.on("click","a[up-modal]",function(t,e){return t.preventDefault(),e.is(".up-current")?n():s(e)}),up.on("click","body",function(e){var r;return r=t(e.target),r.closest(".up-modal-dialog").length||r.closest("[up-modal]").length?void 0:n()}),up.on("up:fragment:inserted",function(t,n){var r;if(o(n)){if(r=n.attr("up-source"))return i=r}else if(!up.popup.contains(n))return e()}),up.magic.onEscape(function(){return n()}),up.on("click","[up-close]",function(t,e){return e.closest(".up-modal").length?(n(),t.preventDefault()):void 0}),up.on("up:framework:reset",p),{visit:y,follow:s,open:function(){return up.error("up.modal.open no longer exists. Please use either up.modal.follow or up.modal.visit.")},close:n,source:d,config:r,defaults:function(){return h.error("up.modal.defaults(...) no longer exists. Set values on he up.modal.config property instead.")},contains:o}}(jQuery)}.call(this),function(){up.tooltip=function(t){var e,n,r,o,u;return u=up.util,o=function(t,e,n){var r,o,i;return o=u.measure(t),i=u.measure(e),r=function(){switch(n){case"top":return{left:o.left+.5*(o.width-i.width),top:o.top-i.height};case"bottom":return{left:o.left+.5*(o.width-i.width),top:o.top+o.height};default:return u.error("Unknown position %o",n)}}(),e.attr("up-position",n),e.css(r)},r=function(t){var e;return e=u.$createElementFromSelector(".up-tooltip"),u.isGiven(t.text)?e.text(t.text):e.html(t.html),e.appendTo(document.body),e},e=function(e,i){var a,s,l,c,p,f,d;return null==i&&(i={}),a=t(e),p=u.option(i.html,a.attr("up-tooltip-html")),d=u.option(i.text,a.attr("up-tooltip"),a.attr("title")),f=u.option(i.position,a.attr("up-position"),"top"),c=u.option(i.animation,u.castedAttr(a,"up-animation"),"fade-in"),l=up.motion.animateOptions(i,a),n(),s=r({text:d,html:p}),o(a,s,f),up.animate(s,c,l)},n=function(e){var n;return n=t(".up-tooltip"),n.length?(e=u.options(e,{animation:"fade-out"}),e=u.merge(e,up.motion.animateOptions(e)),up.destroy(n,e)):void 0},up.compiler("[up-tooltip], [up-tooltip-html]",function(t){return t.on("mouseover",function(){return e(t)}),t.on("mouseout",function(){return n()})}),up.on("click","body",function(){return n()}),up.on("up:framework:reset",n),up.magic.onEscape(function(){return n()}),{attach:e,close:n,open:function(){return u.error("up.tooltip.open no longer exists. Use up.tooltip.attach instead.")}}}(jQuery)}.call(this),function(){up.navigation=function(t){var e,n,r,o,u,i,a,s,l,c,p,f,d,m,h,v,g;return h=up.util,i=h.config({currentClasses:["up-current"]}),p=function(){return i.reset()},a=function(){var t;return t=i.currentClasses,t=t.concat(["up-current"]),t=h.uniq(t),t.join(" ")},e="up-active",n=["a","[up-href]","[up-alias]"],o=n.join(", "),u=function(){var t,e,r;for(r=[],t=0,e=n.length;e>t;t++)m=n[t],r.push(m+"[up-instant]");return r}().join(", "),r="."+e,c=function(t){return h.isPresent(t)?h.normalizeUrl(t,{search:!1,stripTrailingSlash:!0}):void 0},d=function(t){var e,n,r,o,u,i,a,s,l,p;for(s=[],i=["href","up-href","up-alias"],n=0,o=i.length;o>n;n++)if(e=i[n],l=h.presentAttr(t,e))for(p="up-alias"===e?l.split(" "):[l],r=0,u=p.length;u>r;r++)a=p[r],"#"!==a&&(a=c(a),s.push(a));return s},g=function(t){var e,n,r,o;return t=h.compact(t),r=function(t){return"*"===t.substr(-1)?n(t.slice(0,-1)):e(t)},e=function(e){return h.contains(t,e)},n=function(e){return h.detect(t,function(t){return 0===t.indexOf(e)})},o=function(t){return h.detect(t,r)},{matchesAny:o}},l=function(){var e,n;return e=g([c(up.browser.url()),c(up.modal.source()),c(up.popup.source())]),n=a(),h.each(t(o),function(r){var o,u;return o=t(r),u=d(o),e.matchesAny(u)?o.addClass(n):o.removeClass(n)})},f=function(t){return v(),t=s(t),t.addClass(e)},s=function(t){return h.presence(t.parents(o))||t},v=function(){return t(r).removeClass(e)},up.on("click",o,function(t,e){return h.isUnmodifiedMouseEvent(t)&&!e.is("[up-instant]")?f(e):void 0}),up.on("mousedown",u,function(t,e){return h.isUnmodifiedMouseEvent(t)?f(e):void 0}),up.on("up:fragment:inserted",function(){return v(),l()}),up.on("up:fragment:destroyed",function(t,e){return e.is(".up-modal, .up-popup")?l():void 0}),up.on("up:framework:reset",p),{config:i,defaults:function(){return h.error("up.navigation.defaults(...) no longer exists. Set values on he up.navigation.config property instead.")}}}(jQuery)}.call(this),function(){up.browser.isSupported()&&(up.bus.emit("up:framework:boot"),up.bus.emit("up:framework:booted"))}.call(this),function(){}.call(this);
|
@@ -167,12 +167,6 @@ up.flow = (($) ->
|
|
167
167
|
else
|
168
168
|
u.error("Could not find selector %o in response %o", selector, html)
|
169
169
|
|
170
|
-
reveal = ($element, options) ->
|
171
|
-
if options.reveal
|
172
|
-
up.reveal($element)
|
173
|
-
else
|
174
|
-
u.resolvedDeferred()
|
175
|
-
|
176
170
|
elementsInserted = ($new, options) ->
|
177
171
|
options.insert?($new)
|
178
172
|
if options.history
|
@@ -182,8 +176,6 @@ up.flow = (($) ->
|
|
182
176
|
# offer reload functionality.
|
183
177
|
unless options.source is false
|
184
178
|
setSource($new, options.source)
|
185
|
-
if options.restoreScroll
|
186
|
-
up.layout.restoreScroll(around: $new)
|
187
179
|
autofocus($new)
|
188
180
|
# The fragment should be readiet before animating,
|
189
181
|
# so transitions see .up-current classes
|
@@ -211,7 +203,7 @@ up.flow = (($) ->
|
|
211
203
|
elementsInserted($wrapper.children(), options)
|
212
204
|
|
213
205
|
# Reveal element that was being prepended/appended.
|
214
|
-
|
206
|
+
up.layout.revealOrRestoreScroll($wrapper, options)
|
215
207
|
.then ->
|
216
208
|
# Since we're adding content instead of replacing, we'll only
|
217
209
|
# animate $new instead of morphing between $old and $new
|
@@ -14,6 +14,7 @@ up.layout = (($) ->
|
|
14
14
|
Configures the application layout.
|
15
15
|
|
16
16
|
@method up.layout.config
|
17
|
+
@property
|
17
18
|
@param {Array<String>} [config.viewports]
|
18
19
|
An array of CSS selectors that find viewports
|
19
20
|
(containers that scroll their contents).
|
@@ -207,6 +208,7 @@ up.layout = (($) ->
|
|
207
208
|
A promise that will be resolved when the element is revealed.
|
208
209
|
###
|
209
210
|
reveal = (elementOrSelector, options) ->
|
211
|
+
u.debug('Revealing %o', elementOrSelector)
|
210
212
|
options = u.options(options)
|
211
213
|
$element = $(elementOrSelector)
|
212
214
|
$viewport = if options.viewport then $(options.viewport) else viewportOf($element)
|
@@ -348,6 +350,7 @@ up.layout = (($) ->
|
|
348
350
|
saveScroll = (options = {}) ->
|
349
351
|
url = u.option(options.url, up.history.url())
|
350
352
|
tops = u.option(options.tops, scrollTops())
|
353
|
+
u.debug('Saving scroll positions for URL %o: %o', url, tops)
|
351
354
|
lastScrollTops.set(url, tops)
|
352
355
|
|
353
356
|
###*
|
@@ -362,6 +365,8 @@ up.layout = (($) ->
|
|
362
365
|
###
|
363
366
|
restoreScroll = (options = {}) ->
|
364
367
|
|
368
|
+
url = up.history.url()
|
369
|
+
|
365
370
|
$viewports = undefined
|
366
371
|
|
367
372
|
if options.around
|
@@ -371,12 +376,33 @@ up.layout = (($) ->
|
|
371
376
|
else
|
372
377
|
$viewports = viewports()
|
373
378
|
|
374
|
-
tops = lastScrollTops.get(
|
379
|
+
tops = lastScrollTops.get(url)
|
380
|
+
|
381
|
+
u.debug('Restoring scroll positions for URL %o (viewports are %o, saved tops are %o)', url, $viewports, tops)
|
375
382
|
|
376
383
|
for key, scrollTop of tops
|
377
384
|
right = if key == 'document' then document else key
|
378
385
|
$matchingViewport = $viewports.filter(right)
|
379
|
-
|
386
|
+
scroll($matchingViewport, scrollTop, duration: 0)
|
387
|
+
|
388
|
+
# Since scrolling happens without animation, we don't need to
|
389
|
+
# join promises from the up.scroll call above
|
390
|
+
u.resolvedDeferred()
|
391
|
+
|
392
|
+
###*
|
393
|
+
@protected
|
394
|
+
@method up.layout.revealOrRestoreScroll
|
395
|
+
@return {Deferred} A promise for when the revealing or scroll restauration ends
|
396
|
+
###
|
397
|
+
revealOrRestoreScroll = (selectorOrElement, options) ->
|
398
|
+
$element = $(selectorOrElement)
|
399
|
+
if options.restoreScroll
|
400
|
+
restoreScroll(around: $element)
|
401
|
+
else if options.reveal
|
402
|
+
reveal($element)
|
403
|
+
else
|
404
|
+
u.resolvedDeferred()
|
405
|
+
|
380
406
|
|
381
407
|
###*
|
382
408
|
Marks this element as a scrolling container. Apply this ttribute if your app uses
|
@@ -460,6 +486,7 @@ up.layout = (($) ->
|
|
460
486
|
|
461
487
|
up.on 'up:framework:reset', reset
|
462
488
|
|
489
|
+
knife: eval(Knife?.point)
|
463
490
|
reveal: reveal
|
464
491
|
scroll: scroll
|
465
492
|
finishScrolling: finishScrolling
|
@@ -471,6 +498,7 @@ up.layout = (($) ->
|
|
471
498
|
scrollTops: scrollTops
|
472
499
|
saveScroll: saveScroll
|
473
500
|
restoreScroll: restoreScroll
|
501
|
+
revealOrRestoreScroll: revealOrRestoreScroll
|
474
502
|
anchoredRight: anchoredRight
|
475
503
|
fixedChildren: fixedChildren
|
476
504
|
|
@@ -78,6 +78,8 @@ up.magic = (($) ->
|
|
78
78
|
The function takes the affected element as the first argument (as a jQuery object).
|
79
79
|
If the element has an `up-data` attribute, its value is parsed as JSON
|
80
80
|
and passed as a second argument.
|
81
|
+
@return {Function}
|
82
|
+
A function that unbinds the event listeners when called.
|
81
83
|
###
|
82
84
|
liveDescriptions = []
|
83
85
|
defaultLiveDescriptions = null
|
@@ -92,8 +94,9 @@ up.magic = (($) ->
|
|
92
94
|
upListener.apply($me.get(0), [event, $me, data($me)])
|
93
95
|
|
94
96
|
live = (args...) ->
|
95
|
-
# Silently discard any event handlers that are registered on unsupported
|
96
|
-
return
|
97
|
+
# Silently discard any event handlers that are registered on unsupported
|
98
|
+
# browsers and return a no-op destructor
|
99
|
+
return (->) unless up.browser.isSupported()
|
97
100
|
|
98
101
|
description = u.copy(args)
|
99
102
|
lastIndex = description.length - 1
|
@@ -104,7 +107,11 @@ up.magic = (($) ->
|
|
104
107
|
# clean up after ourselves during a reset
|
105
108
|
liveDescriptions.push(description)
|
106
109
|
|
107
|
-
$(document)
|
110
|
+
$document = $(document)
|
111
|
+
$document.on(description...)
|
112
|
+
|
113
|
+
# Return destructor
|
114
|
+
-> $document.off(description...)
|
108
115
|
|
109
116
|
###*
|
110
117
|
Registers a function to be called whenever an element with
|
@@ -17,6 +17,7 @@ up.modal = (($) ->
|
|
17
17
|
Sets default options for future modals.
|
18
18
|
|
19
19
|
@method up.modal.config
|
20
|
+
@property
|
20
21
|
@param {Number} [config.width]
|
21
22
|
The width of the dialog as a CSS value like `'400px'` or `50%`.
|
22
23
|
|
@@ -50,10 +51,10 @@ up.modal = (($) ->
|
|
50
51
|
to both the dialog box and the overlay dimming the page.
|
51
52
|
###
|
52
53
|
config = u.config
|
53
|
-
maxWidth:
|
54
|
-
minWidth:
|
55
|
-
width:
|
56
|
-
height:
|
54
|
+
maxWidth: null
|
55
|
+
minWidth: null
|
56
|
+
width: null
|
57
|
+
height: null
|
57
58
|
openAnimation: 'fade-in'
|
58
59
|
closeAnimation: 'fade-out'
|
59
60
|
closeLabel: '×'
|
@@ -155,7 +156,7 @@ up.modal = (($) ->
|
|
155
156
|
animation has finished and the modal contents are fully visible.
|
156
157
|
|
157
158
|
@method up.modal.follow
|
158
|
-
@param {Element|jQuery|String}
|
159
|
+
@param {Element|jQuery|String} linkOrSelector
|
159
160
|
The link to follow.
|
160
161
|
@param {String} [options.target]
|
161
162
|
The selector to extract from the response and open in a modal dialog.
|
@@ -181,9 +182,9 @@ up.modal = (($) ->
|
|
181
182
|
@return {Promise}
|
182
183
|
A promise that will be resolved when the modal has finished loading.
|
183
184
|
###
|
184
|
-
follow = (
|
185
|
+
follow = (linkOrSelector, options) ->
|
185
186
|
options = u.options(options)
|
186
|
-
options.$link = $
|
187
|
+
options.$link = $(linkOrSelector)
|
187
188
|
open(options)
|
188
189
|
|
189
190
|
|
@@ -382,7 +383,7 @@ up.modal = (($) ->
|
|
382
383
|
if $link.is('.up-current')
|
383
384
|
close()
|
384
385
|
else
|
385
|
-
|
386
|
+
follow($link)
|
386
387
|
)
|
387
388
|
|
388
389
|
# Close the modal when someone clicks outside the dialog
|
@@ -38,6 +38,7 @@ up.motion = (($) ->
|
|
38
38
|
Sets default options for animations and transitions.
|
39
39
|
|
40
40
|
@method up.motion.config
|
41
|
+
@property
|
41
42
|
@param {Number} [config.duration=300]
|
42
43
|
@param {Number} [config.delay=0]
|
43
44
|
@param {String} [config.easing='ease']
|
@@ -175,7 +176,7 @@ up.motion = (($) ->
|
|
175
176
|
|
176
177
|
u.temporaryCss $old, display: 'none', ->
|
177
178
|
# Within this block, $old is hidden but $new is visible
|
178
|
-
up.
|
179
|
+
up.layout.revealOrRestoreScroll($new, options)
|
179
180
|
newCopy = prependCopy($new, $viewport)
|
180
181
|
newScrollTop = $viewport.scrollTop()
|
181
182
|
|
@@ -286,19 +287,17 @@ up.motion = (($) ->
|
|
286
287
|
$old = $(source)
|
287
288
|
$new = $(target)
|
288
289
|
|
289
|
-
|
290
|
-
|
291
|
-
parsedOptions = u.extend(parsedOptions, animateOptions(options))
|
290
|
+
parsedOptions = u.only(options, 'reveal', 'restoreScroll')
|
291
|
+
parsedOptions = u.extend(parsedOptions, animateOptions(options))
|
292
292
|
|
293
|
+
if up.browser.canCssAnimation()
|
293
294
|
finish($old)
|
294
295
|
finish($new)
|
295
296
|
|
296
297
|
if transitionOrName == 'none' || transitionOrName == false || animation = animations[transitionOrName]
|
297
|
-
$old
|
298
|
-
|
299
|
-
|
300
|
-
up.reveal($new) if options.reveal
|
301
|
-
animate($new, animation || 'none', options)
|
298
|
+
deferred = skipMorph($old, $new, parsedOptions)
|
299
|
+
deferred.then -> animate($new, animation || 'none', options)
|
300
|
+
deferred
|
302
301
|
else if transition = u.presence(transitionOrName, u.isFunction) || transitions[transitionOrName]
|
303
302
|
withGhosts $old, $new, parsedOptions, ($oldGhost, $newGhost) ->
|
304
303
|
transitionPromise = transition($oldGhost, $newGhost, parsedOptions)
|
@@ -314,10 +313,21 @@ up.motion = (($) ->
|
|
314
313
|
else
|
315
314
|
u.error("Unknown transition %o", transitionOrName)
|
316
315
|
else
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
316
|
+
skipMorph($old, $new, parsedOptions)
|
317
|
+
|
318
|
+
###*
|
319
|
+
Cause the side effects of a successful transitions, but instantly.
|
320
|
+
We use this to skip morphing for old browsers, or when the developer
|
321
|
+
decides to only animate the new element (i.e. no real ghosting or transition) .
|
322
|
+
|
323
|
+
@private
|
324
|
+
###
|
325
|
+
skipMorph = ($old, $new, options) ->
|
326
|
+
# Simply hide the old element, which would be the side effect of withGhosts(...) below.
|
327
|
+
$old.hide()
|
328
|
+
# Since we cannot rely on withGhosts to control the scroll position
|
329
|
+
# in this branch, we need to do it ourselves.
|
330
|
+
up.layout.revealOrRestoreScroll($new, options)
|
321
331
|
|
322
332
|
###*
|
323
333
|
@private
|
@@ -19,6 +19,7 @@ up.navigation = (($) ->
|
|
19
19
|
Sets default options for this module.
|
20
20
|
|
21
21
|
@method up.navigation.config
|
22
|
+
@property
|
22
23
|
@param {Number} [config.currentClasses]
|
23
24
|
An array of classes to set on [links that point the current location](#up-current).
|
24
25
|
###
|
@@ -80,6 +81,7 @@ up.navigation = (($) ->
|
|
80
81
|
matchesAny: matchesAny
|
81
82
|
|
82
83
|
locationChanged = ->
|
84
|
+
|
83
85
|
currentUrls = urlSet([
|
84
86
|
normalizeUrl(up.browser.url()),
|
85
87
|
normalizeUrl(up.modal.source()),
|
@@ -199,7 +201,7 @@ up.navigation = (($) ->
|
|
199
201
|
# location bar).
|
200
202
|
locationChanged()
|
201
203
|
|
202
|
-
up.on 'up:fragment:
|
204
|
+
up.on 'up:fragment:destroyed', (event, $fragment) ->
|
203
205
|
# If the destroyed fragment is a modal or popup container
|
204
206
|
# this changes which URLs we consider currents.
|
205
207
|
# Also modals and popups restore their previous history
|
@@ -29,9 +29,10 @@ up.popup = (($) ->
|
|
29
29
|
|
30
30
|
###*
|
31
31
|
@method up.popup.config
|
32
|
-
@
|
33
|
-
@param {String} config.
|
34
|
-
@param {String} config.
|
32
|
+
@property
|
33
|
+
@param {String} [config.openAnimation]
|
34
|
+
@param {String} [config.closeAnimation]
|
35
|
+
@param {String} [config.position]
|
35
36
|
###
|
36
37
|
config = u.config
|
37
38
|
openAnimation: 'fade-in'
|
@@ -110,7 +110,7 @@ up.tooltip = (($) ->
|
|
110
110
|
up.compiler('[up-tooltip], [up-tooltip-html]', ($link) ->
|
111
111
|
# Don't register these events on document since *every*
|
112
112
|
# mouse move interaction bubbles up to the document.
|
113
|
-
$link.on('mouseover', ->
|
113
|
+
$link.on('mouseover', -> attach($link))
|
114
114
|
$link.on('mouseout', -> close())
|
115
115
|
)
|
116
116
|
|
data/lib/upjs/rails/version.rb
CHANGED
@@ -64,7 +64,6 @@ describe 'up.flow', ->
|
|
64
64
|
@respond()
|
65
65
|
@request.then ->
|
66
66
|
expect($('.before')).toHaveText('old-before')
|
67
|
-
console.log("foooo", $('.middle').text())
|
68
67
|
expect($('.middle')).toHaveText('new-middleold-middle')
|
69
68
|
expect($('.after')).toHaveText('old-after')
|
70
69
|
done()
|
@@ -114,13 +113,43 @@ describe 'up.flow', ->
|
|
114
113
|
expect(window.scriptTagExecuted).toHaveBeenCalledWith('middle')
|
115
114
|
done()
|
116
115
|
|
117
|
-
|
116
|
+
describe 'with { restoreScroll: true } option', ->
|
117
|
+
|
118
|
+
it 'restores the scroll positions of all viewports around the target', ->
|
119
|
+
|
120
|
+
$viewport = affix('div[up-viewport] .element').css
|
121
|
+
'height': '100px'
|
122
|
+
'width': '100px'
|
123
|
+
'overflow-y': 'scroll'
|
124
|
+
|
125
|
+
respond = =>
|
126
|
+
@lastRequest().respondWith
|
127
|
+
status: 200
|
128
|
+
contentType: 'text/html'
|
129
|
+
responseText: '<div class="element" style="height: 300px"></div>'
|
130
|
+
|
131
|
+
up.replace('.element', '/foo')
|
132
|
+
respond()
|
133
|
+
|
134
|
+
$viewport.scrollTop(65)
|
135
|
+
|
136
|
+
up.replace('.element', '/bar')
|
137
|
+
respond()
|
138
|
+
|
139
|
+
$viewport.scrollTop(0)
|
140
|
+
|
141
|
+
up.replace('.element', '/foo', restoreScroll: true)
|
142
|
+
# No need to respond because /foo has been cached before
|
143
|
+
|
144
|
+
expect($viewport.scrollTop()).toEqual(65)
|
145
|
+
|
118
146
|
|
119
147
|
describe 'with { reveal: true } option', ->
|
120
148
|
|
121
149
|
beforeEach ->
|
122
150
|
@revealedHTML = ''
|
123
|
-
|
151
|
+
|
152
|
+
@revealMock = up.layout.knife.mock('reveal').and.callFake ($revealedElement) =>
|
124
153
|
@revealedHTML = $revealedElement.get(0).outerHTML
|
125
154
|
u.resolvedDeferred()
|
126
155
|
|
@@ -128,7 +157,7 @@ describe 'up.flow', ->
|
|
128
157
|
@request = up.replace('.middle', '/path', reveal: true)
|
129
158
|
@respond()
|
130
159
|
@request.then =>
|
131
|
-
expect(
|
160
|
+
expect(@revealMock).not.toHaveBeenCalledWith(@oldMiddle)
|
132
161
|
expect(@revealedHTML).toContain('new-middle')
|
133
162
|
done()
|
134
163
|
|
@@ -136,7 +165,7 @@ describe 'up.flow', ->
|
|
136
165
|
@request = up.replace('.middle:after', '/path', reveal: true)
|
137
166
|
@respond()
|
138
167
|
@request.then =>
|
139
|
-
expect(
|
168
|
+
expect(@revealMock).not.toHaveBeenCalledWith(@oldMiddle)
|
140
169
|
# Text nodes are wrapped in a .up-insertion container so we can
|
141
170
|
# animate them and measure their position/size for scrolling.
|
142
171
|
# This is not possible for container-less text nodes.
|
@@ -149,7 +178,7 @@ describe 'up.flow', ->
|
|
149
178
|
@request = up.replace('.middle:before', '/path', reveal: true)
|
150
179
|
@respond()
|
151
180
|
@request.then =>
|
152
|
-
expect(
|
181
|
+
expect(@revealMock).not.toHaveBeenCalledWith(@oldMiddle)
|
153
182
|
# Text nodes are wrapped in a .up-insertion container so we can
|
154
183
|
# animate them and measure their position/size for scrolling.
|
155
184
|
# This is not possible for container-less text nodes.
|
@@ -94,6 +94,47 @@ describe 'up.link', ->
|
|
94
94
|
|
95
95
|
done()
|
96
96
|
|
97
|
+
describe 'with { restoreScroll: true } option', ->
|
98
|
+
|
99
|
+
it 'does not reveal, but instead restores the scroll positions of all viewports around the target', ->
|
100
|
+
|
101
|
+
$viewport = affix('div[up-viewport] .element').css
|
102
|
+
'height': '100px'
|
103
|
+
'width': '100px'
|
104
|
+
'overflow-y': 'scroll'
|
105
|
+
|
106
|
+
followLink = (options = {}) ->
|
107
|
+
$link = $viewport.find('.link')
|
108
|
+
up.follow($link, options)
|
109
|
+
|
110
|
+
respond = (linkDestination) =>
|
111
|
+
@lastRequest().respondWith
|
112
|
+
status: 200
|
113
|
+
contentType: 'text/html'
|
114
|
+
responseText: """
|
115
|
+
<div class="element" style="height: 300px">
|
116
|
+
<a class="link" href="#{linkDestination}" up-target=".element">Link</a>
|
117
|
+
</div>
|
118
|
+
"""
|
119
|
+
|
120
|
+
up.replace('.element', '/foo')
|
121
|
+
# Provide the content at /foo with a link to /bar in the HTML
|
122
|
+
respond('/bar')
|
123
|
+
|
124
|
+
$viewport.scrollTop(65)
|
125
|
+
|
126
|
+
# Follow the link to /bar
|
127
|
+
followLink()
|
128
|
+
|
129
|
+
# Provide the content at /bar with a link back to /foo in the HTML
|
130
|
+
respond('/foo')
|
131
|
+
|
132
|
+
# Follow the link back to /foo, restoring the scroll position of 65px
|
133
|
+
followLink(restoreScroll: true)
|
134
|
+
# No need to respond because /foo has been cached before
|
135
|
+
|
136
|
+
expect($viewport.scrollTop()).toEqual(65)
|
137
|
+
|
97
138
|
else
|
98
139
|
|
99
140
|
it 'follows the given link', ->
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: upjs-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henning Koch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|