UNPKG

@cmchu/screen-full

Version:

This module provides a straightforward set of APIs to control the browser's fullscreen functionality and listen for changes and errors in the fullscreen state. By encapsulating the native fullscreen APIs, it enables developers to uniformly handle fullscre

130 lines (129 loc) 2.58 kB
const i = [ [ "requestFullscreen", "exitFullscreen", "fullscreenElement", "fullscreenEnabled", "fullscreenchange", "fullscreenerror" ], // New WebKit [ "webkitRequestFullscreen", "webkitExitFullscreen", "webkitFullscreenElement", "webkitFullscreenEnabled", "webkitfullscreenchange", "webkitfullscreenerror" ], // Old WebKit [ "webkitRequestFullScreen", "webkitCancelFullScreen", "webkitCurrentFullScreenElement", "webkitCancelFullScreen", "webkitfullscreenchange", "webkitfullscreenerror" ], [ "mozRequestFullScreen", "mozCancelFullScreen", "mozFullScreenElement", "mozFullScreenEnabled", "mozfullscreenchange", "mozfullscreenerror" ], [ "msRequestFullscreen", "msExitFullscreen", "msFullscreenElement", "msFullscreenEnabled", "MSFullscreenChange", "MSFullscreenError" ] ], r = (() => { const e = i[0], l = {}; for (const n of i) if ((n == null ? void 0 : n[1]) in document) { for (const [m, d] of n.entries()) l[e[m]] = d; return l; } })(), b = "fullscreenchange", h = "fullscreenerror", k = 27, S = 122; function u(e, l, n = !1) { document.addEventListener(e, l, n); } function F() { return !!document[r.fullscreenEnabled]; } function s() { return !!document[r.fullscreenElement]; } function a() { return document[r.fullscreenElement]; } function c(e, l) { const n = e || document.documentElement; try { return n[r.requestFullscreen](l); } catch (o) { console.error("请求全屏失败", o); } } function t() { try { return document[r.exitFullscreen](); } catch (e) { console.error("退出全屏失败", e); } } function E(e) { return u(b, e); } function f(e) { return u(h, e); } const g = { request: c, // 全屏 requestFullscreen: c, // 全屏 exit: t, // 退出全屏 exitFullscreen: t, // 退出全屏 onChange: E, // 监听全屏切换 fullscreenchange: E, // 监听全屏切换 fullscreenEnabled: F, // 是否支持全屏 isFullscreen: s, // 当前是否全屏 fullscreenElement: a, // 全屏元素 onError: f, // 监听全屏错误 fullscreenerror: f // 监听全屏错误 }; Object.defineProperties(g, { isEnabled: { enumerable: !0, get: F }, isFull: { get: s }, fullElement: { enumerable: !0, get: a } }); function w(e) { e.keyCode === S && (e.stopPropagation(), e.preventDefault(), s() ? t() : c()), e.keyCode === k && t(); } u("keydown", w); export { g as default };