site-accueil-insa/matomo/node_modules/visibilityjs/lib/visibility.timers.js

161 rinda
5,1 KiB
JavaScript
Neapstrādāts Vainot Vēsture

Šis fails satur neviennozīmīgus unikoda simbolus

Šis fails satur unikoda simbolus, kas var tikt sajauktas ar citām rakstzīmēm. Ja šķiet, ka tas ir ar nolūku, šo brīdinājumu var droši neņemt vērā. Jāizmanto atsoļa taustiņš (Esc), lai atklātu tās.

;(function (window) {
var lastTimer = -1;
var install = function (Visibility) {
// Run callback every `interval` milliseconds if page is visible and
// every `hiddenInterval` milliseconds if page is hidden.
//
// Visibility.every(60 * 1000, 5 * 60 * 1000, function () {
// checkNewMails();
// });
//
// You can skip `hiddenInterval` and callback will be called only if
// page is visible.
//
// Visibility.every(1000, function () {
// updateCountdown();
// });
//
// It is analog of `setInterval(callback, interval)` but use visibility
// state.
//
// It return timer ID, that you can use in `Visibility.stop(id)` to stop
// timer (`clearInterval` analog).
// Warning: timer ID is different from interval ID from `setInterval`,
// so dont use it in `clearInterval`.
//
// On change state from hidden to visible timers will be execute.
Visibility.every = function (interval, hiddenInterval, callback) {
Visibility._time();
if ( !callback ) {
callback = hiddenInterval;
hiddenInterval = null;
}
lastTimer += 1;
var number = lastTimer;
Visibility._timers[number] = {
visible: interval,
hidden: hiddenInterval,
callback: callback
};
Visibility._run(number, false);
if ( Visibility.isSupported() ) {
Visibility._listen();
}
return number;
};
// Stop timer from `every` method by it ID (`every` method return it).
//
// slideshow = Visibility.every(5 * 1000, function () {
// changeSlide();
// });
// $('.stopSlideshow').click(function () {
// Visibility.stop(slideshow);
// });
Visibility.stop = function(id) {
if ( !Visibility._timers[id] ) {
return false;
}
Visibility._stop(id);
delete Visibility._timers[id];
return true;
};
// Callbacks and intervals added by `every` method.
Visibility._timers = { };
// Initialize variables on page loading.
Visibility._time = function () {
if ( Visibility._timed ) {
return;
}
Visibility._timed = true;
Visibility._wasHidden = Visibility.hidden();
Visibility.change(function () {
Visibility._stopRun();
Visibility._wasHidden = Visibility.hidden();
});
};
// Try to run timer from every method by its ID. It will be use
// `interval` or `hiddenInterval` depending on visibility state.
// If page is hidden and `hiddenInterval` is null,
// it will not run timer.
//
// Argument `runNow` say, that timers must be execute now too.
Visibility._run = function (id, runNow) {
var interval,
timer = Visibility._timers[id];
if ( Visibility.hidden() ) {
if ( null === timer.hidden ) {
return;
}
interval = timer.hidden;
} else {
interval = timer.visible;
}
var runner = function () {
timer.last = new Date();
timer.callback.call(window);
}
if ( runNow ) {
var now = new Date();
var last = now - timer.last ;
if ( interval > last ) {
timer.delay = setTimeout(function () {
timer.id = setInterval(runner, interval);
runner();
}, interval - last);
} else {
timer.id = setInterval(runner, interval);
runner();
}
} else {
timer.id = setInterval(runner, interval);
}
};
// Stop timer from `every` method by its ID.
Visibility._stop = function (id) {
var timer = Visibility._timers[id];
clearInterval(timer.id);
clearTimeout(timer.delay);
delete timer.id;
delete timer.delay;
};
// Listener for `visibilitychange` event.
Visibility._stopRun = function (event) {
var isHidden = Visibility.hidden(),
wasHidden = Visibility._wasHidden;
if ( (isHidden && !wasHidden) || (!isHidden && wasHidden) ) {
for ( var i in Visibility._timers ) {
Visibility._stop(i);
Visibility._run(i, !isHidden);
}
}
};
return Visibility;
}
if ( typeof(module) != 'undefined' && module.exports ) {
module.exports = install(require('./visibility.core'));
} else {
install(window.Visibility || require('./visibility.core'))
}
})(window);