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

35 lines
902 B
JavaScript
Raw Normal View History

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