UNPKG

angular-visibility-change

Version:
7 lines 1.31 kB
/** * Detect window visibility changes in Angular. * @version v0.1.0 - 2015-02-05 * @link https://github.com/stephenkubovic/angular-visibility-change * @author Stephen Kubovic <stephen@skbvc.com> * @license MIT License, http://www.opensource.org/licenses/MIT */!function(){"use strict";var a=angular.module("visibilityChange",[]);a.service("VisibilityChange",["$document","$rootScope","$timeout",function(a,b,c){var d,e="pageBecameVisible",f="pageBecameHidden",g=!1,h="hidden",i=[],j=[],k=[],l=a[0];if(this.configure=function(a){if("object"!=typeof a)throw new Error(a+" is not a valid configuration object");a.broadcast===!0?g=!0:"object"==typeof a.broadcast&&(g=!0,e=a.broadcast.visible||e,f=a.broadcast.hidden||f)},this.onChange=function(a){i.push(a)},this.onVisible=function(a){j.push(a)},this.onHidden=function(a){k.push(a)},h in l)d="visibilitychange";else if((h="webkitHidden")in l)d="webkitvisibilitychange";else if((h="mozHidden")in l)d="mozvisibilitychange";else{if(!((h="msHidden")in l))return;d="msvisibilitychange"}var m=function(){c(function(){a[0][h]?o():p()},100)},n=function(){for(var a=Array.prototype.slice.call(arguments),b=a.shift(),c=0;c<b.length;c++)b[c].apply(null,a)},o=function(){g&&b.$broadcast(f),n(i,!1),n(k)},p=function(){g&&b.$broadcast(e),n(i,!0),n(j)};a.on(d,m)}])}();