@morjs/runtime-web
Version:
mor runtime for web
59 lines • 1.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.offAppHide = exports.onAppHide = exports.offAppShow = exports.onAppShow = void 0;
const index_1 = require("../utils/index");
let showManager = null;
let hideManager = null;
let listened = false;
const getManager = (isShow = true) => {
if (isShow)
return showManager || (showManager = (0, index_1.createCallbackManager)());
return hideManager || (hideManager = (0, index_1.createCallbackManager)());
};
function listenPageState() {
if (listened)
return;
listened = true;
let hidden, visibilityChange;
if (typeof document.hidden !== 'undefined') {
// Opera 12.10 and Firefox 18 and later support
hidden = 'hidden';
visibilityChange = 'visibilitychange';
}
else if (typeof document.msHidden !== 'undefined') {
hidden = 'msHidden';
visibilityChange = 'msvisibilitychange';
}
else if (typeof document.webkitHidden !== 'undefined') {
hidden = 'webkitHidden';
visibilityChange = 'webkitvisibilitychange';
}
document.addEventListener(visibilityChange, (state) => {
if (document[hidden]) {
// 隐藏了
getManager(false).trigger();
}
else {
getManager().trigger();
}
});
}
function onAppShow(callback) {
getManager().add(callback);
listenPageState();
}
exports.onAppShow = onAppShow;
function offAppShow(callback) {
getManager().remove(callback);
}
exports.offAppShow = offAppShow;
function onAppHide(callback) {
getManager(false).add(callback);
listenPageState();
}
exports.onAppHide = onAppHide;
function offAppHide(callback) {
getManager(false).remove(callback);
}
exports.offAppHide = offAppHide;
//# sourceMappingURL=index.js.map