UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

28 lines (27 loc) 1.08 kB
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 };