// 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);