(function(){"use strict";function e(n){return{restrict:"A",require:"?^^inViewContainer",link:function(t,i,e,o){var c={},a;e.inViewOptions&&(c=t.$eval(e.inViewOptions));c.offset&&(c.offset=r(c.offset));c.viewportOffset&&(c.viewportOffset=r(c.viewportOffset));a=l({type:"initial"}).merge(f(window,"checkInView click ready wheel mousewheel DomMouseScroll MozMousePixelScroll resize scroll touchmove mouseup keydown"));o&&(a=a.merge(o.eventsSignal));c.throttle&&(a=a.throttle(c.throttle));var v=a.map(function(n){var t;t=o?o.getViewportRect():s();t=u(t,c.viewportOffset);var f=u(i[0].getBoundingClientRect(),c.offset),e=!!(i[0].offsetWidth||i[0].offsetHeight||i[0].getClientRects().length),r={inView:e&&h(f,t),event:n,element:i,elementRect:f,viewportRect:t};return c.generateParts&&r.inView&&(r.parts={},r.parts.top=f.top>=t.top,r.parts.left=f.left>=t.left,r.parts.bottom=f.bottom<=t.bottom,r.parts.right=f.right<=t.right),r}).scan({},function(n,t){return c.generateDirection&&t.inView&&n.elementRect&&(t.direction={horizontal:t.elementRect.left-n.elementRect.left,vertical:t.elementRect.top-n.elementRect.top}),t.changed=t.inView!==n.inView||!angular.equals(t.parts,n.parts)||!angular.equals(t.direction,n.direction),t}).filter(function(n){return n.changed?n.event.type==="initial"&&!n.inView?!1:!0:!1}),y=n(e.inView),p=v.subscribe(function(n){t.$applyAsync(function(){y(t,{$inview:n.inView,$inviewInfo:n})})});t.$on("$destroy",p)}}}function o(){return{restrict:"A",controller:["$element",function(n){this.element=n;this.eventsSignal=f(n,"scroll");this.getViewportRect=function(){return n[0].getBoundingClientRect()}}]}}function s(){var n={top:0,left:0,width:window.innerWidth,right:window.innerWidth,height:window.innerHeight,bottom:window.innerHeight},t;return n.height?n:(t=document.compatMode,t==="CSS1Compat"?(n.width=n.right=document.documentElement.clientWidth,n.height=n.bottom=document.documentElement.clientHeight):(n.width=n.right=document.body.clientWidth,n.height=n.bottom=document.body.clientHeight),n)}function h(n,t){return!(t.left>n.right||t.right<n.left||t.top>n.bottom||t.bottom<n.top)}function r(n){return angular.isArray(n)?n.length==2?n.concat(n):n.length==3?n.concat([n[1]]):n:[n,n,n,n]}function u(n,i){if(!i)return n;var r={top:t(i[0])?parseFloat(i[0])*n.height/100:i[0],right:t(i[1])?parseFloat(i[1])*n.width/100:i[1],bottom:t(i[2])?parseFloat(i[2])*n.height/100:i[2],left:t(i[3])?parseFloat(i[3])*n.width/100:i[3]};return{top:n.top-r.top,left:n.left-r.left,bottom:n.bottom+r.bottom,right:n.right+r.right,height:n.height+r.top+r.bottom,width:n.width+r.left+r.right}}function t(n){return angular.isString(n)&&n.indexOf("%")>0}function n(n){this.didSubscribeFunc=n}function c(){var t=arguments;return new n(function(n){for(var i=[],r=t.length-1;r>=0;r--)i.push(t[r].subscribe(function(){n.apply(null,arguments)}));n.$dispose=function(){for(var n=i.length-1;n>=0;n--)i[n]&&i[n]()}})}function f(t,i){return new n(function(n){var r=function(t){n(t)},u=angular.element(t);i.split(" ").map(function(n){u[0].addEventListener(n,r,!0)});n.$dispose=function(){i.split(" ").map(function(n){u[0].removeEventListener(n,r,!0)})}})}function l(t){return new n(function(n){setTimeout(function(){n(t)})})}var i="angular-inview";angular.module(i,[]).directive("inView",["$parse",e]).directive("inViewContainer",o);n.prototype.subscribe=function(n){this.didSubscribeFunc(n);return function(){n.$dispose&&(n.$dispose(),n.$dispose=null)}};n.prototype.map=function(t){var i=this;return new n(function(n){n.$dispose=i.subscribe(function(i){n(t(i))})})};n.prototype.filter=function(t){var i=this;return new n(function(n){n.$dispose=i.subscribe(function(i){t(i)&&n(i)})})};n.prototype.scan=function(t,i){var r=this;return new n(function(n){var u=t;n.$dispose=r.subscribe(function(t){u=i(u,t);n(u)})})};n.prototype.merge=function(n){return c(this,n)};n.prototype.throttle=function(t){var u=this,i,r;return new n(function(n){var f=u.subscribe(function(){var u=+new Date,f=arguments;i&&u<i+t?(clearTimeout(r),r=setTimeout(function(){i=u;n.apply(null,f)},t)):(i=u,n.apply(null,f))});n.$dispose=function(){clearTimeout(r);f&&f()}})};typeof define=="function"&&define.amd?define(["angular"],i):typeof module!="undefined"&&module&&module.exports&&(module.exports=i)})()