webpack-bootstrap-ui-kit/src/js/main/visibility.js

35 lines
919 B
JavaScript
Raw Normal View History

2021-08-09 18:04:09 +02:00
// browser tab visibility state detection
2021-08-18 20:51:15 +02:00
import Events from "../_events";
import Consts from "../_consts";
2021-08-09 18:04:09 +02:00
export default ((W) => {
2021-08-18 20:51:15 +02:00
const NAME = "_main.visibility";
2021-08-09 18:04:09 +02:00
const D = document;
const BODY = D.body;
// update visibility state
// get browser window visibility preferences
// Opera 12.10, Firefox >=18, Chrome >=31, IE11
2021-08-18 20:51:15 +02:00
const HiddenName = "hidden";
const VisibilityChangeEvent = "visibilitychange";
2021-08-09 18:04:09 +02:00
D.addEventListener(VisibilityChangeEvent, () => {
if (D.visibilityState === HiddenName) {
console.log(`${NAME}: Tab: hidden`);
2021-08-18 20:51:15 +02:00
BODY.classList.add("is-hidden");
BODY.classList.remove("is-focused");
2021-08-09 18:04:09 +02:00
W.dispatchEvent(new Event(Events.TABHIDDEN));
} else {
console.log(`${NAME}: Tab: focused`);
2021-08-18 20:51:15 +02:00
BODY.classList.add("is-focused");
BODY.classList.remove("is-hidden");
2021-08-09 18:04:09 +02:00
W.dispatchEvent(new Event(Events.TABFOCUSED));
}
});
})(window);