Download node_modules/visibilityjs/lib/visibility.core.js from Leon4gr45/matomo: direct link, hf CLI and curl.
- Browser
- Download file 6.51 kB
-
https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/node_modules/visibilityjs/lib/visibility.core.js
- Command line
-
hf download hf://spaces/Leon4gr45/matomo/node_modules/visibilityjs/lib/visibility.core.js
-
curl -L -o visibility.core.js https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/node_modules/visibilityjs/lib/visibility.core.js
6.51 kB
| ;(function (global) { | |
| var lastId = -1; | |
| // Visibility.js allow you to know, that your web page is in the background | |
| // tab and thus not visible to the user. This library is wrap under | |
| // Page Visibility API. It fix problems with different vendor prefixes and | |
| // add high-level useful functions. | |
| var self = { | |
| // Call callback only when page become to visible for user or | |
| // call it now if page is visible now or Page Visibility API | |
| // doesn’t supported. | |
| // | |
| // Return false if API isn’t supported, true if page is already visible | |
| // or listener ID (you can use it in `unbind` method) if page isn’t | |
| // visible now. | |
| // | |
| // Visibility.onVisible(function () { | |
| // startIntroAnimation(); | |
| // }); | |
| onVisible: function (callback) { | |
| var support = self.isSupported(); | |
| if ( !support || !self.hidden() ) { | |
| callback(); | |
| return support; | |
| } | |
| var listener = self.change(function (e, state) { | |
| if ( !self.hidden() ) { | |
| self.unbind(listener); | |
| callback(); | |
| } | |
| }); | |
| return listener; | |
| }, | |
| // Call callback when visibility will be changed. First argument for | |
| // callback will be original event object, second will be visibility | |
| // state name. | |
| // | |
| // Return listener ID to unbind listener by `unbind` method. | |
| // | |
| // If Page Visibility API doesn’t supported method will be return false | |
| // and callback never will be called. | |
| // | |
| // Visibility.change(function(e, state) { | |
| // Statistics.visibilityChange(state); | |
| // }); | |
| // | |
| // It is just proxy to `visibilitychange` event, but use vendor prefix. | |
| change: function (callback) { | |
| if ( !self.isSupported() ) { | |
| return false; | |
| } | |
| lastId += 1; | |
| var number = lastId; | |
| self._callbacks[number] = callback; | |
| self._listen(); | |
| return number; | |
| }, | |
| // Remove `change` listener by it ID. | |
| // | |
| // var id = Visibility.change(function(e, state) { | |
| // firstChangeCallback(); | |
| // Visibility.unbind(id); | |
| // }); | |
| unbind: function (id) { | |
| delete self._callbacks[id]; | |
| }, | |
| // Call `callback` in any state, expect “prerender”. If current state | |
| // is “prerender” it will wait until state will be changed. | |
| // If Page Visibility API doesn’t supported, it will call `callback` | |
| // immediately. | |
| // | |
| // Return false if API isn’t supported, true if page is already after | |
| // prerendering or listener ID (you can use it in `unbind` method) | |
| // if page is prerended now. | |
| // | |
| // Visibility.afterPrerendering(function () { | |
| // Statistics.countVisitor(); | |
| // }); | |
| afterPrerendering: function (callback) { | |
| var support = self.isSupported(); | |
| var prerender = 'prerender'; | |
| if ( !support || prerender != self.state() ) { | |
| callback(); | |
| return support; | |
| } | |
| var listener = self.change(function (e, state) { | |
| if ( prerender != state ) { | |
| self.unbind(listener); | |
| callback(); | |
| } | |
| }); | |
| return listener; | |
| }, | |
| // Return true if page now isn’t visible to user. | |
| // | |
| // if ( !Visibility.hidden() ) { | |
| // VideoPlayer.play(); | |
| // } | |
| // | |
| // It is just proxy to `document.hidden`, but use vendor prefix. | |
| hidden: function () { | |
| return !!(self._doc.hidden || self._doc.webkitHidden); | |
| }, | |
| // Return visibility state: 'visible', 'hidden' or 'prerender'. | |
| // | |
| // if ( 'prerender' == Visibility.state() ) { | |
| // Statistics.pageIsPrerendering(); | |
| // } | |
| // | |
| // Don’t use `Visibility.state()` to detect, is page visible, because | |
| // visibility states can extend in next API versions. | |
| // Use more simpler and general `Visibility.hidden()` for this cases. | |
| // | |
| // It is just proxy to `document.visibilityState`, but use | |
| // vendor prefix. | |
| state: function () { | |
| return self._doc.visibilityState || | |
| self._doc.webkitVisibilityState || | |
| 'visible'; | |
| }, | |
| // Return true if browser support Page Visibility API. | |
| // refs: https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API | |
| // | |
| // if ( Visibility.isSupported() ) { | |
| // Statistics.startTrackingVisibility(); | |
| // Visibility.change(function(e, state)) { | |
| // Statistics.trackVisibility(state); | |
| // }); | |
| // } | |
| isSupported: function () { | |
| return self._doc.hidden !== undefined || self._doc.webkitHidden !== undefined; | |
| }, | |
| // Link to document object to change it in tests. | |
| _doc: document || {}, | |
| // Callbacks from `change` method, that wait visibility changes. | |
| _callbacks: { }, | |
| // Listener for `visibilitychange` event. | |
| _change: function(event) { | |
| var state = self.state(); | |
| for ( var i in self._callbacks ) { | |
| self._callbacks[i].call(self._doc, event, state); | |
| } | |
| }, | |
| // Set listener for `visibilitychange` event. | |
| _listen: function () { | |
| if ( self._init ) { | |
| return; | |
| } | |
| var event = 'visibilitychange'; | |
| if ( self._doc.webkitVisibilityState ) { | |
| event = 'webkit' + event; | |
| } | |
| var listener = function () { | |
| self._change.apply(self, arguments); | |
| }; | |
| if ( self._doc.addEventListener ) { | |
| self._doc.addEventListener(event, listener); | |
| } else { | |
| self._doc.attachEvent(event, listener); | |
| } | |
| self._init = true; | |
| } | |
| }; | |
| if ( typeof(module) != 'undefined' && module.exports ) { | |
| module.exports = self; | |
| } else { | |
| global.Visibility = self; | |
| } | |
| })(this); | |