-
Notifications
You must be signed in to change notification settings - Fork 0
/
vue-scroll-reveal.js
75 lines (59 loc) · 1.93 KB
/
vue-scroll-reveal.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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var sr = require('scrollreveal').default();
function generateOptions(defaultOptions, bindingValue, bindingModifiers) {
var options = _extends({}, defaultOptions, bindingValue);
if (bindingModifiers) {
if (bindingModifiers.reset) {
options.reset = true;
}
if (bindingModifiers.nomobile) {
options.mobile = false;
}
if (bindingModifiers.nodesktop) {
options.desktop = false;
}
}
return options;
}
var VueScrollReveal = {
install: function install(Vue, defaultOptions) {
Vue.directive('scroll-reveal', {
inserted: function inserted(el, binding) {
var options = generateOptions(defaultOptions, binding.value, binding.modifiers);
if (typeof options.class === 'string') {
el.classList.add(options.class);
delete options.class;
}
sr.reveal(el, options);
},
update: function update(el, binding) {
if (binding.value != binding.oldValue) {
var options = generateOptions(defaultOptions, binding.value, binding.modifiers);
sr.reveal(el, options);
}
}
});
var $sr = {
isSupported: function isSupported() {
return sr.isSupported();
},
sync: function sync() {
sr.sync();
},
reveal: function reveal(target, config, interval, sync) {
var options = generateOptions(defaultOptions, config);
sr.reveal(target, config, interval, sync);
}
};
Object.defineProperty(Vue.prototype, '$sr', {
get: function get() {
return $sr;
}
});
}
};
exports.default = VueScrollReveal;