35 lines
919 B
JavaScript
35 lines
919 B
JavaScript
// browser tab visibility state detection
|
|
|
|
import Events from '../_events';
|
|
import Consts from '../_consts';
|
|
|
|
export default ((W) => {
|
|
const NAME = '_main.visibility';
|
|
const D = document;
|
|
const BODY = D.body;
|
|
|
|
// update visibility state
|
|
// get browser window visibility preferences
|
|
// Opera 12.10, Firefox >=18, Chrome >=31, IE11
|
|
const HiddenName = 'hidden';
|
|
const VisibilityChangeEvent = 'visibilitychange';
|
|
|
|
D.addEventListener(VisibilityChangeEvent, () => {
|
|
if (D.visibilityState === HiddenName) {
|
|
console.log(`${NAME}: Tab: hidden`);
|
|
|
|
BODY.classList.add('is-hidden');
|
|
BODY.classList.remove('is-focused');
|
|
|
|
W.dispatchEvent(new Event(Events.TABHIDDEN));
|
|
} else {
|
|
console.log(`${NAME}: Tab: focused`);
|
|
|
|
BODY.classList.add('is-focused');
|
|
BODY.classList.remove('is-hidden');
|
|
|
|
W.dispatchEvent(new Event(Events.TABFOCUSED));
|
|
}
|
|
});
|
|
})(window);
|