PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 4.13.2
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v4.13.2
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / node_modules / visibilityjs / lib / visibility.timers.js
matomo / app / node_modules / visibilityjs / lib Last commit date
visibility.core.js 3 years ago visibility.fallback.js 3 years ago visibility.js 3 years ago visibility.timers.js 3 years ago
visibility.timers.js
162 lines
1 ;(function (window) {
2 var lastTimer = -1;
3
4 var install = function (Visibility) {
5
6 // Run callback every `interval` milliseconds if page is visible and
7 // every `hiddenInterval` milliseconds if page is hidden.
8 //
9 // Visibility.every(60 * 1000, 5 * 60 * 1000, function () {
10 // checkNewMails();
11 // });
12 //
13 // You can skip `hiddenInterval` and callback will be called only if
14 // page is visible.
15 //
16 // Visibility.every(1000, function () {
17 // updateCountdown();
18 // });
19 //
20 // It is analog of `setInterval(callback, interval)` but use visibility
21 // state.
22 //
23 // It return timer ID, that you can use in `Visibility.stop(id)` to stop
24 // timer (`clearInterval` analog).
25 // Warning: timer ID is different from interval ID from `setInterval`,
26 // so don’t use it in `clearInterval`.
27 //
28 // On change state from hidden to visible timers will be execute.
29 Visibility.every = function (interval, hiddenInterval, callback) {
30 Visibility._time();
31
32 if ( !callback ) {
33 callback = hiddenInterval;
34 hiddenInterval = null;
35 }
36
37 lastTimer += 1;
38 var number = lastTimer;
39
40 Visibility._timers[number] = {
41 visible: interval,
42 hidden: hiddenInterval,
43 callback: callback
44 };
45 Visibility._run(number, false);
46
47 if ( Visibility.isSupported() ) {
48 Visibility._listen();
49 }
50 return number;
51 };
52
53 // Stop timer from `every` method by it ID (`every` method return it).
54 //
55 // slideshow = Visibility.every(5 * 1000, function () {
56 // changeSlide();
57 // });
58 // $('.stopSlideshow').click(function () {
59 // Visibility.stop(slideshow);
60 // });
61 Visibility.stop = function(id) {
62 if ( !Visibility._timers[id] ) {
63 return false;
64 }
65 Visibility._stop(id);
66 delete Visibility._timers[id];
67 return true;
68 };
69
70 // Callbacks and intervals added by `every` method.
71 Visibility._timers = { };
72
73 // Initialize variables on page loading.
74 Visibility._time = function () {
75 if ( Visibility._timed ) {
76 return;
77 }
78 Visibility._timed = true;
79 Visibility._wasHidden = Visibility.hidden();
80
81 Visibility.change(function () {
82 Visibility._stopRun();
83 Visibility._wasHidden = Visibility.hidden();
84 });
85 };
86
87 // Try to run timer from every method by it’s ID. It will be use
88 // `interval` or `hiddenInterval` depending on visibility state.
89 // If page is hidden and `hiddenInterval` is null,
90 // it will not run timer.
91 //
92 // Argument `runNow` say, that timers must be execute now too.
93 Visibility._run = function (id, runNow) {
94 var interval,
95 timer = Visibility._timers[id];
96
97 if ( Visibility.hidden() ) {
98 if ( null === timer.hidden ) {
99 return;
100 }
101 interval = timer.hidden;
102 } else {
103 interval = timer.visible;
104 }
105
106 var runner = function () {
107 timer.last = new Date();
108 timer.callback.call(window);
109 }
110
111 if ( runNow ) {
112 var now = new Date();
113 var last = now - timer.last ;
114
115 if ( interval > last ) {
116 timer.delay = setTimeout(function () {
117 timer.id = setInterval(runner, interval);
118 runner();
119 }, interval - last);
120 } else {
121 timer.id = setInterval(runner, interval);
122 runner();
123 }
124
125 } else {
126 timer.id = setInterval(runner, interval);
127 }
128 };
129
130 // Stop timer from `every` method by it’s ID.
131 Visibility._stop = function (id) {
132 var timer = Visibility._timers[id];
133 clearInterval(timer.id);
134 clearTimeout(timer.delay);
135 delete timer.id;
136 delete timer.delay;
137 };
138
139 // Listener for `visibilitychange` event.
140 Visibility._stopRun = function (event) {
141 var isHidden = Visibility.hidden(),
142 wasHidden = Visibility._wasHidden;
143
144 if ( (isHidden && !wasHidden) || (!isHidden && wasHidden) ) {
145 for ( var i in Visibility._timers ) {
146 Visibility._stop(i);
147 Visibility._run(i, !isHidden);
148 }
149 }
150 };
151
152 return Visibility;
153 }
154
155 if ( typeof(module) != 'undefined' && module.exports ) {
156 module.exports = install(require('./visibility.core'));
157 } else {
158 install(window.Visibility || require('./visibility.core'))
159 }
160
161 })(window);
162