vuux
Version:
Vue3 Nuxt3 Nuxt4 组件库
28 lines (27 loc) • 1.08 kB
JavaScript
import { toRefs as i, ref as v, watch as h, onMounted as f, onUnmounted as F } from "vue";
import { launchImmersiveFullScreen as w, exitImmersiveFullScreen as y, launchNormalFullscreen as E, exitNormalFullscreen as x } from "../utils.mjs";
const k = (a, n, t) => {
const { modelValue: u, mode: c } = i(a), l = v(!1), m = (e) => {
n.value && (e ? E(n.value, a) : x(n.value));
}, d = async (e) => {
n.value && (e ? await w(n.value) : l.value || await y(document));
}, o = async (e) => {
c.value === "immersive" ? await d(e) : m(e);
}, r = () => {
document.fullscreenElement ? l.value = !1 : (t("update:modelValue", !1), l.value = !0);
}, s = (e) => {
e.key === "Escape" && u.value && t("update:modelValue", !1);
};
return h(u, (e) => {
o(e);
}), f(() => {
document.addEventListener("keydown", s), document.addEventListener("fullscreenchange", r);
}), F(() => {
document.removeEventListener("keydown", s), document.removeEventListener("fullscreenchange", r);
}), {
handleFullscreen: o
};
};
export {
k as useFullscreen
};