/*! scrollwatch v1.2.0 | (c) Wed Dec 07 2016 15:19:41 GMT-0500 (EST) Evan Dull | License: MIT | https://github.com/edull24/ScrollWatch.git*/ !function(t,i){"function"==typeof define&&define.amd?define([],i):"object"==typeof exports?module.exports=i():t.ScrollWatch=i()}(this,function(){"use strict";var t=0,i={},n={container:window.document.documentElement,watch:"[data-scroll-watch]",watchOnce:!0,inViewClass:"scroll-watch-in-view",ignoreClass:"scroll-watch-ignore",debounce:!1,debounceTriggerLeading:!1,scrollDebounce:250,resizeDebounce:250,scrollThrottle:250,resizeThrottle:250,watchOffset:0,infiniteScroll:!1,infiniteOffset:0,onElementInView:function(){},onElementOutOfView:function(){},onInfiniteXInView:function(){},onInfiniteYInView:function(){}},e="scrollwatchinit",l=function(t){var i,n,e,l=arguments.length;for(t=t||{},i=1;l>i;i++)if(e=arguments[i])for(n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},s=function(t,i,n){var e,l;return i=i||250,function(){var s=n||this,r=+new Date,o=arguments;e&&e+i>r?(window.clearTimeout(l),l=setTimeout(function(){e=r,t.apply(s,o)},i)):(e=r,t.apply(s,o))}},r=function(t,i,n){var e,l,s,r,o,c=function(){var a=(new Date).getTime()-r;i>a&&a>=0?e=setTimeout(c,i-a):(e=null,n||(o=t.apply(s,l),e||(s=l=null)))};return function(){var a=n&&!e;return s=this,l=arguments,r=(new Date).getTime(),e||(e=setTimeout(c,i)),a&&(o=t.apply(s,l),s=l=null),o}},o=function(){S.call(this)||(i[this._id].config.container=document.querySelector(i[this._id].config.container))},c=function(){i[this._id].elements=Array.prototype.slice.call(document.querySelectorAll(i[this._id].config.watch+":not(."+i[this._id].config.ignoreClass+")"))},a=function(){i[this._id].lastScrollPosition=p.call(this)},f=function(t){h.call(this,t),d.call(this,t),t!==e&&a.call(this)},h=function(t){var n,e,l=i[this._id],s=l.elements.length,r=l.config,o=r.inViewClass,c={eventType:t};for(e=0;s>e;e++)n=l.elements[e],c.el=n,"scroll"===t&&(c.direction=_.call(this,x.call(this))),z.call(this,n)?n.classList.contains(o)||(n.classList.add(o),r.onElementInView.call(this,c),r.watchOnce&&(l.elements.splice(e,1),s--,e--,n.classList.add(r.ignoreClass))):n.classList.contains(o)&&(n.classList.remove(o),r.onElementOutOfView.call(this,c))},d=function(t){var n,l,s,r,o,c,a,f=i[this._id],h=f.config;if(h.infiniteScroll&&!f.isInfiniteScrollPaused)for(l=["x","y"],c=["onInfiniteXInView","onInfiniteYInView"],s=h.container,r=m.call(this),o=[s.scrollWidth,s.scrollHeight],a={},n=0;2>n;n++)("scroll"===t&&b.call(this,l[n])||"resize"===t||"refresh"===t||t===e)&&r[l[n]].end+h.infiniteOffset>=o[n]&&(a.eventType=t,"scroll"===t&&(a.direction=_.call(this,l[n])),h[c[n]].call(this,a))},u=function(){var t=i[this._id],n=y.call(this);n.addEventListener("scroll",t.scrollHandler,!1),n.addEventListener("resize",t.resizeHandler,!1)},g=function(){var t=i[this._id],n=y.call(this);n.removeEventListener("scroll",t.scrollHandler),n.removeEventListener("resize",t.resizeHandler)},y=function(){return S.call(this)?window:i[this._id].config.container},w=function(){var t={w:i[this._id].config.container.clientWidth,h:i[this._id].config.container.clientHeight};return t},p=function(){var t,n={};return S.call(this)?(n.left=window.pageXOffset,n.top=window.pageYOffset):(t=i[this._id].config.container,n.left=t.scrollLeft,n.top=t.scrollTop),n},m=function(){var t={x:{},y:{}},i=p.call(this),n=w.call(this);return t.x.start=i.left,t.x.end=t.x.start+n.w,t.x.size=t.x.end-t.x.start,t.y.start=i.top,t.y.end=t.y.start+n.h,t.y.size=t.y.end-t.y.start,t},v=function(t){var n,e={x:{},y:{}},l=m.call(this),s=t.getBoundingClientRect();return S.call(this)?(e.x.start=s.left+l.x.start,e.x.end=s.right+l.x.start,e.y.start=s.top+l.y.start,e.y.end=s.bottom+l.y.start):(n=i[this._id].config.container.getBoundingClientRect(),e.x.start=s.left-n.left+l.x.start,e.x.end=e.x.start+s.width,e.y.start=s.top-n.top+l.y.start,e.y.end=e.y.start+s.height),e.x.size=e.x.end-e.x.start,e.y.size=e.y.end-e.y.start,e},x=function(){return b.call(this,"x")?"x":b.call(this,"y")?"y":void 0},_=function(t){var n={x:["right","left"],y:["down","up"]},e={x:"left",y:"top"},l=i[this._id].lastScrollPosition,s=p.call(this);return s[e[t]]>l[e[t]]?n[t][0]:n[t][1]},b=function(t){var n={x:"left",y:"top"},e=i[this._id].lastScrollPosition,l=p.call(this);return l[n[t]]!==e[n[t]]},z=function(t){var n=m.call(this),e=v.call(this,t),l=i[this._id].config.watchOffset;return I(e,n,l)&&T(e,n,l)},I=function(t,i,n){return t.y.starti.y.start-n},T=function(t,i,n){return t.x.starti.x.start-n},S=function(){return i[this._id].config.container===window.document.documentElement},O=function(t){l(i[this._id].config,n,t)},L=function(t){var i=t.type;("resize"===i||b.call(this,"x")||b.call(this,"y"))&&f.call(this,i)},E=function(n){if(!(this instanceof E))return new E(n);var l;Object.defineProperty(this,"_id",{value:t++}),l=i[this._id]={config:{},elements:[],lastScrollPosition:{top:0,left:0},isInfiniteScrollPaused:!1},O.call(this,n),l.config.debounce?(l.scrollHandler=r(L.bind(this),l.config.scrollDebounce,l.config.debounceTriggerLeading),l.resizeHandler=r(L.bind(this),l.config.resizeDebounce,l.config.debounceTriggerLeading)):(l.scrollHandler=s(L.bind(this),l.config.scrollThrottle,this),l.resizeHandler=s(L.bind(this),l.config.resizeThrottle,this)),o.call(this),u.call(this),c.call(this),f.call(this,e)};return E.prototype={refresh:function(){c.call(this),f.call(this,"refresh")},destroy:function(){g.call(this),delete i[this._id]},pauseInfiniteScroll:function(){i[this._id].isInfiniteScrollPaused=!0},resumeInfiniteScroll:function(){i[this._id].isInfiniteScrollPaused=!1}},E}); //# sourceMappingURL=ScrollWatch-1.2.0.min.js.map