You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
2.7 KiB
120 lines
2.7 KiB
6 years ago
|
/*!
|
||
|
Waypoints Inview Shortcut - 4.0.1
|
||
|
Copyright © 2011-2016 Caleb Troughton
|
||
|
Licensed under the MIT license.
|
||
|
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
|
||
|
*/
|
||
|
(function() {
|
||
|
'use strict'
|
||
|
|
||
|
function noop() {}
|
||
|
|
||
|
var Waypoint = window.Waypoint
|
||
|
|
||
|
/* http://imakewebthings.com/waypoints/shortcuts/inview */
|
||
|
function Inview(options) {
|
||
|
this.options = Waypoint.Adapter.extend({}, Inview.defaults, options)
|
||
|
this.axis = this.options.horizontal ? 'horizontal' : 'vertical'
|
||
|
this.waypoints = []
|
||
|
this.element = this.options.element
|
||
|
this.createWaypoints()
|
||
|
}
|
||
|
|
||
|
/* Private */
|
||
|
Inview.prototype.createWaypoints = function() {
|
||
|
var configs = {
|
||
|
vertical: [{
|
||
|
down: 'enter',
|
||
|
up: 'exited',
|
||
|
offset: '100%'
|
||
|
}, {
|
||
|
down: 'entered',
|
||
|
up: 'exit',
|
||
|
offset: 'bottom-in-view'
|
||
|
}, {
|
||
|
down: 'exit',
|
||
|
up: 'entered',
|
||
|
offset: 0
|
||
|
}, {
|
||
|
down: 'exited',
|
||
|
up: 'enter',
|
||
|
offset: function() {
|
||
|
return -this.adapter.outerHeight()
|
||
|
}
|
||
|
}],
|
||
|
horizontal: [{
|
||
|
right: 'enter',
|
||
|
left: 'exited',
|
||
|
offset: '100%'
|
||
|
}, {
|
||
|
right: 'entered',
|
||
|
left: 'exit',
|
||
|
offset: 'right-in-view'
|
||
|
}, {
|
||
|
right: 'exit',
|
||
|
left: 'entered',
|
||
|
offset: 0
|
||
|
}, {
|
||
|
right: 'exited',
|
||
|
left: 'enter',
|
||
|
offset: function() {
|
||
|
return -this.adapter.outerWidth()
|
||
|
}
|
||
|
}]
|
||
|
}
|
||
|
|
||
|
for (var i = 0, end = configs[this.axis].length; i < end; i++) {
|
||
|
var config = configs[this.axis][i]
|
||
|
this.createWaypoint(config)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* Private */
|
||
|
Inview.prototype.createWaypoint = function(config) {
|
||
|
var self = this
|
||
|
this.waypoints.push(new Waypoint({
|
||
|
context: this.options.context,
|
||
|
element: this.options.element,
|
||
|
enabled: this.options.enabled,
|
||
|
handler: (function(config) {
|
||
|
return function(direction) {
|
||
|
self.options[config[direction]].call(self, direction)
|
||
|
}
|
||
|
}(config)),
|
||
|
offset: config.offset,
|
||
|
horizontal: this.options.horizontal
|
||
|
}))
|
||
|
}
|
||
|
|
||
|
/* Public */
|
||
|
Inview.prototype.destroy = function() {
|
||
|
for (var i = 0, end = this.waypoints.length; i < end; i++) {
|
||
|
this.waypoints[i].destroy()
|
||
|
}
|
||
|
this.waypoints = []
|
||
|
}
|
||
|
|
||
|
Inview.prototype.disable = function() {
|
||
|
for (var i = 0, end = this.waypoints.length; i < end; i++) {
|
||
|
this.waypoints[i].disable()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Inview.prototype.enable = function() {
|
||
|
for (var i = 0, end = this.waypoints.length; i < end; i++) {
|
||
|
this.waypoints[i].enable()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Inview.defaults = {
|
||
|
context: window,
|
||
|
enabled: true,
|
||
|
enter: noop,
|
||
|
entered: noop,
|
||
|
exit: noop,
|
||
|
exited: noop
|
||
|
}
|
||
|
|
||
|
Waypoint.Inview = Inview
|
||
|
}())
|
||
|
;
|