-
Notifications
You must be signed in to change notification settings - Fork 199
/
scroll-then.js
27 lines (21 loc) · 983 Bytes
/
scroll-then.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import Ember from 'ember';
export default function(nextTransitionName, options, ...rest) {
Ember.assert(
"You must provide a transition name as the first argument to scrollThen. Example: this.use('scrollThen', 'toLeft')",
'string' === typeof nextTransitionName
);
var el = document.getElementsByTagName('html');
var nextTransition = this.lookup(nextTransitionName);
if (!options) { options = {}; }
Ember.assert(
"The second argument to scrollThen is passed to Velocity's scroll function and must be an object",
'object' === typeof options
);
// set scroll options via: this.use('scrollThen', 'ToLeft', {easing: 'spring'})
options = Ember.merge({duration: 500, offset: 0}, options);
// additional args can be passed through after the scroll options object
// like so: this.use('scrollThen', 'moveOver', {duration: 100}, 'x', -1);
return window.$.Velocity(el, 'scroll', options).then(() => {
nextTransition.apply(this, rest);
});
}